6 Copyright (C) 1996, 1997 Free Software Foundation, Inc.
8 Author: Scott Christley <scottc@net-community.com>
10 This file is part of the Windows32 API Library.
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.
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.
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.
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.
31 #ifndef _GNU_H_WINDOWS32_BASE
32 #define _GNU_H_WINDOWS32_BASE
36 #endif /* __cplusplus */
42 #define NULL ((void *)0)
46 #include <ntos/types.h>
48 /* Check VOID before defining CHAR, SHORT, and LONG */
61 #define STDCALL __attribute__ ((stdcall))
64 #define CDECL __attribute((cdecl))
66 #define CALLBACK WINAPI
78 #define WINAPI STDCALL
79 #define APIENTRY STDCALL
85 typedef wchar_t *LPTCH;
86 typedef wchar_t *LPTSTR;
94 /* typedef ACMDRIVERENUMCB;
95 typedef ACMDRIVERPROC;
96 typedef ACMFILERCHOOSEHOOKPROC;
97 typedef ACMFILTERENUMCB;
98 typedef ACMFILTERTAGENUMCB;
99 typedef ACMFORMATCHOOSEHOOKPROC;
100 typedef ACMFORMATENUMCB;
101 typedef ACMFORMATTAGENUMCB;
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;
113 typedef double DWORDLONG, *PDWORDLONG;
115 typedef EDITWORDBREAKPROC;
116 typedef ENHMFENUMPROC;
117 typedef ENUMRESLANGPROC;
118 typedef ENUMRESNAMEPROC;
119 typedef ENUMRESTYPEPROC;
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;
132 typedef HANDLE HDDEDATA;
133 typedef HANDLE HDESK;
134 typedef HANDLE HDROP;
136 typedef HANDLE HENHMETAFILE;
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;
149 typedef HANDLE HLOCAL;
150 typedef HANDLE HMENU;
151 typedef HANDLE HMETAFILE;
152 typedef HANDLE HMODULE;
153 typedef HANDLE HPALETTE;
155 typedef HANDLE HRASCONN;
156 typedef long HRESULT;
158 typedef HANDLE HRSRC;
159 typedef HANDLE HSTMT;
161 typedef HANDLE HWINSTA;
163 typedef unsigned short LANGID;
164 //typedef DWORD LCID;
165 typedef DWORD LCTYPE;
166 /* typedef LOCALHANDLE */
167 typedef unsigned short *LP;
170 typedef WINBOOL *LPBOOL;
171 typedef CONST CHAR *LPCCH;
173 typedef COLORREF *LPCOLORREF;
176 typedef const wchar_t *LPCTSTR;
178 typedef const char *LPCTSTR;
181 typedef const wchar_t *LPCWCH;
182 typedef DWORD *LPDWORD;
183 /* typedef LPFRHOOKPROC; */
184 typedef HANDLE *LPHANDLE;
185 /* typedef LPHANDLER_FUNCTION; */
187 typedef PLONG LPLONG;
189 typedef long LRESULT;
190 typedef wchar_t *LPWCH;
191 typedef unsigned short *LPWORD;
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;
199 /* typedef LCID *PLCID; */
200 typedef short *PSHORT;
206 typedef wchar_t *PTBYTE;
207 typedef wchar_t *PTCH;
208 typedef wchar_t *PTCHAR;
209 typedef wchar_t *PTSTR;
211 typedef unsigned char *PTBYTE;
213 typedef char *PTCHAR;
220 typedef DWORD REGSAM;
223 typedef short RETCODE;
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; */
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;
239 typedef unsigned char TBYTE;
240 #ifndef _TCHAR_DEFINED
241 #define _TCHAR_DEFINED
243 #endif /* _TCHAR_DEFINED */
247 typedef unsigned int WPARAM;
248 /* typedef YIELDPROC; */
250 /* Only use __stdcall under WIN32 compiler */
259 #define RASCS_DONE 0x2000
260 #define RASCS_PAUSED 0x1000
261 typedef enum _RASCONNSTATE {
265 RASCS_DeviceConnected,
266 RASCS_AllDevicesConnected,
271 RASCS_AuthChangePassword,
275 RASCS_ReAuthenticate,
277 RASCS_PrepareForCallback,
278 RASCS_WaitForModemReset,
279 RASCS_WaitForCallback,
282 RASCS_StartAuthentication,
283 RASCS_CallbackComplete,
286 RASCS_Interactive = RASCS_PAUSED,
287 RASCS_RetryAuthentication,
288 RASCS_CallbackSetByCaller,
289 RASCS_PasswordExpired,
291 RASCS_Connected = RASCS_DONE,
295 typedef enum _RASPROJECTION {
297 RASP_PppNbf = 0x803F,
298 RASP_PppIpx = 0x802B,
302 typedef enum _SID_NAME_USE {
307 SidTypeWellKnownGroup,
308 SidTypeDeletedAccount,
311 } SID_NAME_USE, *PSID_NAME_USE;
313 #endif /* ! defined (RC_INVOKED) */
318 #define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) (void)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(id), (LPARAM)(NMHDR FAR*)(pnmhdr))
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)))
325 #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) (fn)((hwnd), (int)(wParam), (NMHDR FAR*)(lParam))
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))
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)
341 #define INDEXTOOVERLAYMASK(i) ((i) << 8)
342 #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
344 #define MAKEINTATOM(i) (LPTSTR) ((DWORD) ((WORD) (i)))
345 #define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i)))
347 #define MAKELANGID(p, s) ((((WORD) (s)) << 10) | (WORD) (p))
348 #define PRIMARYLANGID(lgid) ((WORD )(lgid) & 0x3ff)
349 #define SUBLANGID(lgid) ((WORD )(lgid) >> 10)
351 #define LANGIDFROMLCID(lcid) ((WORD) (lcid))
352 #define SORTIDFROMLCID(lcid) ((WORD )((((DWORD)(lcid)) & 0x000FFFFF) >> 16))
353 #define MAKELCID(lgid, srtid) ((DWORD)((((DWORD)((WORD)(srtid))) << 16) | ((DWORD)((WORD)(lgid)))))
354 #define MAKELPARAM(l, h) ((LPARAM) MAKELONG(l, h))
355 #define MAKELRESULT(l, h) ((LRESULT) MAKELONG(l, h))
356 #define MAKEPOINTS(l) (*((POINTS FAR *) & (l)))
357 #define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore))
358 #define MAKEWPARAM(l, h) ((WPARAM) MAKELONG(l, h))
361 #define PALETTEINDEX(i) ((COLORREF) (0x01000000 | (DWORD) (WORD) (i)))
362 #define PALETTERGB(r, g, b) (0x02000000 | RGB(r, g, b))
363 #define POINTSTOPOINT(pt, pts) {(pt).x = (SHORT) LOWORD(pts); (pt).y = (SHORT) HIWORD(pts);}
364 #define POINTTOPOINTS(pt) (MAKELONG((short) ((pt).x), (short) ((pt).y)))
366 #define INDEXTOOVERLAYMASK(i) ((i) << 8)
367 #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
371 #define _T(quote) L##quote
374 #define TEXT(quote) L##quote
378 #define _T(quote) quote
381 #define TEXT(quote) quote
389 Definitions for callback procedures
391 typedef int CALLBACK (*BFFCALLBACK) (HWND, UINT, LPARAM, LPARAM);
392 typedef UINT CALLBACK (*LPCCHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
393 typedef UINT CALLBACK (*LPCFHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
394 typedef DWORD CALLBACK (*EDITSTREAMCALLBACK) (DWORD, LPBYTE, LONG, LONG);
395 typedef UINT CALLBACK (*LPFRHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
396 typedef UINT CALLBACK (*LPOFNHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
397 typedef UINT CALLBACK (*LPPRINTHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
398 typedef UINT CALLBACK (*LPSETUPHOOKPROC) (HWND, UINT, WPARAM, LPARAM);
399 typedef WINBOOL CALLBACK (*DLGPROC) (HWND, UINT, WPARAM, LPARAM);
400 typedef int CALLBACK (*PFNPROPSHEETCALLBACK) (HWND, UINT, LPARAM);
401 typedef VOID CALLBACK (*LPSERVICE_MAIN_FUNCTION) (DWORD, LPTSTR*);
402 typedef int CALLBACK (*PFNTVCOMPARE) (LPARAM, LPARAM, LPARAM);
403 typedef LRESULT CALLBACK (*WNDPROC) (HWND, UINT, WPARAM, LPARAM);
404 typedef int CALLBACK (*FARPROC)(void);
405 typedef FARPROC PROC;
406 typedef WINBOOL CALLBACK (*ENUMRESTYPEPROC) (HANDLE, LPTSTR, LONG);
407 typedef WINBOOL CALLBACK (*ENUMRESNAMEPROC) (HANDLE, LPCTSTR, LPTSTR, LONG);
408 typedef WINBOOL CALLBACK (*ENUMRESLANGPROC) (HANDLE, LPCTSTR, LPCTSTR, WORD, LONG);
409 typedef FARPROC DESKTOPENUMPROC;
410 typedef WINBOOL CALLBACK (*ENUMWINDOWSPROC) (HWND, LPARAM);
411 typedef WINBOOL CALLBACK (*ENUMWINDOWSTATIONPROC) (LPTSTR, LPARAM);
412 typedef VOID CALLBACK (*SENDASYNCPROC) (HWND, UINT, DWORD, LRESULT);
413 typedef VOID CALLBACK (*TIMERPROC) (HWND, UINT, UINT, DWORD);
414 typedef FARPROC GRAYSTRINGPROC;
415 typedef WINBOOL CALLBACK (*DRAWSTATEPROC) (HDC, LPARAM, WPARAM, int, int);
416 typedef WINBOOL CALLBACK (*PROPENUMPROCEX) (HWND, LPCTSTR, HANDLE, DWORD);
417 typedef WINBOOL CALLBACK (*PROPENUMPROC) (HWND, LPCTSTR, HANDLE);
418 typedef LRESULT CALLBACK (*HOOKPROC) (int, WPARAM, LPARAM);
419 typedef VOID CALLBACK (*ENUMOBJECTSPROC) (LPVOID, LPARAM);
420 typedef VOID CALLBACK (*LINEDDAPROC) (int, int, LPARAM);
421 typedef WINBOOL CALLBACK (*ABORTPROC) (HDC, int);
422 typedef UINT CALLBACK (*LPPAGEPAINTHOOK) (HWND, UINT, WPARAM, LPARAM );
423 typedef UINT CALLBACK (*LPPAGESETUPHOOK) (HWND, UINT, WPARAM, LPARAM );
424 typedef int CALLBACK (*ICMENUMPROC) (LPTSTR, LPARAM);
425 typedef LONG (*EDITWORDBREAKPROCEX) (char *, LONG, BYTE, INT);
426 typedef int CALLBACK (*PFNLVCOMPARE) (LPARAM, LPARAM, LPARAM);
427 typedef WINBOOL CALLBACK (*LOCALE_ENUMPROC) (LPTSTR);
428 typedef WINBOOL CALLBACK (*CODEPAGE_ENUMPROC) (LPTSTR);
429 typedef WINBOOL CALLBACK (*DATEFMT_ENUMPROC) (LPTSTR);
430 typedef WINBOOL CALLBACK (*TIMEFMT_ENUMPROC) (LPTSTR);
431 typedef WINBOOL CALLBACK (*CALINFO_ENUMPROC) (LPTSTR);
432 typedef WINBOOL CALLBACK (*PHANDLER_ROUTINE) (DWORD);
433 typedef VOID CALLBACK (*LPHANDLER_FUNCTION) (DWORD);
434 typedef UINT CALLBACK (*PFNGETPROFILEPATH) (LPCTSTR, LPSTR, UINT);
435 typedef UINT CALLBACK (*PFNRECONCILEPROFILE) (LPCTSTR, LPCTSTR, DWORD);
436 typedef WINBOOL CALLBACK (*PFNPROCESSPOLICIES) (HWND, LPCTSTR, LPCTSTR, LPCTSTR, DWORD);
438 #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
439 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
440 #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
441 #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
442 #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
443 #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
445 #define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege")
446 #define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege")
447 #define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege")
448 #define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege")
449 #define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege")
450 #define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")
451 #define SE_TCB_NAME TEXT("SeTcbPrivilege")
452 #define SE_SECURITY_NAME TEXT("SeSecurityPrivilege")
453 #define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege")
454 #define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege")
455 #define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege")
456 #define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")
457 #define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege")
458 #define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege")
459 #define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")
460 #define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege")
461 #define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
462 #define SE_RESTORE_NAME TEXT("SeRestorePrivilege")
463 #define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege")
464 #define SE_DEBUG_NAME TEXT("SeDebugPrivilege")
465 #define SE_AUDIT_NAME TEXT("SeAuditPrivilege")
466 #define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege")
467 #define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege")
468 #define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege")
470 #define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
471 #define SERVICES_FAILED_DATABASEW L"ServicesFailed"
472 #define SERVICES_ACTIVE_DATABASEA "ServicesActive"
473 #define SERVICES_FAILED_DATABASEA "ServicesFailed"
474 #define SC_GROUP_IDENTIFIERW L'+'
475 #define SC_GROUP_IDENTIFIERA '+'
478 #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW
479 #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW
480 #define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW
482 #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA
483 #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA
484 #define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA
487 /* ---------------------------------- */
488 /* From ddeml.h in old Cygnus headers */
490 typedef void (*CALLB) (void);
491 typedef CALLB PFNCALLBACK;
494 /* End of stuff from ddeml.h in old Cygnus headers */
495 /* ----------------------------------------------- */
497 typedef FARPROC WNDENUMPROC;
498 typedef FARPROC MFENUMPROC;
499 typedef FARPROC ENHMFENUMPROC;
500 typedef DWORD CCSTYLE, *PCCSTYLE, *LPCCSTYLE;
501 typedef DWORD CCSTYLEFLAGA, *PCCSTYLEFLAGA, *LPCCSTYLEFLAGA;
502 #define DECLARE_HANDLE(s) typedef HANDLE s
504 #endif /* ! defined (RC_INVOKED) */
508 #endif /* __cplusplus */
510 #endif /* _GNU_H_WINDOWS32_BASE */