zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

minwinbase.h (11233B) - Raw


      1 #ifndef _MINWINBASE_
      2 #define _MINWINBASE_
      3 
      4 #ifdef __cplusplus
      5 extern "C" {
      6 #endif
      7 
      8 #define MoveMemory RtlMoveMemory
      9 #define CopyMemory RtlCopyMemory
     10 #define FillMemory RtlFillMemory
     11 #define ZeroMemory RtlZeroMemory
     12 
     13   typedef struct _SECURITY_ATTRIBUTES {
     14     DWORD nLength;
     15     LPVOID lpSecurityDescriptor;
     16     WINBOOL bInheritHandle;
     17   } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
     18 
     19   typedef struct _OVERLAPPED {
     20     ULONG_PTR Internal;
     21     ULONG_PTR InternalHigh;
     22     __C89_NAMELESS union {
     23         struct {
     24             DWORD Offset;
     25             DWORD OffsetHigh;
     26         } DUMMYSTRUCTNAME;
     27         PVOID Pointer;
     28     } DUMMYUNIONNAME;
     29     HANDLE hEvent;
     30   } OVERLAPPED, *LPOVERLAPPED;
     31 
     32   typedef struct _OVERLAPPED_ENTRY {
     33     ULONG_PTR lpCompletionKey;
     34     LPOVERLAPPED lpOverlapped;
     35     ULONG_PTR Internal;
     36     DWORD dwNumberOfBytesTransferred;
     37   } OVERLAPPED_ENTRY, *LPOVERLAPPED_ENTRY;
     38 
     39 #ifndef _FILETIME_
     40 #define _FILETIME_
     41   typedef struct _FILETIME {
     42     DWORD dwLowDateTime;
     43     DWORD dwHighDateTime;
     44   } FILETIME,*PFILETIME,*LPFILETIME;
     45 #endif
     46 
     47 #ifndef _SYSTEMTIME_
     48 #define _SYSTEMTIME_
     49   typedef struct _SYSTEMTIME {
     50     WORD wYear;
     51     WORD wMonth;
     52     WORD wDayOfWeek;
     53     WORD wDay;
     54     WORD wHour;
     55     WORD wMinute;
     56     WORD wSecond;
     57     WORD wMilliseconds;
     58   } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
     59 #endif
     60 
     61   typedef struct _WIN32_FIND_DATAA {
     62     DWORD dwFileAttributes;
     63     FILETIME ftCreationTime;
     64     FILETIME ftLastAccessTime;
     65     FILETIME ftLastWriteTime;
     66     DWORD nFileSizeHigh;
     67     DWORD nFileSizeLow;
     68     DWORD dwReserved0;
     69     DWORD dwReserved1;
     70     CHAR cFileName[MAX_PATH];
     71     CHAR cAlternateFileName[14];
     72 #ifdef _MAC
     73     DWORD dwFileType;
     74     DWORD dwCreatorType;
     75     WORD  wFinderFlags;
     76 #endif
     77   } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
     78 
     79   typedef struct _WIN32_FIND_DATAW {
     80     DWORD dwFileAttributes;
     81     FILETIME ftCreationTime;
     82     FILETIME ftLastAccessTime;
     83     FILETIME ftLastWriteTime;
     84     DWORD nFileSizeHigh;
     85     DWORD nFileSizeLow;
     86     DWORD dwReserved0;
     87     DWORD dwReserved1;
     88     WCHAR cFileName[MAX_PATH];
     89     WCHAR cAlternateFileName[14];
     90 #ifdef _MAC
     91     DWORD dwFileType;
     92     DWORD dwCreatorType;
     93     WORD  wFinderFlags;
     94 #endif
     95   } WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;
     96 
     97   __MINGW_TYPEDEF_AW(WIN32_FIND_DATA)
     98   __MINGW_TYPEDEF_AW(PWIN32_FIND_DATA)
     99   __MINGW_TYPEDEF_AW(LPWIN32_FIND_DATA)
    100 
    101 #if _WIN32_WINNT >= 0x0400
    102   typedef enum _FINDEX_INFO_LEVELS {
    103     FindExInfoStandard,
    104     FindExInfoBasic,
    105     FindExInfoMaxInfoLevel
    106   } FINDEX_INFO_LEVELS;
    107 
    108 #define FIND_FIRST_EX_CASE_SENSITIVE 0x00000001
    109 #define FIND_FIRST_EX_LARGE_FETCH 0x00000002
    110 #if NTDDI_VERSION >= 0x0A000005
    111 #define FIND_FIRST_EX_ON_DISK_ENTRIES_ONLY  0x00000004
    112 #endif
    113 
    114   typedef enum _FINDEX_SEARCH_OPS {
    115     FindExSearchNameMatch,
    116     FindExSearchLimitToDirectories,
    117     FindExSearchLimitToDevices,
    118     FindExSearchMaxSearchOp
    119   } FINDEX_SEARCH_OPS;
    120 #endif
    121 
    122 #if _WIN32_WINNT >= 0x0400
    123 #if NTDDI_VERSION >= NTDDI_WIN10_RS3
    124   typedef enum _READ_DIRECTORY_NOTIFY_INFORMATION_CLASS {
    125     ReadDirectoryNotifyInformation = 1,
    126     ReadDirectoryNotifyExtendedInformation = 2
    127 #if NTDDI_VERSION >= NTDDI_WIN10_NI
    128     ,ReadDirectoryNotifyFullInformation
    129 #endif
    130     ,ReadDirectoryNotifyMaximumInformation
    131   } READ_DIRECTORY_NOTIFY_INFORMATION_CLASS, *PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS;
    132 #endif
    133 #endif /* _WIN32_WINNT >= 0x0400 */
    134 
    135   typedef enum _GET_FILEEX_INFO_LEVELS {
    136     GetFileExInfoStandard,
    137     GetFileExMaxInfoLevel
    138   } GET_FILEEX_INFO_LEVELS;
    139 
    140 #if _WIN32_WINNT >= 0x0600
    141   typedef enum _FILE_INFO_BY_HANDLE_CLASS {
    142     FileBasicInfo /* is zero? */,
    143     FileStandardInfo,
    144     FileNameInfo,
    145     FileRenameInfo,
    146     FileDispositionInfo,
    147     FileAllocationInfo,
    148     FileEndOfFileInfo,
    149     FileStreamInfo,
    150     FileCompressionInfo,
    151     FileAttributeTagInfo,
    152     FileIdBothDirectoryInfo,
    153     FileIdBothDirectoryRestartInfo,
    154     FileIoPriorityHintInfo,
    155     FileRemoteProtocolInfo,
    156     FileFullDirectoryInfo,
    157     FileFullDirectoryRestartInfo,
    158 #if _WIN32_WINNT >= 0x0602
    159     FileStorageInfo,
    160     FileAlignmentInfo,
    161     FileIdInfo,
    162     FileIdExtdDirectoryInfo,
    163     FileIdExtdDirectoryRestartInfo,
    164 #endif
    165 #if NTDDI_VERSION >= 0x0A000002
    166     FileDispositionInfoEx,
    167     FileRenameInfoEx,
    168 #endif
    169 #if NTDDI_VERSION >= 0x0A000007
    170     FileCaseSensitiveInfo,
    171     FileNormalizedNameInfo,
    172 #endif
    173     MaximumFileInfoByHandleClass
    174   } FILE_INFO_BY_HANDLE_CLASS, *PFILE_INFO_BY_HANDLE_CLASS;
    175 #endif
    176 
    177 #if NTDDI_VERSION >= NTDDI_WIN11_ZN
    178   typedef enum _FILE_INFO_BY_NAME_CLASS {
    179     FileStatByNameInfo,
    180     FileStatLxByNameInfo,
    181     FileCaseSensitiveByNameInfo,
    182     FileStatBasicByNameInfo,
    183     MaximumFileInfoByNameClass
    184   } FILE_INFO_BY_NAME_CLASS, *PFILE_INFO_BY_NAME_CLASS;
    185 #endif
    186 
    187   typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
    188   typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION;
    189   typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION;
    190   typedef RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG;
    191   typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG;
    192   typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG;
    193 
    194   typedef VOID (WINAPI *LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped);
    195 
    196 #define LOCKFILE_FAIL_IMMEDIATELY 0x1
    197 #define LOCKFILE_EXCLUSIVE_LOCK 0x2
    198 
    199   typedef struct _PROCESS_HEAP_ENTRY {
    200     PVOID lpData;
    201     DWORD cbData;
    202     BYTE cbOverhead;
    203     BYTE iRegionIndex;
    204     WORD wFlags;
    205     __C89_NAMELESS union {
    206         struct {
    207             HANDLE hMem;
    208             DWORD dwReserved[3];
    209         } Block;
    210         struct {
    211             DWORD dwCommittedSize;
    212             DWORD dwUnCommittedSize;
    213             LPVOID lpFirstBlock;
    214             LPVOID lpLastBlock;
    215         } Region;
    216     } DUMMYUNIONNAME;
    217   } PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY,*PPROCESS_HEAP_ENTRY;
    218 
    219 #define PROCESS_HEAP_REGION 0x1
    220 #define PROCESS_HEAP_UNCOMMITTED_RANGE 0x2
    221 #define PROCESS_HEAP_ENTRY_BUSY 0x4
    222 #define PROCESS_HEAP_SEG_ALLOC 0x8
    223 #define PROCESS_HEAP_ENTRY_MOVEABLE 0x10
    224 #define PROCESS_HEAP_ENTRY_DDESHARE 0x20
    225 
    226   typedef struct _REASON_CONTEXT {
    227     ULONG Version;
    228     DWORD Flags;
    229     union {
    230         struct {
    231             HMODULE LocalizedReasonModule;
    232             ULONG LocalizedReasonId;
    233             ULONG ReasonStringCount;
    234             LPWSTR *ReasonStrings;
    235         } Detailed;
    236         LPWSTR SimpleReasonString;
    237     } Reason;
    238   } REASON_CONTEXT, *PREASON_CONTEXT;
    239 
    240 #define EXCEPTION_DEBUG_EVENT 1
    241 #define CREATE_THREAD_DEBUG_EVENT 2
    242 #define CREATE_PROCESS_DEBUG_EVENT 3
    243 #define EXIT_THREAD_DEBUG_EVENT 4
    244 #define EXIT_PROCESS_DEBUG_EVENT 5
    245 #define LOAD_DLL_DEBUG_EVENT 6
    246 #define UNLOAD_DLL_DEBUG_EVENT 7
    247 #define OUTPUT_DEBUG_STRING_EVENT 8
    248 #define RIP_EVENT 9
    249 
    250   typedef DWORD (WINAPI *PTHREAD_START_ROUTINE) (LPVOID lpThreadParameter);
    251   typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
    252 
    253   typedef LPVOID (WINAPI *PENCLAVE_ROUTINE) (LPVOID lpThreadParameter);
    254   typedef PENCLAVE_ROUTINE LPENCLAVE_ROUTINE;
    255 
    256   typedef struct _EXCEPTION_DEBUG_INFO {
    257     EXCEPTION_RECORD ExceptionRecord;
    258     DWORD dwFirstChance;
    259   } EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO;
    260 
    261   typedef struct _CREATE_THREAD_DEBUG_INFO {
    262     HANDLE hThread;
    263     LPVOID lpThreadLocalBase;
    264     LPTHREAD_START_ROUTINE lpStartAddress;
    265   } CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO;
    266 
    267   typedef struct _CREATE_PROCESS_DEBUG_INFO {
    268     HANDLE hFile;
    269     HANDLE hProcess;
    270     HANDLE hThread;
    271     LPVOID lpBaseOfImage;
    272     DWORD dwDebugInfoFileOffset;
    273     DWORD nDebugInfoSize;
    274     LPVOID lpThreadLocalBase;
    275     LPTHREAD_START_ROUTINE lpStartAddress;
    276     LPVOID lpImageName;
    277     WORD fUnicode;
    278   } CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO;
    279 
    280   typedef struct _EXIT_THREAD_DEBUG_INFO {
    281     DWORD dwExitCode;
    282   } EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO;
    283 
    284   typedef struct _EXIT_PROCESS_DEBUG_INFO {
    285     DWORD dwExitCode;
    286   } EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO;
    287 
    288   typedef struct _LOAD_DLL_DEBUG_INFO {
    289     HANDLE hFile;
    290     LPVOID lpBaseOfDll;
    291     DWORD dwDebugInfoFileOffset;
    292     DWORD nDebugInfoSize;
    293     LPVOID lpImageName;
    294     WORD fUnicode;
    295   } LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO;
    296 
    297   typedef struct _UNLOAD_DLL_DEBUG_INFO {
    298     LPVOID lpBaseOfDll;
    299   } UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO;
    300 
    301   typedef struct _OUTPUT_DEBUG_STRING_INFO {
    302     LPSTR lpDebugStringData;
    303     WORD fUnicode;
    304     WORD nDebugStringLength;
    305   } OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO;
    306 
    307   typedef struct _RIP_INFO {
    308     DWORD dwError;
    309     DWORD dwType;
    310   } RIP_INFO, *LPRIP_INFO;
    311 
    312   typedef struct _DEBUG_EVENT {
    313     DWORD dwDebugEventCode;
    314     DWORD dwProcessId;
    315     DWORD dwThreadId;
    316     union {
    317       EXCEPTION_DEBUG_INFO Exception;
    318       CREATE_THREAD_DEBUG_INFO CreateThread;
    319       CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
    320       EXIT_THREAD_DEBUG_INFO ExitThread;
    321       EXIT_PROCESS_DEBUG_INFO ExitProcess;
    322       LOAD_DLL_DEBUG_INFO LoadDll;
    323       UNLOAD_DLL_DEBUG_INFO UnloadDll;
    324       OUTPUT_DEBUG_STRING_INFO DebugString;
    325       RIP_INFO RipInfo;
    326     } u;
    327   } DEBUG_EVENT, *LPDEBUG_EVENT;
    328 
    329 #ifndef __WIDL__
    330   typedef PCONTEXT LPCONTEXT;
    331 #endif
    332 
    333 #define STILL_ACTIVE STATUS_PENDING
    334 #define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION
    335 #define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT
    336 #define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT
    337 #define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP
    338 #define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED
    339 #define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND
    340 #define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO
    341 #define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT
    342 #define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION
    343 #define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW
    344 #define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK
    345 #define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW
    346 #define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO
    347 #define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW
    348 #define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION
    349 #define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR
    350 #define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION
    351 #define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION
    352 #define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW
    353 #define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION
    354 #define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION
    355 #define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE
    356 #define EXCEPTION_POSSIBLE_DEADLOCK STATUS_POSSIBLE_DEADLOCK
    357 #define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT
    358 
    359 #define LMEM_FIXED 0x0
    360 #define LMEM_MOVEABLE 0x2
    361 #define LMEM_NOCOMPACT 0x10
    362 #define LMEM_NODISCARD 0x20
    363 #define LMEM_ZEROINIT 0x40
    364 #define LMEM_MODIFY 0x80
    365 #define LMEM_DISCARDABLE 0xf00
    366 #define LMEM_VALID_FLAGS 0xf72
    367 #define LMEM_INVALID_HANDLE 0x8000
    368 
    369 #define LHND (LMEM_MOVEABLE | LMEM_ZEROINIT)
    370 #define LPTR (LMEM_FIXED | LMEM_ZEROINIT)
    371 
    372 #define NONZEROLHND (LMEM_MOVEABLE)
    373 #define NONZEROLPTR (LMEM_FIXED)
    374 
    375 #define LocalDiscard(h) LocalReAlloc ((h), 0, LMEM_MOVEABLE)
    376 
    377 #define LMEM_DISCARDED 0x4000
    378 #define LMEM_LOCKCOUNT 0xff
    379 
    380 #define NUMA_NO_PREFERRED_NODE ((DWORD) -1)
    381 
    382 #ifdef __cplusplus
    383 }
    384 #endif
    385 #endif