branch update for HEAD-2003050101
[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
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
92 #ifndef RC_INVOKED
93
94 /* typedef ACMDRIVERENUMCB;
95 typedef ACMDRIVERPROC;
96 typedef ACMFILERCHOOSEHOOKPROC;
97 typedef ACMFILTERENUMCB;
98 typedef ACMFILTERTAGENUMCB;
99 typedef ACMFORMATCHOOSEHOOKPROC;
100 typedef ACMFORMATENUMCB;
101 typedef ACMFORMATTAGENUMCB;
102 typedef APPLET_PROC;
103 */
104 /* Changed from BOOL to WINBOOL to avoid Objective-C conflict */
105 typedef unsigned long CALTYPE;
106 typedef unsigned long CALID;
107 typedef unsigned long COLORREF;
108
109 /*
110 typedef CTRYID;
111 typedef DLGPROC;
112 */
113 typedef double DWORDLONG, *PDWORDLONG;
114 /*
115 typedef EDITWORDBREAKPROC;
116 typedef ENHMFENUMPROC;
117 typedef ENUMRESLANGPROC;
118 typedef ENUMRESNAMEPROC;
119 typedef ENUMRESTYPEPROC;
120 */
121 typedef float FLOAT;
122 /* typedef GLOBALHANDLE; */
123 typedef HANDLE HACCEL;
124 typedef HANDLE HBITMAP;
125 typedef HANDLE HBRUSH;
126 typedef HANDLE HCOLORSPACE;
127 typedef HANDLE HCONV;
128 typedef HANDLE HCONVLIST;
129 typedef HANDLE HCURSOR;
130 typedef HANDLE HDBC;
131 typedef HANDLE HDC;
132 typedef HANDLE HDDEDATA;
133 typedef HANDLE HDESK;
134 typedef HANDLE HDROP;
135 typedef HANDLE HDWP;
136 typedef HANDLE HENHMETAFILE;
137 typedef HANDLE HENV;
138 typedef int HFILE;
139 typedef HANDLE HFONT;
140 typedef HANDLE HGDIOBJ;
141 typedef HANDLE HGLOBAL;
142 typedef HANDLE HGLRC;
143 typedef HANDLE HHOOK;
144 typedef HANDLE HICON;
145 typedef HANDLE HIMAGELIST;
146 typedef HANDLE HINSTANCE;
147 typedef HANDLE HKEY, *PHKEY;
148 typedef HANDLE HKL;
149 typedef HANDLE HLOCAL;
150 typedef HANDLE HMENU;
151 typedef HANDLE HMETAFILE;
152 typedef HANDLE HMODULE;
153 typedef HANDLE HPALETTE;
154 typedef HANDLE HPEN;
155 typedef HANDLE HRASCONN;
156 typedef long HRESULT;
157 typedef HANDLE HRGN;
158 typedef HANDLE HRSRC;
159 typedef HANDLE HSTMT;
160 typedef HANDLE HSZ;
161 typedef HANDLE HWINSTA;
162 typedef HANDLE HWND;
163 typedef unsigned short LANGID;
164 //typedef DWORD LCID;
165 typedef DWORD LCTYPE;
166 /* typedef LOCALHANDLE */
167 typedef unsigned short *LP;
168 typedef long LPARAM;
169 typedef int WINBOOL;
170 typedef WINBOOL *LPBOOL;
171 typedef CONST CHAR *LPCCH;
172 typedef CHAR *LPCH;
173 typedef COLORREF *LPCOLORREF;
174    
175 #ifdef UNICODE
176 typedef const wchar_t *LPCTSTR;
177 #else
178 typedef const char *LPCTSTR;
179 #endif /* UNICODE */
180
181 typedef const wchar_t *LPCWCH;
182 typedef DWORD *LPDWORD;
183 /* typedef LPFRHOOKPROC; */
184 typedef HANDLE *LPHANDLE;
185 /* typedef LPHANDLER_FUNCTION; */
186 typedef PINT LPINT;
187 typedef PLONG LPLONG;
188
189 typedef long LRESULT;
190 typedef wchar_t *LPWCH;
191 typedef unsigned short *LPWORD;
192 /* typedef NPSTR; */
193 typedef wchar_t *NWPSTR;
194 typedef WINBOOL *PWINBOOL;
195 typedef const CHAR *PCCH;
196 typedef const char *PCSTR;
197 typedef const wchar_t *PCWCH;
198 /* typedef PHKEY; */
199 /* typedef LCID *PLCID; */
200 typedef short *PSHORT;
201 /* typedef PSID; */
202 typedef char *PSTR;
203 typedef char *PSZ;
204
205 #ifdef UNICODE
206 typedef wchar_t *PTBYTE;
207 typedef wchar_t *PTCH;
208 typedef wchar_t *PTCHAR;
209 typedef wchar_t *PTSTR;
210 #else
211 typedef unsigned char *PTBYTE;
212 typedef char *PTCH;
213 typedef char *PTCHAR;
214 typedef char *PTSTR;
215 #endif /* UNICODE */
216
217 /*
218  typedef PWSTR;
219  */
220 typedef DWORD REGSAM;
221
222
223 typedef short RETCODE;
224
225 typedef HANDLE SC_HANDLE;
226 typedef LPVOID  SC_LOCK;
227 typedef SC_HANDLE *LPSC_HANDLE;
228 typedef DWORD SERVICE_STATUS_HANDLE;
229 /* typedef SPHANDLE; */
230
231 #ifdef UNICODE
232 typedef wchar_t TBYTE;
233 #ifndef _TCHAR_DEFINED
234 #define _TCHAR_DEFINED
235 typedef wchar_t TCHAR;
236 #endif /* _TCHAR_DEFINED */
237 typedef wchar_t BCHAR;
238 #else
239 typedef unsigned char TBYTE;
240 #ifndef _TCHAR_DEFINED
241 #define _TCHAR_DEFINED
242 typedef char TCHAR;
243 #endif /* _TCHAR_DEFINED */
244 typedef BYTE BCHAR;
245 #endif /* UNICODE */
246
247 typedef unsigned int WPARAM;
248 /* typedef YIELDPROC; */
249
250 /* Only use __stdcall under WIN32 compiler */
251
252 #define _export
253
254 /*
255   Enumerations
256 */
257  
258  
259 #define RASCS_DONE 0x2000
260 #define RASCS_PAUSED 0x1000
261 typedef enum _RASCONNSTATE { 
262     RASCS_OpenPort = 0, 
263     RASCS_PortOpened, 
264     RASCS_ConnectDevice, 
265     RASCS_DeviceConnected, 
266     RASCS_AllDevicesConnected, 
267     RASCS_Authenticate, 
268     RASCS_AuthNotify, 
269     RASCS_AuthRetry, 
270     RASCS_AuthCallback, 
271     RASCS_AuthChangePassword, 
272     RASCS_AuthProject, 
273     RASCS_AuthLinkSpeed, 
274     RASCS_AuthAck, 
275     RASCS_ReAuthenticate, 
276     RASCS_Authenticated, 
277     RASCS_PrepareForCallback, 
278     RASCS_WaitForModemReset, 
279     RASCS_WaitForCallback,
280     RASCS_Projected, 
281  
282     RASCS_StartAuthentication,  
283     RASCS_CallbackComplete,     
284     RASCS_LogonNetwork,         
285  
286     RASCS_Interactive = RASCS_PAUSED, 
287     RASCS_RetryAuthentication, 
288     RASCS_CallbackSetByCaller, 
289     RASCS_PasswordExpired, 
290  
291     RASCS_Connected = RASCS_DONE, 
292     RASCS_Disconnected 
293 } RASCONNSTATE ; 
294  
295 typedef enum _RASPROJECTION {  
296     RASP_Amb = 0x10000, 
297     RASP_PppNbf = 0x803F, 
298     RASP_PppIpx = 0x802B, 
299     RASP_PppIp = 0x8021 
300 } RASPROJECTION ; 
301   
302 typedef enum _SID_NAME_USE { 
303     SidTypeUser = 1, 
304     SidTypeGroup, 
305     SidTypeDomain, 
306     SidTypeAlias, 
307     SidTypeWellKnownGroup, 
308     SidTypeDeletedAccount, 
309     SidTypeInvalid, 
310     SidTypeUnknown 
311 } SID_NAME_USE, *PSID_NAME_USE; 
312  
313 #endif /* ! defined (RC_INVOKED) */
314
315 /*
316   Macros
317 */
318 #define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn)  (void)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(id),  (LPARAM)(NMHDR FAR*)(pnmhdr)) 
319
320 #define GetBValue(rgb)   ((BYTE) ((rgb) >> 16)) 
321 #define GetGValue(rgb)   ((BYTE) (((WORD) (rgb)) >> 8)) 
322 #define GetRValue(rgb)   ((BYTE) (rgb)) 
323 #define RGB(r, g ,b)  ((DWORD) (((BYTE) (r) | ((WORD) (g) << 8)) | (((DWORD) (BYTE) (b)) << 16))) 
324
325 #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) (fn)((hwnd), (int)(wParam), (NMHDR FAR*)(lParam)) 
326
327 #define HIBYTE(w)   ((BYTE) (((WORD) (w) >> 8) & 0xFF)) 
328 #define HIWORD(l)   ((WORD) (((DWORD) (l) >> 16) & 0xFFFF)) 
329 #define SHIWORD(l)   ((INT16) (((DWORD) (l) >> 16) & 0xFFFF)) 
330 #define LOBYTE(w)   ((BYTE) (w)) 
331 #define LOWORD(l)   ((WORD) (l)) 
332 #define SLOWORD(l)   ((INT16) (l)) 
333 #define MAKELONG(a, b) ((LONG) (((WORD) (a)) | ((DWORD) ((WORD) (b))) << 16)) 
334 #define MAKEWORD(a, b) ((WORD) (((BYTE) (a)) | ((WORD) ((BYTE) (b))) << 8)) 
335
336 /* original Cygnus headers also had the following defined: */
337 #define SEXT_HIWORD(l)     ((((int)l) >> 16))
338 #define ZEXT_HIWORD(l)     ((((unsigned int)l) >> 16))
339 #define SEXT_LOWORD(l)     ((int)(short)l)
340
341 #define INDEXTOOVERLAYMASK(i) ((i) << 8) 
342 #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12) 
343
344 #define MAKEINTATOM(i)   (LPTSTR) ((DWORD) ((WORD) (i))) 
345 #define MAKEINTRESOURCE(i)   (LPTSTR) ((ULONG_PTR) ((WORD) (i)))
346 #define MAKEINTRESOURCEA(i)  (LPSTR)  ((ULONG_PTR) ((WORD) (i)))
347 #define MAKEINTRESOURCEW(i)  (LPWSTR) ((ULONG_PTR) ((WORD) (i)))
348 #define IS_INTRESOURCE(n)    ((((ULONG_PTR) (n)) >> 16) == 0)
349
350 #define MAKELANGID(p, s) ((((WORD) (s)) << 10) | (WORD) (p)) 
351 #define PRIMARYLANGID(lgid)    ((WORD  )(lgid) & 0x3ff) 
352 #define SUBLANGID(lgid)        ((WORD  )(lgid) >> 10) 
353
354 #define LANGIDFROMLCID(lcid)   ((WORD) (lcid)) 
355 #define SORTIDFROMLCID(lcid) ((WORD  )((((DWORD)(lcid)) & 0x000FFFFF) >> 16)) 
356 #define MAKELCID(lgid, srtid)  ((DWORD)((((DWORD)((WORD)(srtid))) << 16) |  ((DWORD)((WORD)(lgid))))) 
357 #define MAKELPARAM(l, h)   ((LPARAM) MAKELONG(l, h)) 
358 #define MAKELRESULT(l, h)   ((LRESULT) MAKELONG(l, h)) 
359 #define MAKEPOINTS(l)   (*((POINTS FAR *) & (l))) 
360 #define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore)) 
361 #define MAKEWPARAM(l, h)   ((WPARAM) MAKELONG(l, h)) 
362
363
364 #define PALETTEINDEX(i) ((COLORREF) (0x01000000 | (DWORD) (WORD) (i))) 
365 #define PALETTERGB(r, g, b)  (0x02000000 | RGB(r, g, b)) 
366 #define POINTSTOPOINT(pt, pts) {(pt).x = (SHORT) LOWORD(pts); (pt).y = (SHORT) HIWORD(pts);} 
367 #define POINTTOPOINTS(pt) (MAKELONG((short) ((pt).x), (short) ((pt).y))) 
368
369 #define INDEXTOOVERLAYMASK(i) ((i) << 8)  
370 #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)  
371
372 #ifdef UNICODE
373 #ifndef _T
374 #define _T(quote)   L##quote 
375 #endif
376 #ifndef _TEXT
377 #define TEXT(quote) L##quote 
378 #endif
379 #else
380 #ifndef _T
381 #define _T(quote)   quote 
382 #endif
383 #ifndef _TEXT
384 #define TEXT(quote) quote
385 #endif
386 #endif
387
388
389 #ifndef RC_INVOKED
390
391 /*
392    Definitions for callback procedures
393 */
394 typedef int CALLBACK (*BFFCALLBACK) (HWND, UINT, LPARAM, LPARAM);
395 typedef UINT CALLBACK (*LPCCHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
396 typedef UINT CALLBACK (*LPCFHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
397 typedef DWORD CALLBACK (*EDITSTREAMCALLBACK) (DWORD, LPBYTE, LONG, LONG);
398 typedef UINT CALLBACK (*LPFRHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
399 typedef UINT CALLBACK (*LPOFNHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
400 typedef UINT CALLBACK (*LPPRINTHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
401 typedef UINT CALLBACK (*LPSETUPHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
402 typedef WINBOOL CALLBACK (*DLGPROC) (HWND, UINT, WPARAM, LPARAM);
403 typedef int CALLBACK (*PFNPROPSHEETCALLBACK) (HWND, UINT, LPARAM);
404 typedef VOID CALLBACK (*LPSERVICE_MAIN_FUNCTION) (DWORD, LPTSTR*);
405 typedef int CALLBACK (*PFNTVCOMPARE) (LPARAM, LPARAM, LPARAM);
406 typedef LRESULT CALLBACK (*WNDPROC) (HWND, UINT, WPARAM, LPARAM);
407 typedef int CALLBACK (*FARPROC)(void);
408 typedef FARPROC PROC;
409 typedef WINBOOL CALLBACK (*ENUMRESTYPEPROC) (HANDLE, LPTSTR, LONG);
410 typedef WINBOOL CALLBACK (*ENUMRESNAMEPROC) (HANDLE, LPCTSTR, LPTSTR, LONG);
411 typedef WINBOOL CALLBACK (*ENUMRESLANGPROC) (HANDLE, LPCTSTR, LPCTSTR, WORD, LONG);
412 typedef FARPROC DESKTOPENUMPROC;
413 typedef WINBOOL CALLBACK (*ENUMWINDOWSPROC) (HWND, LPARAM);
414 typedef WINBOOL CALLBACK (*ENUMWINDOWSTATIONPROC) (LPTSTR, LPARAM);
415 typedef VOID CALLBACK (*SENDASYNCPROC) (HWND, UINT, DWORD, LRESULT);
416 typedef VOID CALLBACK (*TIMERPROC) (HWND, UINT, UINT, DWORD);
417 typedef FARPROC GRAYSTRINGPROC;
418 typedef WINBOOL CALLBACK (*DRAWSTATEPROC) (HDC, LPARAM, WPARAM, int, int);
419 typedef WINBOOL CALLBACK (*PROPENUMPROCEX) (HWND, LPCTSTR, HANDLE, DWORD);
420 typedef WINBOOL CALLBACK (*PROPENUMPROC) (HWND, LPCTSTR, HANDLE);
421 typedef LRESULT CALLBACK (*HOOKPROC) (int, WPARAM, LPARAM);
422 typedef VOID CALLBACK (*ENUMOBJECTSPROC) (LPVOID, LPARAM);
423 typedef VOID CALLBACK (*LINEDDAPROC) (int, int, LPARAM);
424 typedef WINBOOL CALLBACK (*ABORTPROC) (HDC, int);
425 typedef UINT CALLBACK (*LPPAGEPAINTHOOK) (HWND, UINT, WPARAM, LPARAM );
426 typedef UINT CALLBACK (*LPPAGESETUPHOOK) (HWND, UINT, WPARAM, LPARAM );
427 typedef int CALLBACK (*ICMENUMPROC) (LPTSTR, LPARAM);
428 typedef LONG (*EDITWORDBREAKPROCEX) (char *, LONG, BYTE, INT);
429 typedef int CALLBACK (*PFNLVCOMPARE) (LPARAM, LPARAM, LPARAM);
430 typedef WINBOOL CALLBACK (*LOCALE_ENUMPROC) (LPTSTR);
431 typedef WINBOOL CALLBACK (*CODEPAGE_ENUMPROC) (LPTSTR);
432 typedef WINBOOL CALLBACK (*DATEFMT_ENUMPROC) (LPTSTR);
433 typedef WINBOOL CALLBACK (*TIMEFMT_ENUMPROC) (LPTSTR);
434 typedef WINBOOL CALLBACK (*CALINFO_ENUMPROC) (LPTSTR);
435 typedef WINBOOL CALLBACK (*PHANDLER_ROUTINE) (DWORD);
436 typedef VOID CALLBACK (*LPHANDLER_FUNCTION) (DWORD);
437 typedef UINT CALLBACK (*PFNGETPROFILEPATH) (LPCTSTR, LPSTR, UINT);
438 typedef UINT CALLBACK (*PFNRECONCILEPROFILE) (LPCTSTR, LPCTSTR, DWORD);
439 typedef WINBOOL CALLBACK (*PFNPROCESSPOLICIES) (HWND, LPCTSTR, LPCTSTR, LPCTSTR, DWORD);
440
441 #define SECURITY_NULL_SID_AUTHORITY     {0,0,0,0,0,0}
442 #define SECURITY_WORLD_SID_AUTHORITY    {0,0,0,0,0,1}
443 #define SECURITY_LOCAL_SID_AUTHORITY    {0,0,0,0,0,2}
444 #define SECURITY_CREATOR_SID_AUTHORITY  {0,0,0,0,0,3}
445 #define SECURITY_NON_UNIQUE_AUTHORITY   {0,0,0,0,0,4}
446 #define SECURITY_NT_AUTHORITY           {0,0,0,0,0,5}
447
448 #define SE_CREATE_TOKEN_NAME              TEXT("SeCreateTokenPrivilege")
449 #define SE_ASSIGNPRIMARYTOKEN_NAME        TEXT("SeAssignPrimaryTokenPrivilege")
450 #define SE_LOCK_MEMORY_NAME               TEXT("SeLockMemoryPrivilege")
451 #define SE_INCREASE_QUOTA_NAME            TEXT("SeIncreaseQuotaPrivilege")
452 #define SE_UNSOLICITED_INPUT_NAME         TEXT("SeUnsolicitedInputPrivilege")
453 #define SE_MACHINE_ACCOUNT_NAME           TEXT("SeMachineAccountPrivilege")
454 #define SE_TCB_NAME                       TEXT("SeTcbPrivilege")
455 #define SE_SECURITY_NAME                  TEXT("SeSecurityPrivilege")
456 #define SE_TAKE_OWNERSHIP_NAME            TEXT("SeTakeOwnershipPrivilege")
457 #define SE_LOAD_DRIVER_NAME               TEXT("SeLoadDriverPrivilege")
458 #define SE_SYSTEM_PROFILE_NAME            TEXT("SeSystemProfilePrivilege")
459 #define SE_SYSTEMTIME_NAME                TEXT("SeSystemtimePrivilege")
460 #define SE_PROF_SINGLE_PROCESS_NAME       TEXT("SeProfileSingleProcessPrivilege")
461 #define SE_INC_BASE_PRIORITY_NAME         TEXT("SeIncreaseBasePriorityPrivilege")
462 #define SE_CREATE_PAGEFILE_NAME           TEXT("SeCreatePagefilePrivilege")
463 #define SE_CREATE_PERMANENT_NAME          TEXT("SeCreatePermanentPrivilege")
464 #define SE_BACKUP_NAME                    TEXT("SeBackupPrivilege")
465 #define SE_RESTORE_NAME                   TEXT("SeRestorePrivilege")
466 #define SE_SHUTDOWN_NAME                  TEXT("SeShutdownPrivilege")
467 #define SE_DEBUG_NAME                     TEXT("SeDebugPrivilege")
468 #define SE_AUDIT_NAME                     TEXT("SeAuditPrivilege")
469 #define SE_SYSTEM_ENVIRONMENT_NAME        TEXT("SeSystemEnvironmentPrivilege")
470 #define SE_CHANGE_NOTIFY_NAME             TEXT("SeChangeNotifyPrivilege")
471 #define SE_REMOTE_SHUTDOWN_NAME           TEXT("SeRemoteShutdownPrivilege")
472
473 #define SERVICES_ACTIVE_DATABASEW      L"ServicesActive"
474 #define SERVICES_FAILED_DATABASEW      L"ServicesFailed"
475 #define SERVICES_ACTIVE_DATABASEA      "ServicesActive"
476 #define SERVICES_FAILED_DATABASEA      "ServicesFailed"
477 #define SC_GROUP_IDENTIFIERW           L'+'
478 #define SC_GROUP_IDENTIFIERA           '+'
479
480 #ifdef UNICODE
481 #define SERVICES_ACTIVE_DATABASE       SERVICES_ACTIVE_DATABASEW
482 #define SERVICES_FAILED_DATABASE       SERVICES_FAILED_DATABASEW
483 #define SC_GROUP_IDENTIFIER            SC_GROUP_IDENTIFIERW
484 #else 
485 #define SERVICES_ACTIVE_DATABASE       SERVICES_ACTIVE_DATABASEA
486 #define SERVICES_FAILED_DATABASE       SERVICES_FAILED_DATABASEA
487 #define SC_GROUP_IDENTIFIER            SC_GROUP_IDENTIFIERA
488 #endif /* UNICODE */
489
490 /* ---------------------------------- */
491 /* From ddeml.h in old Cygnus headers */
492
493 typedef void (*CALLB) (void);
494 typedef CALLB PFNCALLBACK;
495
496
497 /* End of stuff from ddeml.h in old Cygnus headers */
498 /* ----------------------------------------------- */
499
500 typedef FARPROC WNDENUMPROC;
501 typedef FARPROC MFENUMPROC;
502 typedef FARPROC ENHMFENUMPROC;
503 typedef DWORD CCSTYLE, *PCCSTYLE, *LPCCSTYLE;
504 typedef DWORD CCSTYLEFLAGA, *PCCSTYLEFLAGA, *LPCCSTYLEFLAGA;
505 #define DECLARE_HANDLE(s) typedef HANDLE s
506
507 #endif /* ! defined (RC_INVOKED) */
508
509 #ifdef __cplusplus
510 }
511 #endif /* __cplusplus */
512
513 #endif /* _GNU_H_WINDOWS32_BASE */