annotate src/syswindows.h @ 617:af57a77cbc92

[xemacs-hg @ 2001-06-18 07:09:50 by ben] --------------------------------------------------------------- DOCUMENTATION FIXES: --------------------------------------------------------------- eval.c: Correct documentation. elhash.c: Doc correction. --------------------------------------------------------------- LISP OBJECT CLEANUP: --------------------------------------------------------------- bytecode.h, buffer.h, casetab.h, chartab.h, console-msw.h, console.h, database.c, device.h, eldap.h, elhash.h, events.h, extents.h, faces.h, file-coding.h, frame.h, glyphs.h, gui-x.h, gui.h, keymap.h, lisp-disunion.h, lisp-union.h, lisp.h, lrecord.h, lstream.h, mule-charset.h, objects.h, opaque.h, postgresql.h, process.h, rangetab.h, specifier.h, toolbar.h, tooltalk.h, ui-gtk.h: Add wrap_* to all objects (it was already there for a few of them) -- an expression to encapsulate a pointer into a Lisp object, rather than the inconvenient XSET*. "wrap" was chosen because "make" as in make_int(), make_char() is not appropriate. (It implies allocation. The issue does not exist for ints and chars because they are not allocated.) Full error checking has been added to these expressions. When used without error checking, non-union build, use of these expressions will incur no loss of efficiency. (In fact, XSET* is now defined in terms of wrap_* in a non-union build.) In a union build, you will also get no loss of efficiency provided that you have a decent optimizing compiler, and a compiler that either understands inlines or automatically inlines those particular functions. (And since people don't normally do their production builds on union, it doesn't matter.) Update the sample Lisp object definition in lrecord.h accordingly. dumper.c: Fix places in dumper that referenced wrap_object to reference its new name, wrap_pointer_1. buffer.c, bufslots.h, conslots.h, console.c, console.h, devslots.h, device.c, device.h, frame.c, frame.h, frameslots.h, window.c, window.h, winslots.h: -- Extract out the Lisp objects of `struct device' into devslots.h, just like for the other structures. -- Extract out the remaining (not copied into the window config) Lisp objects in `struct window' into winslots.h; use different macros (WINDOW_SLOT vs. WINDOW_SAVED_SLOT) to differentiate them. -- Eliminate the `dead' flag of `struct frame', since it duplicates information already available in `framemeths', and fix FRAME_LIVE_P accordingly. (Devices and consoles already work this way.) -- In *slots.h, switch to system where MARKED_SLOT is automatically undef'd at the end of the file. (Follows what winslots.h already does.) -- Update the comments at the beginning of *slots.h to be accurate. -- When making any of the above objects dead, zero it out entirely and reset all Lisp object slots to Qnil. (We were already doing this somewhat, but not consistently.) This (1) Eliminates the possibility of extra objects hanging around that ought to be GC'd, (2) Causes an immediate crash if anyone tries to access a structure in one of these objects, (3) Ensures consistent behavior wrt dead objects. dialog-msw.c: Use internal_object_printer, since this object should not escape. --------------------------------------------------------------- FIXING A CRASH THAT I HIT ONCE (AND A RELATED BAD BEHAVIOR): --------------------------------------------------------------- eval.c: Fix up some comments about the FSF implementation. Fix two nasty bugs: (1) condition_case_unwind frees the conses sitting in the catch->tag slot too quickly, resulting in a crash that I hit. (2) catches need to be unwound one at a time when calling unwind-protect code, rather than all at once at the end; otherwise, incorrect behavior can result. (A comment shows exactly how.) backtrace.h: Improve comment about FSF differences in the handler stack. --------------------------------------------------------------- FIXING A CRASH THAT I REPEATEDLY HIT WHEN USING THE MOUSE WHEEL UNDER MSWINDOWS: --------------------------------------------------------------- Basic idea: My crash is due either to a dead, non-marked, GC-collected frame inside of a window mirror, or a prematurely freed window mirror. We need to mark the Lisp objects inside of window mirrors. Tracking the lifespan of window mirrors and scrollbar instances is extremely hard, and there may well be lurking bugs where such objects are freed too soon. The only safe way to fix these problems (and it fixes both problems at once) is to make both of these structures Lisp objects. lrecord.h, emacs.c, inline.c, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, symsinit.h: Make scrollbar instances actual Lisp objects. Mark the window mirrors in them. inline.c needs to know about scrollbar.h now. Record the new type in lrecord.h. Fix up scrollbar-*.c appropriately. Create a hash table in scrollbar-msw.c so that the scrollbar instances stored in scrollbar HWND's are properly GC-protected. Create complex_vars_of_scrollbar_mswindows() to create the hash table at startup, and call it from emacs.c. Don't store the scrollbar instance as a property of the GTK scrollbar, as it's not used and if we did this, we'd have to separately GC-protect it in a hash table, like in MS Windows. lrecord.h, frame.h, frame.c, frameslots.h, redisplay.c, window.c, window.h: Move mark_window_mirror from redisplay.c to window.c. Make window mirrors actual Lisp objects. Tell lrecord.h about them. Change the window mirror member of struct frame from a pointer to a Lisp object, and add XWINDOW_MIRROR in appropriate places. Mark the scrollbar instances in the window mirror. redisplay.c, redisplay.h, alloc.c: Delete mark_redisplay. Don't call mark_redisplay. We now mark frame-specific structures in mark_frame. NOTE: I also deleted an extremely questionable call to update_frame_window_mirrors(). It was extremely questionable before, and now totally impossible, since it will create Lisp objects during redisplay. frame.c: Mark the scrollbar instances, which are now Lisp objects. Call mark_gutter() here, not in mark_redisplay(). gutter.c: Update comments about correct marking. --------------------------------------------------------------- ISSUES BROUGHT UP BY MARTIN: --------------------------------------------------------------- buffer.h: Put back these macros the way Steve T and I think they ought to be. I already explained in a previous changelog entry why I think these macros should be the way I'd defined them. Once again: We fix these macros so they don't care about the type of their lvalues. The non-C-string equivalents of these already function in the same way, and it's correct because it should be OK to pass in a CBufbyte *, a BufByte *, a Char_Binary *, an UChar_Binary *, etc. The whole reason for these different types is to work around errors caused by signed-vs-unsigned non-matching types. Any possible error that might be caught in a DFC macro would also be caught wherever the argument is used elsewhere. So creating multiple macro versions would add no useful error-checking and just further complicate an already complicated area. As for Martin's "ANSI aliasing" bug, XEmacs is not ANSI-aliasing clean and probably never will be. Unless the board agrees to change XEmacs in this way (and we really don't want to go down that road), this is not a bug. sound.h: Undo Martin's type change. signal.c: Fix problem identified by Martin with Linux and g++ due to non-standard declaration of setitimer(). systime.h: Update the docs for "qxe_" to point out why making the encapsulation explicit is always the right way to go. (setitimer() itself serves as an example.) For 21.4: update-elc-2.el: Correct misplaced parentheses, making lisp/mule not get recompiled.
author ben
date Mon, 18 Jun 2001 07:10:32 +0000
parents 5fd7ba8b56e7
children fdefd0186b75
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
1 /* Copyright (C) 2000 Free Software Foundation, Inc.
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
2 Copyright (C) 2000, 2001 Ben Wing.
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
3
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
4 This file is part of XEmacs.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
5
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
6 XEmacs is free software; you can redistribute it and/or modify it
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
8 Free Software Foundation; either version 2, or (at your option) any
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
9 later version.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
10
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
14 for more details.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
15
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
17 along with XEmacs; see the file COPYING. If not, write to
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
19 Boston, MA 02111-1307, USA. */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
20
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
21 /* Synched up with: Not in FSF. */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
22
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
23 /* Authorship:
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
24
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
25 Created May 2000 by Andy Piper.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
26 Windows-Mule stuff added by Ben Wing.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
27 */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
28
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
29 #ifndef INCLUDED_syswindows_h_
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
30 #define INCLUDED_syswindows_h_
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
31
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
32 /* Note that there are currently FOUR different general
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
33 Windows-related include files in src!
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
34
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
35 Uses are approximately:
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
36
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
37 syswindows.h: Mostly a wrapper around <windows.h>, including missing
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
38 defines as necessary. Also includes stuff needed on both Cygwin and
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
39 native Windows, regardless of window system chosen.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
40
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
41 console-msw.h: Used on both Cygwin and native Windows, but only when
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
42 native window system (as opposed to X) chosen.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
43
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
44 nt.h: [will be renamed to win32.h] Used only on native Windows, and
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
45 regardless of window system chosen -- but used on both purely native
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
46 Windows (s/windowsnt.h) and MinGW (s/mingw32.h).
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
47
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
48 ntheap.h: Used only on native Windows and only when standard dumping
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
49 mechanism (unexnt.c) used.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
50
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
51 All of the last three files include the first.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
52 */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
53
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
54 #ifndef WIN32_LEAN_AND_MEAN
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
55 #define WIN32_LEAN_AND_MEAN
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
56 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
57
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
58 #include <windows.h>
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
59
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
60 #if defined (WIN32_LEAN_AND_MEAN)
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
61 # ifdef HAVE_X_WINDOWS
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
62 /* Christ almighty. The problems you get when combining two large code bases,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
63 neither with any respect for namespace purity. */
558
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
64 # undef Status
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
65 # endif
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
66 # include <winspool.h>
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
67 # ifdef HAVE_X_WINDOWS
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
68 # define Status int
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
69 # endif
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
70 # include <mmsystem.h>
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
71 # include <shellapi.h>
ed498ef2108b [xemacs-hg @ 2001-05-23 09:59:33 by ben]
ben
parents: 546
diff changeset
72 # include <ddeml.h>
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
73 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
74
546
666d73d6ac56 [xemacs-hg @ 2001-05-20 01:17:07 by ben]
ben
parents: 531
diff changeset
75 #include <lmaccess.h> /* next three for NetUserEnum and friends */
531
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
76 #include <lmapibuf.h>
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
77 #include <lmerr.h>
546
666d73d6ac56 [xemacs-hg @ 2001-05-20 01:17:07 by ben]
ben
parents: 531
diff changeset
78 #include <lmcons.h> /* for UNLEN and possibly other constants */
531
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
79
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
80 /* mmsystem.h defines. */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
81 #ifndef SND_ASYNC
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
82 #define SND_ASYNC 1
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
83 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
84 #ifndef SND_NODEFAULT
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
85 #define SND_NODEFAULT 2
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
86 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
87 #ifndef SND_MEMORY
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
88 #define SND_MEMORY 4
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
89 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
90 #ifndef SND_FILENAME
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
91 #define SND_FILENAME 0x2000L
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
92 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
93
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
94 /* winspool.h defines. */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
95 #ifndef PHYSICALWIDTH
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
96 #define PHYSICALWIDTH 110
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
97 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
98 #ifndef PHYSICALHEIGHT
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
99 #define PHYSICALHEIGHT 111
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
100 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
101 #ifndef PHYSICALOFFSETX
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
102 #define PHYSICALOFFSETX 112
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
103 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
104 #ifndef PHYSICALOFFSETY
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
105 #define PHYSICALOFFSETY 113
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
106 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
107
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
108 /* windows.h defines. */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
109 #if defined (CYGWIN) && (CYGWIN_VERSION_DLL_MAJOR < 20)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
110 typedef NMHDR *LPNMHDR;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
111 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
112
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
113 #ifndef SPI_GETWHEELSCROLLLINES
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
114 #define SPI_GETWHEELSCROLLLINES 104
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
115 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
116 #ifndef WHEEL_PAGESCROLL
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
117 #define WHEEL_PAGESCROLL (UINT_MAX)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
118 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
119 #ifndef WHEEL_DELTA
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
120 #define WHEEL_DELTA 120
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
121 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
122 #ifndef WM_MOUSEWHEEL
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
123 #define WM_MOUSEWHEEL 0x20A
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
124 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
125 #ifndef VK_APPS
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
126 #define VK_APPS 0x5D
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
127 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
128 #ifndef SIF_TRACKPOS
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
129 #define SIF_TRACKPOS 0x0010
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
130 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
131 #ifndef FW_BLACK
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
132 #define FW_BLACK FW_HEAVY
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
133 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
134 #ifndef FW_ULTRABOLD
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
135 #define FW_ULTRABOLD FW_EXTRABOLD
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
136 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
137 #ifndef FW_DEMIBOLD
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
138 #define FW_DEMIBOLD FW_SEMIBOLD
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
139 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
140 #ifndef FW_ULTRALIGHT
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
141 #define FW_ULTRALIGHT FW_EXTRALIGHT
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
142 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
143 #ifndef APPCMD_FILTERINITS
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
144 #define APPCMD_FILTERINITS 0x20L
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
145 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
146 #ifndef CBF_FAIL_SELFCONNECTIONS
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
147 #define CBF_FAIL_SELFCONNECTIONS 0x1000
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
148 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
149 #ifndef CBF_SKIP_ALLNOTIFICATIONS
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
150 #define CBF_SKIP_ALLNOTIFICATIONS 0x3C0000
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
151 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
152 #ifndef CBF_FAIL_ADVISES
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
153 #define CBF_FAIL_ADVISES 0x4000
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
154 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
155 #ifndef CBF_FAIL_POKES
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
156 #define CBF_FAIL_POKES 0x10000
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
157 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
158 #ifndef CBF_FAIL_REQUESTS
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
159 #define CBF_FAIL_REQUESTS 0x20000
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
160 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
161 #ifndef SZDDESYS_TOPIC
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
162 #define SZDDESYS_TOPIC "System"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
163 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
164 #ifndef JOHAB_CHARSET
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
165 #define JOHAB_CHARSET 130
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
166 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
167 #ifndef MAC_CHARSET
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
168 #define MAC_CHARSET 77
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
169 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
170
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
171 /***************************************************************/
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
172
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
173 /* Definitions for Mule under MS Windows */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
174
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
175 #include <wchar.h>
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
176
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
177 #ifdef CYGWIN
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
178
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
179 /* All but wcscmp and wcslen left out of Cygwin headers -- but present
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
180 in /usr/include/mingw32/string.h! */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
181 wchar_t* wcscat (wchar_t*, const wchar_t*);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
182 wchar_t* wcschr (const wchar_t*, wchar_t);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
183 int wcscoll (const wchar_t*, const wchar_t*);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
184 wchar_t* wcscpy (wchar_t*, const wchar_t*);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
185 size_t wcscspn (const wchar_t*, const wchar_t*);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
186 /* Note: No wcserror in CRTDLL. */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
187 wchar_t* wcsncat (wchar_t*, const wchar_t*, size_t);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
188 int wcsncmp(const wchar_t*, const wchar_t*, size_t);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
189 wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
190 wchar_t* wcspbrk(const wchar_t*, const wchar_t*);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
191 wchar_t* wcsrchr(const wchar_t*, wchar_t);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
192 size_t wcsspn(const wchar_t*, const wchar_t*);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
193 wchar_t* wcsstr(const wchar_t*, const wchar_t*);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
194 wchar_t* wcstok(wchar_t*, const wchar_t*);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
195 size_t wcsxfrm(wchar_t*, const wchar_t*, size_t);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
196
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
197 #endif /* CYGWIN */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
198
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
199 // extern int mswindows_windows9x_p;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
200 /* #define XEUNICODE_P (!mswindows_windows9x_p) */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
201 #define XEUNICODE_P 0
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
202
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
203 #define XETCHAR_SIZE (XEUNICODE_P ? sizeof (WCHAR) : sizeof (CHAR))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
204 #define MAX_XETCHAR_SIZE sizeof (WCHAR)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
205 #define XETEXT1(arg) (XEUNICODE_P ? ((char *) (L##arg)) : (arg))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
206 /* We need to do this indirection in case ARG is also a manifest constant.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
207 I don't really understand why. --ben */
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
208 #define XETEXT(arg) XETEXT1(arg)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
209 #define XECOPY_TCHAR(ptr, ch) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
210 (XEUNICODE_P ? (* (LPWSTR) (ptr) = L##ch) : (* (LPSTR) (ptr) = (ch)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
211 #define xetcslen(arg) (XEUNICODE_P ? wcslen ((wchar_t *) arg) : strlen (arg))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
212 #define xetcscmp(s1, s2) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
213 (XEUNICODE_P ? wcscmp ((wchar_t *) s1, (wchar_t *) s2) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
214 : strcmp (s1, s2))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
215 #define xetcscpy(s1, s2) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
216 (XEUNICODE_P ? (char *) wcscpy ((wchar_t *) s1, (wchar_t *) s2) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
217 : strcpy (s1, s2))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
218 #define xetcschr(s, ch) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
219 (XEUNICODE_P ? (char *) wcschr ((wchar_t *) s, (WCHAR) ch) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
220 : strchr (s, ch))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
221 #define xetcsrchr(s, ch) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
222 (XEUNICODE_P ? (char *) wcsrchr ((wchar_t *) s, (WCHAR) ch) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
223 : strrchr (s, ch))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
224
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
225
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
226 #define LOCAL_FILE_FORMAT_TO_TSTR(path, out) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
227 do { \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
228 Bufbyte *lttff; \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
229 \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
230 LOCAL_TO_WIN32_FILE_FORMAT (path, lttff); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
231 C_STRING_TO_EXTERNAL (lttff, out, Qmswindows_tstr); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
232 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
233
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
234 Lisp_Object tstr_to_local_file_format (Extbyte *pathout);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
235
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
236 #ifdef CYGWIN
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
237 #define LOCAL_TO_WIN32_FILE_FORMAT(path, pathout) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
238 do { \
593
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
239 /* NOTE: It is a bit evil that here and below we are passing \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
240 internal-format data to a function that (nominally) should work \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
241 with external-format data. But in point of fact, the Cygwin \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
242 conversion functions are *NOT* localized, and will fail if they \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
243 get 7-bit ISO2022-encoded data. We know that our internal format \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
244 is ASCII-compatible, and so these functions will work fine with \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
245 this data. */ \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
246 Lisp_Object ltwff1 = (path); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
247 int ltwff2 = \
593
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
248 cygwin_posix_to_win32_path_list_buf_size ((char *) \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
249 XSTRING_DATA (ltwff1)); \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
250 pathout = (Bufbyte *) alloca (ltwff2); \
593
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
251 cygwin_posix_to_win32_path_list ((char *) XSTRING_DATA (ltwff1), \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
252 (char *) pathout); \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
253 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
254 #else
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
255 #define LOCAL_TO_WIN32_FILE_FORMAT(path, pathout) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
256 do { \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
257 (pathout) = XSTRING_DATA (path); \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
258 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
259 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
260
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
261 #ifdef CYGWIN
593
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
262 #define WIN32_TO_LOCAL_FILE_FORMAT(path, pathout) \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
263 do { \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
264 Bufbyte *wtlff1 = (path); \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
265 int wtlff2 = \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
266 cygwin_win32_to_posix_path_list_buf_size ((char *) wtlff1); \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
267 Bufbyte *wtlff3 = (Bufbyte *) alloca (wtlff2); \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
268 cygwin_win32_to_posix_path_list ((char *) wtlff1, (char *) wtlff3); \
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
269 (pathout) = build_string ((CBufbyte *) wtlff3); \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
270 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
271 #else
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
272 #define WIN32_TO_LOCAL_FILE_FORMAT(path, pathout) \
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
273 do { \
593
5fd7ba8b56e7 [xemacs-hg @ 2001-05-31 12:45:27 by ben]
ben
parents: 558
diff changeset
274 (pathout) = build_string ((CBufbyte *) path); \
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
275 } while (0)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
276 #endif
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
277
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
278 extern BOOL (WINAPI *xSwitchToThread) (VOID);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
279
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
280 extern HKL (WINAPI *xGetKeyboardLayout) (DWORD);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
281 extern BOOL (WINAPI *xSetMenuDefaultItem) (HMENU, UINT, UINT);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
282 extern BOOL (WINAPI *xInsertMenuItemA) (HMENU, UINT, BOOL, LPCMENUITEMINFOA);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
283 extern BOOL (WINAPI *xInsertMenuItemW) (HMENU, UINT, BOOL, LPCMENUITEMINFOW);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
284 extern HANDLE (WINAPI *xLoadImageA) (HINSTANCE, LPCSTR, UINT, int, int, UINT);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
285 extern HANDLE (WINAPI *xLoadImageW) (HINSTANCE, LPCWSTR, UINT, int, int, UINT);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
286 extern ATOM (WINAPI *xRegisterClassExA) (CONST WNDCLASSEXA *);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
287 extern ATOM (WINAPI *xRegisterClassExW) (CONST WNDCLASSEXW *);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
288
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
289 extern int (WINAPI *xEnumFontFamiliesExA) (HDC, LPLOGFONTA, FONTENUMPROCA,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
290 LPARAM, DWORD);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
291 extern int (WINAPI *xEnumFontFamiliesExW) (HDC, LPLOGFONTW, FONTENUMPROCW,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
292 LPARAM, DWORD);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
293
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
294 extern DWORD (WINAPI *xSHGetFileInfoA) (LPCSTR, DWORD, SHFILEINFOA FAR *, UINT,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
295 UINT);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
296 extern DWORD (WINAPI *xSHGetFileInfoW) (LPCWSTR, DWORD, SHFILEINFOW FAR *,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
297 UINT, UINT);
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
298
531
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
299 extern NET_API_STATUS (NET_API_FUNCTION *xNetUserEnum)
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
300 (
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
301 IN LPCWSTR servername OPTIONAL,
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
302 IN DWORD level,
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
303 IN DWORD filter,
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
304 OUT LPBYTE *bufptr,
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
305 IN DWORD prefmaxlen,
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
306 OUT LPDWORD entriesread,
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
307 OUT LPDWORD totalentries,
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
308 IN OUT LPDWORD resume_handle OPTIONAL
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
309 );
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
310
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
311 extern NET_API_STATUS (NET_API_FUNCTION *xNetApiBufferFree)
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
312 (
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
313 IN LPVOID Buffer
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
314 );
0493e9f3c27f [xemacs-hg @ 2001-05-12 11:16:12 by ben]
ben
parents: 442
diff changeset
315
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
316 #endif /* INCLUDED_syswindows_h_ */