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)
51 /* typedef ACMDRIVERENUMCB;
52 typedef ACMDRIVERPROC;
53 typedef ACMFILERCHOOSEHOOKPROC;
54 typedef ACMFILTERENUMCB;
55 typedef ACMFILTERTAGENUMCB;
56 typedef ACMFORMATCHOOSEHOOKPROC;
57 typedef ACMFORMATENUMCB;
58 typedef ACMFORMATTAGENUMCB;
61 typedef unsigned short ATOM
;
62 /* Changed from BOOL to WINBOOL to avoid Objective-C conflict */
64 typedef unsigned char BOOLEAN
;
65 typedef unsigned char BYTE
;
66 typedef unsigned long CALTYPE
;
67 typedef unsigned long CALID
;
69 typedef unsigned long COLORREF
;
72 /* Check VOID before defining CHAR, SHORT, and LONG */
84 typedef unsigned int DWORD
; /* was unsigned long */
85 typedef double DWORDLONG
, *PDWORDLONG
;
87 typedef EDITWORDBREAKPROC;
88 typedef ENHMFENUMPROC;
89 typedef ENUMRESLANGPROC;
90 typedef ENUMRESNAMEPROC;
91 typedef ENUMRESTYPEPROC;
94 /* typedef GLOBALHANDLE; */
96 typedef HANDLE HACCEL
;
97 typedef HANDLE HBITMAP
;
98 typedef HANDLE HBRUSH
;
99 typedef HANDLE HCOLORSPACE
;
100 typedef HANDLE HCONV
;
101 typedef HANDLE HCONVLIST
;
102 typedef HANDLE HCURSOR
;
105 typedef HANDLE HDDEDATA
;
106 typedef HANDLE HDESK
;
107 typedef HANDLE HDROP
;
109 typedef HANDLE HENHMETAFILE
;
112 typedef HANDLE HFONT
;
113 typedef HANDLE HGDIOBJ
;
114 typedef HANDLE HGLOBAL
;
115 typedef HANDLE HGLRC
;
116 typedef HANDLE HHOOK
;
117 typedef HANDLE HICON
;
118 typedef HANDLE HIMAGELIST
;
119 typedef HANDLE HINSTANCE
;
120 typedef HANDLE HKEY
, *PHKEY
;
122 typedef HANDLE HLOCAL
;
123 typedef HANDLE HMENU
;
124 typedef HANDLE HMETAFILE
;
125 typedef HANDLE HMODULE
;
126 typedef HANDLE HPALETTE
;
128 typedef HANDLE HRASCONN
;
129 typedef long HRESULT
;
131 typedef HANDLE HRSRC
;
132 typedef HANDLE HSTMT
;
134 typedef HANDLE HWINSTA
;
137 typedef unsigned short LANGID
;
139 typedef DWORD LCTYPE
;
140 /* typedef LOCALHANDLE */
141 typedef double LONGLONG
, *PLONGLONG
;
142 typedef unsigned short *LP
;
144 typedef WINBOOL
*LPBOOL
;
145 typedef BYTE
*LPBYTE
;
146 typedef CONST CHAR
*LPCCH
;
148 typedef COLORREF
*LPCOLORREF
;
149 typedef const char *LPCSTR
;
153 typedef const unsigned short *LPCTSTR
;
155 typedef const char *LPCTSTR
;
158 typedef const unsigned short *LPCWCH
;
159 typedef const unsigned short *LPCWSTR
;
160 typedef DWORD
*LPDWORD
;
161 /* typedef LPFRHOOKPROC; */
162 typedef HANDLE
*LPHANDLE
;
163 /* typedef LPHANDLER_FUNCTION; */
165 typedef long *LPLONG
;
169 typedef unsigned short *LPTCH
;
170 typedef unsigned short *LPTSTR
;
173 typedef char *LPTSTR
;
176 typedef long LRESULT
;
177 typedef void *LPVOID
;
178 typedef const void *LPCVOID
;
179 typedef unsigned short *LPWCH
;
180 typedef unsigned short *LPWORD
;
181 typedef unsigned short *LPWSTR
;
182 typedef unsigned short *PWSTR
;
184 typedef unsigned short *NWPSTR
;
185 typedef WINBOOL
*PWINBOOL
;
186 typedef BYTE
*PBOOLEAN
;
188 typedef const CHAR
*PCCH
;
191 typedef const char *PCSTR
;
192 typedef const unsigned short *PCWCH
;
193 typedef const unsigned short *PCWSTR
;
194 typedef DWORD
*PDWORD
;
195 typedef float *PFLOAT
;
196 typedef HANDLE
*PHANDLE
;
199 /* typedef LCID *PLCID; */
201 typedef short *PSHORT
;
207 typedef unsigned short *PTBYTE
;
208 typedef unsigned short *PTCH
;
209 typedef unsigned short *PTCHAR
;
210 typedef unsigned short *PTSTR
;
212 typedef unsigned char *PTBYTE
;
214 typedef char *PTCHAR
;
218 typedef unsigned char *PUCHAR
;
219 typedef unsigned int *PUINT
;
220 typedef unsigned long *PULONG
;
221 typedef unsigned short *PUSHORT
;
223 typedef unsigned short *PWCH
;
224 typedef unsigned short *PWCHAR
;
225 typedef unsigned short *PWORD
;
231 typedef short RETCODE
;
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; */
240 typedef unsigned short TBYTE
;
241 typedef unsigned short TCHAR
;
242 typedef unsigned short BCHAR
;
244 typedef unsigned char TBYTE
;
249 typedef unsigned char UCHAR
;
250 typedef unsigned int UINT
;
251 typedef unsigned long ULONG
;
252 typedef unsigned short USHORT
;
253 typedef unsigned short WCHAR
;
254 typedef unsigned short WORD
;
255 typedef unsigned int WPARAM
;
256 /* typedef YIELDPROC; */
258 /* Only use __stdcall under WIN32 compiler */
260 #define STDCALL __attribute__ ((stdcall))
261 #define CDECL __attribute((cdecl))
262 #define CALLBACK WINAPI
263 #define PASCAL WINAPI
270 #define WINAPI STDCALL
271 #define APIENTRY STDCALL
279 typedef enum _ACL_INFORMATION_CLASS
{
280 AclRevisionInformation
= 1,
282 } ACL_INFORMATION_CLASS
;
284 typedef enum _MEDIA_TYPE
{
300 #define RASCS_DONE 0x2000
301 #define RASCS_PAUSED 0x1000
302 typedef enum _RASCONNSTATE
{
306 RASCS_DeviceConnected
,
307 RASCS_AllDevicesConnected
,
312 RASCS_AuthChangePassword
,
316 RASCS_ReAuthenticate
,
318 RASCS_PrepareForCallback
,
319 RASCS_WaitForModemReset
,
320 RASCS_WaitForCallback
,
323 RASCS_StartAuthentication
,
324 RASCS_CallbackComplete
,
327 RASCS_Interactive
= RASCS_PAUSED
,
328 RASCS_RetryAuthentication
,
329 RASCS_CallbackSetByCaller
,
330 RASCS_PasswordExpired
,
332 RASCS_Connected
= RASCS_DONE
,
336 typedef enum _RASPROJECTION
{
338 RASP_PppNbf
= 0x803F,
339 RASP_PppIpx
= 0x802B,
343 typedef enum _SECURITY_IMPERSONATION_LEVEL
{
345 SecurityIdentification
,
346 SecurityImpersonation
,
348 } SECURITY_IMPERSONATION_LEVEL
;
350 typedef enum _SID_NAME_USE
{
355 SidTypeWellKnownGroup
,
356 SidTypeDeletedAccount
,
359 } SID_NAME_USE
, *PSID_NAME_USE
;
361 typedef enum _TOKEN_INFORMATION_CLASS
{
370 TokenImpersonationLevel
,
372 } TOKEN_INFORMATION_CLASS
;
374 typedef enum tagTOKEN_TYPE
{
379 #endif /* ! defined (RC_INVOKED) */
384 #define FORWARD_WM_NOTIFY(hwnd, idFrom, pnmhdr, fn) (void)(fn)((hwnd), WM_NOTIFY, (WPARAM)(int)(id), (LPARAM)(NMHDR FAR*)(pnmhdr))
386 #define GetBValue(rgb) ((BYTE) ((rgb) >> 16))
387 #define GetGValue(rgb) ((BYTE) (((WORD) (rgb)) >> 8))
388 #define GetRValue(rgb) ((BYTE) (rgb))
389 #define RGB(r, g ,b) ((DWORD) (((BYTE) (r) | ((WORD) (g) << 8)) | (((DWORD) (BYTE) (b)) << 16)))
391 #define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) (fn)((hwnd), (int)(wParam), (NMHDR FAR*)(lParam))
393 #define HIBYTE(w) ((BYTE) (((WORD) (w) >> 8) & 0xFF))
394 #define HIWORD(l) ((WORD) (((DWORD) (l) >> 16) & 0xFFFF))
395 #define LOBYTE(w) ((BYTE) (w))
396 #define LOWORD(l) ((WORD) (l))
397 #define MAKELONG(a, b) ((LONG) (((WORD) (a)) | ((DWORD) ((WORD) (b))) << 16))
398 #define MAKEWORD(a, b) ((WORD) (((BYTE) (a)) | ((WORD) ((BYTE) (b))) << 8))
400 /* original Cygnus headers also had the following defined: */
401 #define SEXT_HIWORD(l) ((((int)l) >> 16))
402 #define ZEXT_HIWORD(l) ((((unsigned int)l) >> 16))
403 #define SEXT_LOWORD(l) ((int)(short)l)
405 #define INDEXTOOVERLAYMASK(i) ((i) << 8)
406 #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
408 #define MAKEINTATOM(i) (LPTSTR) ((DWORD) ((WORD) (i)))
409 #define MAKEINTRESOURCE(i) (LPTSTR) ((DWORD) ((WORD) (i)))
411 #define MAKELANGID(p, s) ((((WORD) (s)) << 10) | (WORD) (p))
412 #define PRIMARYLANGID(lgid) ((WORD )(lgid) & 0x3ff)
413 #define SUBLANGID(lgid) ((WORD )(lgid) >> 10)
415 #define LANGIDFROMLCID(lcid) ((WORD) (lcid))
416 #define SORTIDFROMLCID(lcid) ((WORD )((((DWORD)(lcid)) & 0x000FFFFF) >> 16))
417 #define MAKELCID(lgid, srtid) ((DWORD)((((DWORD)((WORD)(srtid))) << 16) | ((DWORD)((WORD)(lgid)))))
418 #define MAKELPARAM(l, h) ((LPARAM) MAKELONG(l, h))
419 #define MAKELRESULT(l, h) ((LRESULT) MAKELONG(l, h))
420 #define MAKEPOINTS(l) (*((POINTS FAR *) & (l)))
421 #define MAKEROP4(fore,back) (DWORD)((((back) << 8) & 0xFF000000) | (fore))
422 #define MAKEWPARAM(l, h) ((WPARAM) MAKELONG(l, h))
425 #define max(a, b) (((a) > (b)) ? (a) : (b))
429 #define min(a, b) (((a) < (b)) ? (a) : (b))
432 #define PALETTEINDEX(i) ((COLORREF) (0x01000000 | (DWORD) (WORD) (i)))
433 #define PALETTERGB(r, g, b) (0x02000000 | RGB(r, g, b))
434 #define POINTSTOPOINT(pt, pts) {(pt).x = (SHORT) LOWORD(pts); (pt).y = (SHORT) HIWORD(pts);}
435 #define POINTTOPOINTS(pt) (MAKELONG((short) ((pt).x), (short) ((pt).y)))
437 #define INDEXTOOVERLAYMASK(i) ((i) << 8)
438 #define INDEXTOSTATEIMAGEMASK(i) ((i) << 12)
441 #define TEXT(quote) L##quote
443 #define TEXT(quote) quote
449 Definitions for callback procedures
451 typedef int CALLBACK (*BFFCALLBACK
) (HWND
, UINT
, LPARAM
, LPARAM
);
452 typedef UINT
CALLBACK (*LPCCHOOKPROC
) (HWND
, UINT
, WPARAM
, LPARAM
);
453 typedef UINT
CALLBACK (*LPCFHOOKPROC
) (HWND
, UINT
, WPARAM
, LPARAM
);
454 typedef DWORD
CALLBACK (*PTHREAD_START_ROUTINE
) (LPVOID
);
455 typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE
;
456 typedef DWORD
CALLBACK (*EDITSTREAMCALLBACK
) (DWORD
, LPBYTE
, LONG
, LONG
);
457 typedef UINT
CALLBACK (*LPFRHOOKPROC
) (HWND
, UINT
, WPARAM
, LPARAM
);
458 typedef UINT
CALLBACK (*LPOFNHOOKPROC
) (HWND
, UINT
, WPARAM
, LPARAM
);
459 typedef UINT
CALLBACK (*LPPRINTHOOKPROC
) (HWND
, UINT
, WPARAM
, LPARAM
);
460 typedef UINT
CALLBACK (*LPSETUPHOOKPROC
) (HWND
, UINT
, WPARAM
, LPARAM
);
461 typedef WINBOOL
CALLBACK (*DLGPROC
) (HWND
, UINT
, WPARAM
, LPARAM
);
462 typedef int CALLBACK (*PFNPROPSHEETCALLBACK
) (HWND
, UINT
, LPARAM
);
463 typedef VOID
CALLBACK (*LPSERVICE_MAIN_FUNCTION
) (DWORD
, LPTSTR
);
464 typedef int CALLBACK (*PFNTVCOMPARE
) (LPARAM
, LPARAM
, LPARAM
);
465 typedef LRESULT
CALLBACK (*WNDPROC
) (HWND
, UINT
, WPARAM
, LPARAM
);
466 typedef int CALLBACK (*FARPROC
)(void);
467 typedef FARPROC PROC
;
468 typedef WINBOOL
CALLBACK (*ENUMRESTYPEPROC
) (HANDLE
, LPTSTR
, LONG
);
469 typedef WINBOOL
CALLBACK (*ENUMRESNAMEPROC
) (HANDLE
, LPCTSTR
, LPTSTR
, LONG
);
470 typedef WINBOOL
CALLBACK (*ENUMRESLANGPROC
) (HANDLE
, LPCTSTR
, LPCTSTR
, WORD
, LONG
);
471 typedef FARPROC DESKTOPENUMPROC
;
472 typedef WINBOOL
CALLBACK (*ENUMWINDOWSPROC
) (HWND
, LPARAM
);
473 typedef WINBOOL
CALLBACK (*ENUMWINDOWSTATIONPROC
) (LPTSTR
, LPARAM
);
474 typedef VOID
CALLBACK (*SENDASYNCPROC
) (HWND
, UINT
, DWORD
, LRESULT
);
475 typedef VOID
CALLBACK (*TIMERPROC
) (HWND
, UINT
, UINT
, DWORD
);
476 typedef FARPROC GRAYSTRINGPROC
;
477 typedef WINBOOL
CALLBACK (*DRAWSTATEPROC
) (HDC
, LPARAM
, WPARAM
, int, int);
478 typedef WINBOOL
CALLBACK (*PROPENUMPROCEX
) (HWND
, LPCTSTR
, HANDLE
, DWORD
);
479 typedef WINBOOL
CALLBACK (*PROPENUMPROC
) (HWND
, LPCTSTR
, HANDLE
);
480 typedef LRESULT
CALLBACK (*HOOKPROC
) (int, WPARAM
, LPARAM
);
481 typedef VOID
CALLBACK (*ENUMOBJECTSPROC
) (LPVOID
, LPARAM
);
482 typedef VOID
CALLBACK (*LINEDDAPROC
) (int, int, LPARAM
);
483 typedef WINBOOL
CALLBACK (*ABORTPROC
) (HDC
, int);
484 typedef UINT
CALLBACK (*LPPAGEPAINTHOOK
) (HWND
, UINT
, WPARAM
, LPARAM
);
485 typedef UINT
CALLBACK (*LPPAGESETUPHOOK
) (HWND
, UINT
, WPARAM
, LPARAM
);
486 typedef int CALLBACK (*ICMENUMPROC
) (LPTSTR
, LPARAM
);
487 typedef LONG (*EDITWORDBREAKPROCEX
) (char *, LONG
, BYTE
, INT
);
488 typedef int CALLBACK (*PFNLVCOMPARE
) (LPARAM
, LPARAM
, LPARAM
);
489 typedef WINBOOL
CALLBACK (*LOCALE_ENUMPROC
) (LPTSTR
);
490 typedef WINBOOL
CALLBACK (*CODEPAGE_ENUMPROC
) (LPTSTR
);
491 typedef WINBOOL
CALLBACK (*DATEFMT_ENUMPROC
) (LPTSTR
);
492 typedef WINBOOL
CALLBACK (*TIMEFMT_ENUMPROC
) (LPTSTR
);
493 typedef WINBOOL
CALLBACK (*CALINFO_ENUMPROC
) (LPTSTR
);
494 typedef WINBOOL
CALLBACK (*PHANDLER_ROUTINE
) (DWORD
);
495 typedef WINBOOL
CALLBACK (*LPHANDLER_FUNCTION
) (DWORD
);
496 typedef UINT
CALLBACK (*PFNGETPROFILEPATH
) (LPCTSTR
, LPSTR
, UINT
);
497 typedef UINT
CALLBACK (*PFNRECONCILEPROFILE
) (LPCTSTR
, LPCTSTR
, DWORD
);
498 typedef WINBOOL
CALLBACK (*PFNPROCESSPOLICIES
) (HWND
, LPCTSTR
, LPCTSTR
, LPCTSTR
, DWORD
);
500 #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0}
501 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1}
502 #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2}
503 #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3}
504 #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4}
505 #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5}
507 #define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege")
508 #define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege")
509 #define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege")
510 #define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege")
511 #define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege")
512 #define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")
513 #define SE_TCB_NAME TEXT("SeTcbPrivilege")
514 #define SE_SECURITY_NAME TEXT("SeSecurityPrivilege")
515 #define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege")
516 #define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege")
517 #define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege")
518 #define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege")
519 #define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege")
520 #define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege")
521 #define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")
522 #define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege")
523 #define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
524 #define SE_RESTORE_NAME TEXT("SeRestorePrivilege")
525 #define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege")
526 #define SE_DEBUG_NAME TEXT("SeDebugPrivilege")
527 #define SE_AUDIT_NAME TEXT("SeAuditPrivilege")
528 #define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege")
529 #define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege")
530 #define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege")
532 #define SERVICES_ACTIVE_DATABASEW L"ServicesActive"
533 #define SERVICES_FAILED_DATABASEW L"ServicesFailed"
534 #define SERVICES_ACTIVE_DATABASEA "ServicesActive"
535 #define SERVICES_FAILED_DATABASEA "ServicesFailed"
536 #define SC_GROUP_IDENTIFIERW L'+'
537 #define SC_GROUP_IDENTIFIERA '+'
540 #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEW
541 #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEW
542 #define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERW
544 #define SERVICES_ACTIVE_DATABASE SERVICES_ACTIVE_DATABASEA
545 #define SERVICES_FAILED_DATABASE SERVICES_FAILED_DATABASEA
546 #define SC_GROUP_IDENTIFIER SC_GROUP_IDENTIFIERA
549 /* ---------------------------------- */
550 /* From ddeml.h in old Cygnus headers */
552 typedef void (*CALLB
) (void);
553 typedef CALLB PFNCALLBACK
;
555 typedef WINBOOL SECURITY_CONTEXT_TRACKING_MODE
;
557 /* End of stuff from ddeml.h in old Cygnus headers */
558 /* ----------------------------------------------- */
560 typedef FARPROC WNDENUMPROC
;
561 typedef FARPROC ENHMFENUMPROC
;
562 typedef DWORD CCSTYLE
, *PCCSTYLE
, *LPCCSTYLE
;
563 typedef DWORD CCSTYLEFLAGA
, *PCCSTYLEFLAGA
, *LPCCSTYLEFLAGA
;
564 #define DECLARE_HANDLE(s) typedef HANDLE s
566 #endif /* ! defined (RC_INVOKED) */
570 #endif /* __cplusplus */
572 #endif /* _GNU_H_WINDOWS32_BASE */