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