update for HEAD-2003091401
[reactos.git] / include / base.h
1 /* 
2    Base.h
3
4    Base definitions
5
6    Copyright (C) 1996, 1997 Free Software Foundation, Inc.
7
8    Author: Scott Christley <scottc@net-community.com>
9
10    This file is part of the Windows32 API Library.
11
12    This library is free software; you can redistribute it and/or
13    modify it under the terms of the GNU Library General Public
14    License as published by the Free Software Foundation; either
15    version 2 of the License, or (at your option) any later version.
16    
17    This library is distributed in the hope that it will be useful,
18    but WITHOUT ANY WARRANTY; without even the implied warranty of
19    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20    Library General Public License for more details.
21
22    If you are interested in a warranty or support for this source code,
23    contact Scott Christley <scottc@net-community.com> for more information.
24    
25    You should have received a copy of the GNU Library General Public
26    License along with this library; see the file COPYING.LIB.
27    If not, write to the Free Software Foundation, 
28    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29 */ 
30
31 #ifndef _GNU_H_WINDOWS32_BASE
32 #define _GNU_H_WINDOWS32_BASE
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif /* __cplusplus */
37
38 #ifndef NULL
39 #ifdef __cplusplus
40 #define NULL  (0)
41 #else
42 #define NULL  ((void *)0)
43 #endif
44 #endif /* !NULL */
45
46 #include <ntos/types.h>
47
48 /* Check VOID before defining CHAR, SHORT, and LONG */
49 #ifndef VOID
50 #define VOID void
51 typedef char CHAR;
52 typedef short SHORT;
53 typedef long LONG;
54 #endif
55
56
57 #define CONST const
58
59 #define WINAPI      STDCALL
60 #define APIENTRY    STDCALL
61 #define WINGDIAPI
62
63
64 #ifndef _DISABLE_TIDENTS
65 #ifdef UNICODE
66 typedef wchar_t *LPTCH;
67 typedef wchar_t *LPTSTR;
68 #else
69 typedef char *LPTCH;
70 typedef char *LPTSTR;
71 #endif /* UNICODE */
72 #endif /* _DISABLE_TIDENTS */
73
74 #ifndef RC_INVOKED
75
76 /* typedef ACMDRIVERENUMCB;
77 typedef ACMDRIVERPROC;
78 typedef ACMFILERCHOOSEHOOKPROC;
79 typedef ACMFILTERENUMCB;
80 typedef ACMFILTERTAGENUMCB;
81 typedef ACMFORMATCHOOSEHOOKPROC;
82 typedef ACMFORMATENUMCB;
83 typedef ACMFORMATTAGENUMCB;
84 typedef APPLET_PROC;
85 */
86 /* Changed from BOOL to WINBOOL to avoid Objective-C conflict */
87 typedef unsigned long CALTYPE;
88 typedef unsigned long CALID;
89 typedef unsigned long COLORREF;
90
91 /*
92 typedef CTRYID;
93 typedef DLGPROC;
94 */
95 typedef double DWORDLONG, *PDWORDLONG;
96 /*
97 typedef EDITWORDBREAKPROC;
98 typedef ENHMFENUMPROC;
99 typedef ENUMRESLANGPROC;
100 typedef ENUMRESNAMEPROC;
101 typedef ENUMRESTYPEPROC;
102 */
103 typedef float FLOAT;
104 /* typedef GLOBALHANDLE; */
105 typedef HANDLE HACCEL;
106 typedef HANDLE HBITMAP;
107 typedef HANDLE HBRUSH;
108 typedef HANDLE HCOLORSPACE;
109 typedef HANDLE HCONV;
110 typedef HANDLE HCONVLIST;
111 typedef HANDLE HCURSOR;
112 typedef HANDLE HDBC;
113 typedef HANDLE HDC;
114 typedef HANDLE HDDEDATA;
115 typedef HANDLE HDESK;
116 typedef HANDLE HDROP;
117 typedef HANDLE HDWP;
118 typedef HANDLE HENHMETAFILE;
119 typedef HANDLE HENV;
120 typedef USHORT COLOR16;
121 typedef int HFILE;
122 typedef HANDLE HFONT;
123 typedef HANDLE HGDIOBJ;
124 typedef HANDLE HGLOBAL;
125 typedef HANDLE HGLRC;
126 typedef HANDLE HHOOK;
127 typedef HANDLE HICON;
128 typedef HANDLE HIMAGELIST;
129 typedef HANDLE HINSTANCE;
130 typedef HANDLE HKEY, *PHKEY;
131 typedef HANDLE HKL;
132 typedef LONG    GEOID;
133 typedef DWORD   GEOTYPE;
134 typedef DWORD   GEOCLASS;
135 typedef HANDLE HLOCAL;
136 typedef HANDLE HMENU;
137 typedef HANDLE HMETAFILE;
138 typedef HANDLE HMODULE;
139 typedef HANDLE HPALETTE;
140 typedef HANDLE HPEN;
141 typedef HANDLE HRASCONN;
142 typedef DWORD LGRPID;
143 typedef long HRESULT;
144 typedef HANDLE HRGN;
145 typedef HANDLE HRSRC;
146 typedef HANDLE HSTMT;
147 typedef HANDLE HSZ;
148 typedef HANDLE HWINSTA;
149 typedef HANDLE HWND;
150 typedef HANDLE HRAWINPUT;
151 typedef HANDLE HTASK;
152 typedef HANDLE HWINEVENTHOOK;
153 typedef VOID (CALLBACK* WINEVENTPROC)(HWINEVENTHOOK hWinEventHook,DWORD event,HWND hwnd,LONG idObject,LONG idChild,DWORD idEventThread,DWORD dwmsEventTime);
154 typedef unsigned short LANGID;
155 /*typedef DWORD LCID; */
156 typedef DWORD LCTYPE;
157 /* typedef LOCALHANDLE */
158 typedef unsigned short *LP;
159 typedef long LPARAM;
160 typedef int WINBOOL;
161 typedef WINBOOL *LPBOOL;
162 typedef CONST CHAR *LPCCH;
163 typedef CHAR *LPCH;
164 typedef COLORREF *LPCOLORREF;
165
166 #ifndef _DISABLE_TIDENTS
167 #ifdef UNICODE
168 typedef const wchar_t *LPCTSTR;
169 #else
170 typedef const char *LPCTSTR;
171 #endif /* UNICODE */
172 #endif /* _DISABLE_TIDENTS */
173
174 typedef const wchar_t *LPCWCH;
175 typedef DWORD *LPDWORD;
176 /* typedef LPFRHOOKPROC; */
177 typedef HANDLE *LPHANDLE;
178 typedef DWORD FULLSCREENCONTROL;
179 typedef DWORD UNIVERSAL_FONT_ID;
180 typedef UNIVERSAL_FONT_ID *PUNIVERSAL_FONT_ID;
181 typedef DWORD REALIZATION_INFO;
182 typedef REALIZATION_INFO *PREALIZATION_INFO;
183 typedef DWORD SHAREDHANDLETABLE;
184 typedef SHAREDHANDLETABLE *PSHAREDHANDLETABLE;
185 typedef DWORD CHWIDTHINFO;
186 typedef CHWIDTHINFO *PCHWIDTHINFO;
187 /* typedef LPHANDLER_FUNCTION; */
188 typedef PINT LPINT;
189 typedef PLONG LPLONG;
190
191 typedef long LRESULT;
192 typedef wchar_t *LPWCH;
193 typedef unsigned short *LPWORD;
194 /* typedef NPSTR; */
195 typedef wchar_t *NWPSTR;
196 typedef WINBOOL *PWINBOOL;
197 typedef const CHAR *PCCH;
198 typedef const char *PCSTR;
199 typedef const wchar_t *PCWCH;
200 /* typedef PHKEY; */
201 /* typedef LCID *PLCID; */
202 typedef short *PSHORT;
203 /* typedef PSID; */
204 typedef char *PSTR;
205 typedef char *PSZ;
206
207 #ifndef _DISABLE_TIDENTS
208 #ifdef UNICODE
209 typedef wchar_t *PTBYTE;
210 typedef wchar_t *PTCH;
211 typedef wchar_t *PTCHAR;
212 typedef wchar_t *PTSTR;
213 #else
214 typedef unsigned char *PTBYTE;
215 typedef char *PTCH;
216 typedef char *PTCHAR;
217 typedef char *PTSTR;
218 #endif /* UNICODE */
219 #endif /* _DISABLE_TIDENTS */
220
221 /*
222  typedef PWSTR;
223  */
224 typedef DWORD REGSAM;
225
226
227 typedef short RETCODE;
228
229 typedef HANDLE SC_HANDLE;
230 typedef LPVOID  SC_LOCK;
231 typedef SC_HANDLE *LPSC_HANDLE;
232 typedef DWORD SERVICE_STATUS_HANDLE;
233 /* typedef SPHANDLE; */
234
235 #ifndef _DISABLE_TIDENTS
236 #ifdef UNICODE
237 typedef wchar_t TBYTE;
238 #ifndef _TCHAR_DEFINED
239 #define _TCHAR_DEFINED
240 typedef wchar_t TCHAR;
241 #endif /* _TCHAR_DEFINED */
242 typedef wchar_t BCHAR;
243 #else
244 typedef unsigned char TBYTE;
245 #ifndef _TCHAR_DEFINED
246 #define _TCHAR_DEFINED
247 typedef char TCHAR;
248 #endif /* _TCHAR_DEFINED */
249 typedef BYTE BCHAR;
250 #endif /* UNICODE */
251 #endif /* _DISABLE_TIDENTS */
252
253 typedef unsigned int WPARAM;
254 /* typedef YIELDPROC; */
255
256 /* Only use __stdcall under WIN32 compiler */
257
258 #define _export
259
260 /*
261   Enumerations
262 */
263  
264  
265 #define RASCS_DONE 0x2000
266 #define RASCS_PAUSED 0x1000
267 typedef enum _RASCONNSTATE { 
268     RASCS_OpenPort = 0, 
269     RASCS_PortOpened, 
270     RASCS_ConnectDevice, 
271     RASCS_DeviceConnected, 
272     RASCS_AllDevicesConnected, 
273     RASCS_Authenticate, 
274     RASCS_AuthNotify, 
275     RASCS_AuthRetry, 
276     RASCS_AuthCallback, 
277     RASCS_AuthChangePassword, 
278     RASCS_AuthProject, 
279     RASCS_AuthLinkSpeed, 
280     RASCS_AuthAck, 
281     RASCS_ReAuthenticate, 
282     RASCS_Authenticated, 
283     RASCS_PrepareForCallback, 
284     RASCS_WaitForModemReset, 
285     RASCS_WaitForCallback,
286     RASCS_Projected, 
287  
288     RASCS_StartAuthentication,  
289     RASCS_CallbackComplete,     
290     RASCS_LogonNetwork,         
291  
292     RASCS_Interactive = RASCS_PAUSED, 
293     RASCS_RetryAuthentication, 
294     RASCS_CallbackSetByCaller, 
295     RASCS_PasswordExpired, 
296  
297     RASCS_Connected = RASCS_DONE, 
298     RASCS_Disconnected 
299 } RASCONNSTATE ; 
300  
301 typedef enum _RASPROJECTION {  
302     RASP_Amb = 0x10000, 
303     RASP_PppNbf = 0x803F, 
304     RASP_PppIpx = 0x802B, 
305     RASP_PppIp = 0x8021 
306 } RASPROJECTION ; 
307   
308 typedef enum _SID_NAME_USE { 
309     SidTypeUser = 1, 
310     SidTypeGroup, 
311     SidTypeDomain, 
312     SidTypeAlias, 
313     SidTypeWellKnownGroup, 
314     SidTypeDeletedAccount, 
315     SidTypeInvalid, 
316     SidTypeUnknown 
317 } SID_NAME_USE, *PSID_NAME_USE; 
318  
319 #endif /* ! defined (RC_INVOKED) */
320
321 /*
322   Macros
323 */
324 #define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn)  (void)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(id),  (LPARAM)(NMHDR FAR*)(pnmhdr)) 
325
326 #define GetBValue(rgb)   ((BYTE) ((rgb) >> 16)) 
327 #define GetGValue(rgb)   ((BYTE) (((WORD) (rgb)) >> 8)) 
328 #define GetRValue(rgb)   ((BYTE) (rgb)) 
329 #define RGB(r, g ,b)  ((DWORD) (((BYTE) (r) | ((WORD) (g) << 8)) | (((DWORD) (BYTE) (b)) << 16))) 
330
331 #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) (fn)((hwnd), (int)(wParam), (NMHDR FAR*)(lParam)) 
332
333 #define HIBYTE(w)   ((BYTE) (((WORD) (w) >> 8) & 0xFF)) 
334 #define HIWORD(l)   ((WORD) (((DWORD) (l) >> 16) & 0xFFFF)) 
335 #define SHIWORD(l)   ((INT16) (((DWORD) (l) >> 16) & 0xFFFF)) 
336 #define LOBYTE(w)   ((BYTE) (w)) 
337 #define LOWORD(l)   ((WORD) (l)) 
338 #define SLOWORD(l)   ((INT16) (l)) 
339 #define MAKELONG(a, b) ((LONG) (((WORD) (a)) | ((DWORD) ((WORD) (b))) << 16)) 
340 #define MAKEWORD(a, b) ((WORD) (((BYTE) (a)) | ((WORD) ((BYTE) (b))) << 8)) 
341
342 /* original Cygnus headers also had the following defined: */
343 #define SEXT_HIWORD(l)     ((((int)l) >> 16))
344 #define ZEXT_HIWORD(l)     ((((unsigned int)l) >> 16))
345 #define SEXT_LOWORD(l)     ((int)(short)l)
346
347 #define INDEXTOOVERLAYMASK(i) ((i) << 8) 
348 #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12) 
349
350 #define MAKEINTATOM(i)   (LPTSTR) ((DWORD) ((WORD) (i))) 
351 #ifndef _DISABLE_TIDENTS
352 #define MAKEINTRESOURCE(i)   (LPTSTR) ((ULONG_PTR) ((WORD) (i)))
353 #endif /* _DISABLE_TIDENTS */
354 #define MAKEINTRESOURCEA(i)  (LPSTR)  ((ULONG_PTR) ((WORD) (i)))
355 #define MAKEINTRESOURCEW(i)  (LPWSTR) ((ULONG_PTR) ((WORD) (i)))
356 #define IS_INTRESOURCE(n)    ((((ULONG_PTR) (n)) >> 16) == 0)
357
358 #define MAKELANGID(p, s) ((((WORD) (s)) << 10) | (WORD) (p)) 
359 #define PRIMARYLANGID(lgid)    ((WORD  )(lgid) & 0x3ff) 
360 #define SUBLANGID(lgid)        ((WORD  )(lgid) >> 10) 
361
362 #define LANGIDFROMLCID(lcid)   ((WORD) (lcid)) 
363 #define SORTIDFROMLCID(lcid) ((WORD  )((((DWORD)(lcid)) & 0x000FFFFF) >> 16)) 
364 #define MAKELCID(lgid, srtid)  ((DWORD)((((DWORD)((WORD)(srtid))) << 16) |  ((DWORD)((WORD)(lgid))))) 
365 #define MAKELPARAM(l, h)   ((LPARAM) MAKELONG(l, h)) 
366 #define MAKELRESULT(l, h)   ((LRESULT) MAKELONG(l, h)) 
367 #define MAKEPOINTS(l)   (*((POINTS FAR *) & (l))) 
368 #define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore)) 
369 #define MAKEWPARAM(l, h)   ((WPARAM) MAKELONG(l, h)) 
370
371
372 #define PALETTEINDEX(i) ((COLORREF) (0x01000000 | (DWORD) (WORD) (i))) 
373 #define PALETTERGB(r, g, b)  (0x02000000 | RGB(r, g, b)) 
374 #define POINTSTOPOINT(pt, pts) {(pt).x = (SHORT) LOWORD(pts); (pt).y = (SHORT) HIWORD(pts);} 
375 #define POINTTOPOINTS(pt) (MAKELONG((short) ((pt).x), (short) ((pt).y))) 
376
377 #define INDEXTOOVERLAYMASK(i) ((i) << 8)  
378 #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)  
379
380 #ifndef _DISABLE_TIDENTS
381 #  ifdef UNICODE
382 #    ifndef _T
383 #      define _T(quote)   L##quote 
384 #    endif /* _T */
385 #    ifndef _TEXT
386 #      define TEXT(quote) L##quote 
387 #    endif /* _TEXT */
388 #  else /* UNICODE */
389 #    ifndef _T
390 #      define _T(quote)   quote 
391 #    endif /* _T */
392 #    ifndef _TEXT
393 #      define TEXT(quote) quote
394 #    endif /* _TEXT */
395 #  endif /* UNICODE */
396 #endif /* _DISABLE_TIDENTS */
397
398 #ifndef RC_INVOKED
399
400 /*
401    Definitions for callback procedures
402 */
403 typedef enum {
404
405     WinNullSid                                  = 0,
406     WinWorldSid                                 = 1,
407     WinLocalSid                                 = 2,
408     WinCreatorOwnerSid                          = 3,
409     WinCreatorGroupSid                          = 4,
410     WinCreatorOwnerServerSid                    = 5,
411     WinCreatorGroupServerSid                    = 6,
412     WinNtAuthoritySid                           = 7,
413     WinDialupSid                                = 8,
414     WinNetworkSid                               = 9,
415     WinBatchSid                                 = 10,
416     WinInteractiveSid                           = 11,
417     WinServiceSid                               = 12,
418     WinAnonymousSid                             = 13,
419     WinProxySid                                 = 14,
420     WinEnterpriseControllersSid                 = 15,
421     WinSelfSid                                  = 16,
422     WinAuthenticatedUserSid                     = 17,
423     WinRestrictedCodeSid                        = 18,
424     WinTerminalServerSid                        = 19,
425     WinRemoteLogonIdSid                         = 20,
426     WinLogonIdsSid                              = 21,
427     WinLocalSystemSid                           = 22,
428     WinLocalServiceSid                          = 23,
429     WinNetworkServiceSid                        = 24,
430     WinBuiltinDomainSid                         = 25,
431     WinBuiltinAdministratorsSid                 = 26,
432     WinBuiltinUsersSid                          = 27,
433     WinBuiltinGuestsSid                         = 28,
434     WinBuiltinPowerUsersSid                     = 29,
435     WinBuiltinAccountOperatorsSid               = 30,
436     WinBuiltinSystemOperatorsSid                = 31,
437     WinBuiltinPrintOperatorsSid                 = 32,
438     WinBuiltinBackupOperatorsSid                = 33,
439     WinBuiltinReplicatorSid                     = 34,
440     WinBuiltinPreWindows2000CompatibleAccessSid = 35,
441     WinBuiltinRemoteDesktopUsersSid             = 36,
442     WinBuiltinNetworkConfigurationOperatorsSid  = 37,
443     WinAccountAdministratorSid                  = 38,
444     WinAccountGuestSid                          = 39,
445     WinAccountKrbtgtSid                         = 40,
446     WinAccountDomainAdminsSid                   = 41,
447     WinAccountDomainUsersSid                    = 42,
448     WinAccountDomainGuestsSid                   = 43,
449     WinAccountComputersSid                      = 44,
450     WinAccountControllersSid                    = 45,
451     WinAccountCertAdminsSid                     = 46,
452     WinAccountSchemaAdminsSid                   = 47,
453     WinAccountEnterpriseAdminsSid               = 48,
454     WinAccountPolicyAdminsSid                   = 49,
455     WinAccountRasAndIasServersSid               = 50,
456     WinNTLMAuthenticationSid                    = 51,
457     WinDigestAuthenticationSid                  = 52,
458     WinSChannelAuthenticationSid                = 53,
459     WinThisOrganizationSid                      = 54,
460     WinOtherOrganizationSid                     = 55,
461     WinBuiltinIncomingForestTrustBuildersSid    = 56,
462     WinBuiltinPerfMonitoringUsersSid            = 57,
463     WinBuiltinPerfLoggingUsersSid               = 58,
464     WinBuiltinAuthorizationAccessSid            = 59,
465     WinBuiltinTerminalServerLicenseServersSid   = 60,
466
467 } WELL_KNOWN_SID_TYPE;
468 typedef enum _AUDIT_EVENT_TYPE {
469     AuditEventObjectAccess,
470     AuditEventDirectoryServiceAccess
471 } AUDIT_EVENT_TYPE, *PAUDIT_EVENT_TYPE;
472 typedef int CALLBACK (*BFFCALLBACK) (HWND, UINT, LPARAM, LPARAM);
473 typedef UINT CALLBACK (*LPCCHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
474 typedef UINT CALLBACK (*LPCFHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
475 typedef DWORD CALLBACK (*EDITSTREAMCALLBACK) (DWORD, LPBYTE, LONG, LONG);
476 typedef UINT CALLBACK (*LPFRHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
477 typedef UINT CALLBACK (*LPOFNHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
478 typedef UINT CALLBACK (*LPPRINTHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
479 typedef UINT CALLBACK (*LPSETUPHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
480 typedef WINBOOL CALLBACK (*DLGPROC) (HWND, UINT, WPARAM, LPARAM);
481 typedef int CALLBACK (*PFNPROPSHEETCALLBACK) (HWND, UINT, LPARAM);
482 typedef VOID CALLBACK (*LPSERVICE_MAIN_FUNCTIONA) (DWORD, LPSTR*);
483 typedef VOID CALLBACK (*LPSERVICE_MAIN_FUNCTIONW) (DWORD, LPWSTR*);
484 typedef int CALLBACK (*PFNTVCOMPARE) (LPARAM, LPARAM, LPARAM);
485 typedef LRESULT CALLBACK (*WNDPROC) (HWND, UINT, WPARAM, LPARAM);
486 typedef int CALLBACK (*FARPROC)(void);
487 typedef FARPROC PROC;
488 typedef WINBOOL CALLBACK (*ENUMRESTYPEPROCA) (HANDLE, LPSTR, LONG);
489 typedef WINBOOL CALLBACK (*ENUMRESTYPEPROCW) (HANDLE, LPWSTR, LONG);
490 typedef WINBOOL CALLBACK (*ENUMRESNAMEPROCA) (HANDLE, LPCSTR, LPSTR, LONG);
491 typedef WINBOOL CALLBACK (*ENUMRESNAMEPROCW) (HANDLE, LPCWSTR, LPWSTR, LONG);
492 typedef WINBOOL CALLBACK (*ENUMRESLANGPROCA) (HANDLE, LPCSTR, LPCSTR, WORD, LONG);
493 typedef WINBOOL CALLBACK (*ENUMRESLANGPROCW) (HANDLE, LPCWSTR, LPCWSTR, WORD, LONG);
494 typedef WINBOOL CALLBACK (*DESKTOPENUMPROCA) (LPSTR,  LPARAM);
495 typedef WINBOOL CALLBACK (*DESKTOPENUMPROCW) (LPWSTR, LPARAM);
496 typedef WINBOOL CALLBACK (*ENUMWINDOWSPROC) (HWND, LPARAM);
497 typedef WINBOOL CALLBACK (*ENUMWINDOWSTATIONPROCA) (LPSTR, LPARAM);
498 typedef WINBOOL CALLBACK (*ENUMWINDOWSTATIONPROCW) (LPWSTR, LPARAM);
499 typedef VOID CALLBACK (*SENDASYNCPROC) (HWND, UINT, DWORD, LRESULT);
500 typedef VOID CALLBACK (*TIMERPROC) (HWND, UINT, UINT, DWORD);
501 typedef WINBOOL CALLBACK (*GRAYSTRINGPROC) (HDC, LPARAM, int);
502 typedef WINBOOL CALLBACK (*DRAWSTATEPROC) (HDC, LPARAM, WPARAM, int, int);
503 typedef WINBOOL CALLBACK (*PROPENUMPROCEXA) (HWND, LPCSTR, HANDLE, DWORD);
504 typedef WINBOOL CALLBACK (*PROPENUMPROCEXW) (HWND, LPCWSTR, HANDLE, DWORD);
505 typedef WINBOOL CALLBACK (*PROPENUMPROCA) (HWND, LPCSTR, HANDLE);
506 typedef WINBOOL CALLBACK (*PROPENUMPROCW) (HWND, LPCWSTR, HANDLE);
507 typedef LRESULT CALLBACK (*HOOKPROC) (int, WPARAM, LPARAM);
508 typedef VOID CALLBACK (*ENUMOBJECTSPROC) (LPVOID, LPARAM);
509 typedef VOID CALLBACK (*LINEDDAPROC) (int, int, LPARAM);
510 typedef WINBOOL CALLBACK (*ABORTPROC) (HDC, int);
511 typedef UINT CALLBACK (*LPPAGEPAINTHOOK) (HWND, UINT, WPARAM, LPARAM );
512 typedef UINT CALLBACK (*LPPAGESETUPHOOK) (HWND, UINT, WPARAM, LPARAM );
513 typedef int CALLBACK (*ICMENUMPROCA) (LPSTR, LPARAM);
514 typedef int CALLBACK (*ICMENUMPROCW) (LPWSTR, LPARAM);
515 typedef LONG (*EDITWORDBREAKPROCEX) (char *, LONG, BYTE, INT);
516 typedef int CALLBACK (*PFNLVCOMPARE) (LPARAM, LPARAM, LPARAM);
517 typedef WINBOOL CALLBACK (*LOCALE_ENUMPROCA) (LPSTR);
518 typedef WINBOOL CALLBACK (*LOCALE_ENUMPROCW) (LPWSTR);
519 typedef WINBOOL CALLBACK (*CODEPAGE_ENUMPROCA) (LPSTR);
520 typedef WINBOOL CALLBACK (*CODEPAGE_ENUMPROCW) (LPWSTR);
521 typedef WINBOOL CALLBACK (*DATEFMT_ENUMPROCA) (LPSTR);
522 typedef WINBOOL CALLBACK (*DATEFMT_ENUMPROCW) (LPWSTR);
523 typedef WINBOOL CALLBACK (*TIMEFMT_ENUMPROCA) (LPSTR);
524 typedef WINBOOL CALLBACK (*TIMEFMT_ENUMPROCW) (LPWSTR);
525 typedef WINBOOL CALLBACK (*CALINFO_ENUMPROCA) (LPSTR);
526 typedef int (CALLBACK* EMFPLAYPROC)( HDC hdc, INT iFunction, HANDLE hPageQuery );
527 typedef WINBOOL CALLBACK (*CALINFO_ENUMPROCW) (LPWSTR);
528 typedef WINBOOL CALLBACK (*PHANDLER_ROUTINE) (DWORD);
529 typedef VOID CALLBACK (*LPHANDLER_FUNCTION) (DWORD);
530 typedef DWORD CALLBACK (*LPHANDLER_FUNCTION_EX)(DWORD,DWORD,LPVOID,LPVOID);
531 typedef UINT CALLBACK (*PFNGETPROFILEPATHA) (LPCSTR, LPSTR, UINT);
532 typedef UINT CALLBACK (*PFNGETPROFILEPATHW) (LPCWSTR, LPWSTR, UINT);
533 typedef UINT CALLBACK (*PFNRECONCILEPROFILEA) (LPCSTR, LPCSTR, DWORD);
534 typedef UINT CALLBACK (*PFNRECONCILEPROFILEW) (LPCWSTR, LPCWSTR, DWORD);
535 typedef WINBOOL CALLBACK (*PFNPROCESSPOLICIESA) (HWND, LPCSTR, LPCSTR, LPCSTR, DWORD);
536 typedef WINBOOL CALLBACK (*PFNPROCESSPOLICIESW) (HWND, LPCWSTR, LPCWSTR, LPCWSTR, DWORD);
537
538 #ifndef _DISABLE_TIDENTS
539 #ifdef UNICODE
540 #define LPSERVICE_MAIN_FUNCTION LPSERVICE_MAIN_FUNCTIONW
541 #define ENUMRESTYPEPROC ENUMRESTYPEPROCW
542 #define ENUMRESNAMEPROC ENUMRESNAMEPROCW
543 #define ENUMRESLANGPROC ENUMRESLANGPROCW
544 #define DESKTOPENUMPROC DESKTOPENUMPROCW
545 #define ENUMWINDOWSTATIONPROC ENUMWINDOWSTATIONPROCW
546 #define PROPENUMPROCEX PROPENUMPROCEXW
547 #define PROPENUMPROC PROPENUMPROCW
548 #define ICMENUMPROC ICMENUMPROCW
549 #define LOCALE_ENUMPROC LOCALE_ENUMPROCW
550 #define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCW
551 #define DATEFMT_ENUMPROC DATEFMT_ENUMPROCW
552 #define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCW
553 #define CALINFO_ENUMPROC CALINFO_ENUMPROCW
554 #define PFNGETPROFILEPATH PFNGETPROFILEPATHW
555 #define PFNRECONCILEPROFILE PFNRECONCILEPROFILEW
556 #define PFNPROCESSPOLICIES PFNPROCESSPOLICIESW
557 #else /* UNICODE */
558 #define LPSERVICE_MAIN_FUNCTION LPSERVICE_MAIN_FUNCTIONA
559 #define ENUMRESTYPEPROC ENUMRESTYPEPROCA
560 #define ENUMRESNAMEPROC ENUMRESNAMEPROCA
561 #define ENUMRESLANGPROC ENUMRESLANGPROCA
562 #define DESKTOPENUMPROC DESKTOPENUMPROCA
563 #define ENUMWINDOWSTATIONPROC ENUMWINDOWSTATIONPROCA
564 #define PROPENUMPROCEX PROPENUMPROCEXA
565 #define PROPENUMPROC PROPENUMPROCA
566 #define ICMENUMPROC ICMENUMPROCA
567 #define LOCALE_ENUMPROC LOCALE_ENUMPROCA
568 #define CODEPAGE_ENUMPROC CODEPAGE_ENUMPROCA
569 #define DATEFMT_ENUMPROC DATEFMT_ENUMPROCA
570 #define TIMEFMT_ENUMPROC TIMEFMT_ENUMPROCA
571 #define CALINFO_ENUMPROC CALINFO_ENUMPROCA
572 #define PFNGETPROFILEPATH PFNGETPROFILEPATHA
573 #define PFNRECONCILEPROFILE PFNRECONCILEPROFILEA
574 #define PFNPROCESSPOLICIES PFNPROCESSPOLICIESA
575 #endif /* UNICODE */
576 #endif /* _DISABLE_TIDENTS */
577
578 #define SECURITY_NULL_SID_AUTHORITY     {0,0,0,0,0,0}
579 #define SECURITY_WORLD_SID_AUTHORITY    {0,0,0,0,0,1}
580 #define SECURITY_LOCAL_SID_AUTHORITY    {0,0,0,0,0,2}
581 #define SECURITY_CREATOR_SID_AUTHORITY  {0,0,0,0,0,3}
582 #define SECURITY_NON_UNIQUE_AUTHORITY   {0,0,0,0,0,4}
583 #define SECURITY_NT_AUTHORITY           {0,0,0,0,0,5}
584
585 #define SE_CREATE_TOKEN_NAME              TEXT("SeCreateTokenPrivilege")
586 #define SE_ASSIGNPRIMARYTOKEN_NAME        TEXT("SeAssignPrimaryTokenPrivilege")
587 #define SE_LOCK_MEMORY_NAME               TEXT("SeLockMemoryPrivilege")
588 #define SE_INCREASE_QUOTA_NAME            TEXT("SeIncreaseQuotaPrivilege")
589 #define SE_UNSOLICITED_INPUT_NAME         TEXT("SeUnsolicitedInputPrivilege")
590 #define SE_MACHINE_ACCOUNT_NAME           TEXT("SeMachineAccountPrivilege")
591 #define SE_TCB_NAME                       TEXT("SeTcbPrivilege")
592 #define SE_SECURITY_NAME                  TEXT("SeSecurityPrivilege")
593 #define SE_TAKE_OWNERSHIP_NAME            TEXT("SeTakeOwnershipPrivilege")
594 #define SE_LOAD_DRIVER_NAME               TEXT("SeLoadDriverPrivilege")
595 #define SE_SYSTEM_PROFILE_NAME            TEXT("SeSystemProfilePrivilege")
596 #define SE_SYSTEMTIME_NAME                TEXT("SeSystemtimePrivilege")
597 #define SE_PROF_SINGLE_PROCESS_NAME       TEXT("SeProfileSingleProcessPrivilege")
598 #define SE_INC_BASE_PRIORITY_NAME         TEXT("SeIncreaseBasePriorityPrivilege")
599 #define SE_CREATE_PAGEFILE_NAME           TEXT("SeCreatePagefilePrivilege")
600 #define SE_CREATE_PERMANENT_NAME          TEXT("SeCreatePermanentPrivilege")
601 #define SE_BACKUP_NAME                    TEXT("SeBackupPrivilege")
602 #define SE_RESTORE_NAME                   TEXT("SeRestorePrivilege")
603 #define SE_SHUTDOWN_NAME                  TEXT("SeShutdownPrivilege")
604 #define SE_DEBUG_NAME                     TEXT("SeDebugPrivilege")
605 #define SE_AUDIT_NAME                     TEXT("SeAuditPrivilege")
606 #define SE_SYSTEM_ENVIRONMENT_NAME        TEXT("SeSystemEnvironmentPrivilege")
607 #define SE_CHANGE_NOTIFY_NAME             TEXT("SeChangeNotifyPrivilege")
608 #define SE_REMOTE_SHUTDOWN_NAME           TEXT("SeRemoteShutdownPrivilege")
609
610 typedef BOOL (CALLBACK* LANGUAGEGROUP_ENUMPROCA)(LGRPID, LPSTR, LPSTR, DWORD, LONG_PTR);
611 typedef BOOL (CALLBACK* LANGGROUPLOCALE_ENUMPROCA)(LGRPID, LCID, LPSTR, LONG_PTR);
612 typedef BOOL (CALLBACK* UILANGUAGE_ENUMPROCA)(LPSTR, LONG_PTR);
613 typedef BOOL (CALLBACK* DATEFMT_ENUMPROCEXA)(LPSTR, CALID);
614 typedef BOOL (CALLBACK* CALINFO_ENUMPROCEXA)(LPSTR, CALID);
615
616 typedef BOOL (CALLBACK* LANGUAGEGROUP_ENUMPROCW)(LGRPID, LPWSTR, LPWSTR, DWORD, LONG_PTR);
617 typedef BOOL (CALLBACK* LANGGROUPLOCALE_ENUMPROCW)(LGRPID, LCID, LPWSTR, LONG_PTR);
618 typedef BOOL (CALLBACK* UILANGUAGE_ENUMPROCW)(LPWSTR, LONG_PTR);
619 typedef BOOL (CALLBACK* DATEFMT_ENUMPROCEXW)(LPWSTR, CALID);
620 typedef BOOL (CALLBACK* CALINFO_ENUMPROCEXW)(LPWSTR, CALID);
621 typedef BOOL (CALLBACK* GEO_ENUMPROC)(GEOID);
622
623 #define SERVICES_ACTIVE_DATABASEW      L"ServicesActive"
624 #define SERVICES_FAILED_DATABASEW      L"ServicesFailed"
625 #define SERVICES_ACTIVE_DATABASEA      "ServicesActive"
626 #define SERVICES_FAILED_DATABASEA      "ServicesFailed"
627 #define SC_GROUP_IDENTIFIERW           L'+'
628 #define SC_GROUP_IDENTIFIERA           '+'
629
630 #ifndef _DISABLE_TIDENTS
631 #ifdef UNICODE
632 #define SERVICES_ACTIVE_DATABASE       SERVICES_ACTIVE_DATABASEW
633 #define SERVICES_FAILED_DATABASE       SERVICES_FAILED_DATABASEW
634 #define SC_GROUP_IDENTIFIER            SC_GROUP_IDENTIFIERW
635 #else 
636 #define SERVICES_ACTIVE_DATABASE       SERVICES_ACTIVE_DATABASEA
637 #define SERVICES_FAILED_DATABASE       SERVICES_FAILED_DATABASEA
638 #define SC_GROUP_IDENTIFIER            SC_GROUP_IDENTIFIERA
639 #endif /* UNICODE */
640 #endif /* _DISABLE_TIDENTS */
641
642 #define MM_MAX_NUMAXES      16
643
644 /* ---------------------------------- */
645 /* From ddeml.h in old Cygnus headers */
646
647 typedef void (*CALLB) (void);
648 typedef CALLB PFNCALLBACK;
649
650
651 typedef enum _COMPUTER_NAME_FORMAT {
652     ComputerNameNetBIOS,
653     ComputerNameDnsHostname,
654     ComputerNameDnsDomain,
655     ComputerNameDnsFullyQualified,
656     ComputerNamePhysicalNetBIOS,
657     ComputerNamePhysicalDnsHostname,
658     ComputerNamePhysicalDnsDomain,
659     ComputerNamePhysicalDnsFullyQualified,
660     ComputerNameMax
661 } COMPUTER_NAME_FORMAT ;
662
663 typedef enum _HEAP_INFORMATION_CLASS {
664
665     HeapCompatibilityInformation
666
667 } HEAP_INFORMATION_CLASS;
668
669 typedef enum {
670     LT_DONT_CARE,
671     LT_LOWEST_LATENCY
672 } LATENCY_TIME;
673
674 typedef LONG (CALLBACK *PVECTORED_EXCEPTION_HANDLER)(
675     struct _EXCEPTION_POINTERS *ExceptionInfo
676     );
677
678 typedef
679 VOID
680 (CALLBACK *PAPCFUNC)(
681     ULONG_PTR dwParam
682     );
683
684 #ifdef __cplusplus
685 #define REFGUID const GUID &
686 #else
687 #define REFGUID const GUID *
688 #endif
689
690 typedef DWORD (CALLBACK *PFE_EXPORT_FUNC)(PBYTE pbData,PVOID pvCallbackContext,ULONG ulLength);
691
692 typedef DWORD (CALLBACK *PFE_IMPORT_FUNC)(PBYTE pbData,PVOID pvCallbackContext,PULONG ulLength);
693 typedef VOID (CALLBACK *PFIBER_START_ROUTINE)(
694     LPVOID lpFiberParameter
695     );
696 typedef PFIBER_START_ROUTINE LPFIBER_START_ROUTINE;
697
698 typedef enum _MEMORY_RESOURCE_NOTIFICATION_TYPE {
699     LowMemoryResourceNotification,
700     HighMemoryResourceNotification
701 } MEMORY_RESOURCE_NOTIFICATION_TYPE;
702
703 typedef VOID (CALLBACK* WAITORTIMERCALLBACKFUNC) (PVOID, BOOLEAN );
704 typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK;
705 /* End of stuff from ddeml.h in old Cygnus headers */
706 /* ----------------------------------------------- */
707
708 typedef FARPROC WNDENUMPROC;
709 typedef FARPROC MFENUMPROC;
710 typedef FARPROC ENHMFENUMPROC;
711 typedef DWORD CCSTYLE, *PCCSTYLE, *LPCCSTYLE;
712 typedef DWORD CCSTYLEFLAGA, *PCCSTYLEFLAGA, *LPCCSTYLEFLAGA;
713 #define DECLARE_HANDLE(s) typedef HANDLE s
714 typedef LANGID *PLANGID;
715
716 #endif /* ! defined (RC_INVOKED) */
717
718 #ifdef __cplusplus
719 }
720 #endif /* __cplusplus */
721
722 #endif /* _GNU_H_WINDOWS32_BASE */