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