File Index Symbol Index

/************************************************************************ * * * minwinbase.h -- This module defines the 32-Bit Windows Base APIs * * * * Copyright (c) Microsoft Corp. All rights reserved. * * * ************************************************************************/
#pragma once
#ifndef _MINWINBASE_
#define _MINWINBASE_
#if ( _MSC_VER >= 800 )
#pragma warning(disable:
4514
)
#ifndef __WINDOWS_DONT_DISABLE_PRAGMA_PACK_WARNING__
#pragma warning(disable:
4103
)
#endif
#if _MSC_VER >= 1200
#pragma warning(push) #pragma warning(disable:
4001
) #pragma warning(disable:
4201
) #pragma warning(disable:
4214
)
#endif
#ifdef __cplusplus
extern
"C"
{
#endif
//
// Constants
//
#define MoveMemory RtlMoveMemory
#define CopyMemory RtlCopyMemory
#define FillMemory RtlFillMemory
#define ZeroMemory RtlZeroMemory
//
// Typedefs
//
typedef
struct
_SECURITY_ATTRIBUTES
{
DWORD
nLength
;
LPVOID
lpSecurityDescriptor
;
BOOL
bInheritHandle
; }
SECURITY_ATTRIBUTES
, *
PSECURITY_ATTRIBUTES
, *
LPSECURITY_ATTRIBUTES
;
typedef
struct
_OVERLAPPED
{
ULONG_PTR
Internal
;
ULONG_PTR
InternalHigh
;
union
{
struct
{
DWORD
Offset
;
DWORD
OffsetHigh
;
PVOID
Pointer
;
HANDLE
hEvent
; }
OVERLAPPED
, *
LPOVERLAPPED
;
typedef
struct
_OVERLAPPED_ENTRY
{
ULONG_PTR
lpCompletionKey
;
LPOVERLAPPED
lpOverlapped
;
ULONG_PTR
Internal
;
DWORD
dwNumberOfBytesTransferred
; }
OVERLAPPED_ENTRY
, *
LPOVERLAPPED_ENTRY
;
//
// File System time stamps are represented with the following structure:
//
#ifndef _FILETIME_
#define _FILETIME_
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;
#endif
//
// System time is represented with the following structure:
//
typedef
struct
_SYSTEMTIME
{
WORD
wYear
;
WORD
wMonth
;
WORD
wDayOfWeek
;
WORD
wDay
;
WORD
wHour
;
WORD
wMinute
;
WORD
wSecond
;
WORD
wMilliseconds
; }
SYSTEMTIME
, *
PSYSTEMTIME
, *
LPSYSTEMTIME
;
typedef
struct
_WIN32_FIND_DATAA
{
DWORD
dwFileAttributes
;
FILETIME
ftCreationTime
;
FILETIME
ftLastAccessTime
;
FILETIME
ftLastWriteTime
;
DWORD
nFileSizeHigh
;
DWORD
nFileSizeLow
;
DWORD
dwReserved0
;
DWORD
dwReserved1
;
#ifdef _MAC
DWORD dwFileType;
DWORD dwCreatorType;
WORD wFinderFlags;
#endif
}
WIN32_FIND_DATAA
, *
PWIN32_FIND_DATAA
, *
LPWIN32_FIND_DATAA
;
typedef
struct
_WIN32_FIND_DATAW
{
DWORD
dwFileAttributes
;
FILETIME
ftCreationTime
;
FILETIME
ftLastAccessTime
;
FILETIME
ftLastWriteTime
;
DWORD
nFileSizeHigh
;
DWORD
nFileSizeLow
;
DWORD
dwReserved0
;
DWORD
dwReserved1
;
#ifdef _MAC
DWORD dwFileType;
DWORD dwCreatorType;
WORD wFinderFlags;
#endif
}
WIN32_FIND_DATAW
, *
PWIN32_FIND_DATAW
, *
LPWIN32_FIND_DATAW
;
#ifdef UNICODE
typedef
WIN32_FIND_DATAW
WIN32_FIND_DATA
;
typedef
PWIN32_FIND_DATAW
PWIN32_FIND_DATA
;
typedef
LPWIN32_FIND_DATAW
LPWIN32_FIND_DATA
;
#else
typedef WIN32_FIND_DATAA WIN32_FIND_DATA;
typedef PWIN32_FIND_DATAA PWIN32_FIND_DATA;
typedef LPWIN32_FIND_DATAA LPWIN32_FIND_DATA; #endif // UNICODE
#if(_WIN32_WINNT >= 0x0400)
typedef
enum
_FINDEX_INFO_LEVELS
{
FindExInfoStandard
,
FindExInfoBasic
,
FindExInfoMaxInfoLevel
}
FINDEX_INFO_LEVELS
;
#define FIND_FIRST_EX_CASE_SENSITIVE 0x00000001
#define FIND_FIRST_EX_LARGE_FETCH 0x00000002
#if (NTDDI_VERSION >= NTDDI_WIN10_RS4)
#define FIND_FIRST_EX_ON_DISK_ENTRIES_ONLY 0x00000004 #endif
typedef
enum
_FINDEX_SEARCH_OPS
{
FindExSearchNameMatch
,
FindExSearchLimitToDirectories
,
FindExSearchLimitToDevices
,
FindExSearchMaxSearchOp
}
FINDEX_SEARCH_OPS
;
#endif /* _WIN32_WINNT >= 0x0400 */
#if(_WIN32_WINNT >= 0x0400)
#if (NTDDI_VERSION >= NTDDI_WIN10_RS3)
typedef
enum
_READ_DIRECTORY_NOTIFY_INFORMATION_CLASS
{
ReadDirectoryNotifyInformation
=
1
,
ReadDirectoryNotifyExtendedInformation
// 2
}
READ_DIRECTORY_NOTIFY_INFORMATION_CLASS
, *
PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS
;
#endif #endif /* _WIN32_WINNT >= 0x0400 */
typedef
enum
_GET_FILEEX_INFO_LEVELS
{
GetFileExInfoStandard
,
GetFileExMaxInfoLevel
}
GET_FILEEX_INFO_LEVELS
;
#if (_WIN32_WINNT >= _WIN32_WINNT_LONGHORN)
typedef
enum
_FILE_INFO_BY_HANDLE_CLASS
{
FileBasicInfo
,
FileStandardInfo
,
FileNameInfo
,
FileRenameInfo
,
FileDispositionInfo
,
FileAllocationInfo
,
FileEndOfFileInfo
,
FileStreamInfo
,
FileCompressionInfo
,
FileAttributeTagInfo
,
FileIdBothDirectoryInfo
,
FileIdBothDirectoryRestartInfo
,
FileIoPriorityHintInfo
,
FileRemoteProtocolInfo
,
FileFullDirectoryInfo
,
FileFullDirectoryRestartInfo
,
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN8)
FileStorageInfo
,
FileAlignmentInfo
,
FileIdInfo
,
FileIdExtdDirectoryInfo
,
FileIdExtdDirectoryRestartInfo
,
#endif
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10_RS1)
FileDispositionInfoEx
,
FileRenameInfoEx
,
#endif
MaximumFileInfoByHandleClass
}
FILE_INFO_BY_HANDLE_CLASS
, *
PFILE_INFO_BY_HANDLE_CLASS
;
#endif
typedef
RTL_CRITICAL_SECTION
CRITICAL_SECTION
;
typedef
PRTL_CRITICAL_SECTION
PCRITICAL_SECTION
;
typedef
PRTL_CRITICAL_SECTION
LPCRITICAL_SECTION
;
typedef
RTL_CRITICAL_SECTION_DEBUG
CRITICAL_SECTION_DEBUG
;
typedef
PRTL_CRITICAL_SECTION_DEBUG
PCRITICAL_SECTION_DEBUG
;
typedef
PRTL_CRITICAL_SECTION_DEBUG
LPCRITICAL_SECTION_DEBUG
;
typedef
);
#define LOCKFILE_FAIL_IMMEDIATELY 0x00000001
#define LOCKFILE_EXCLUSIVE_LOCK 0x00000002
typedef
struct
_PROCESS_HEAP_ENTRY
{
PVOID
lpData
;
DWORD
cbData
;
BYTE
cbOverhead
;
BYTE
iRegionIndex
;
WORD
wFlags
;
union
{
struct
{
HANDLE
hMem
;
DWORD
dwReserved
[
3
]; }
Block
;
struct
{
DWORD
dwCommittedSize
;
DWORD
dwUnCommittedSize
;
LPVOID
lpFirstBlock
;
LPVOID
lpLastBlock
; }
Region
; }
PROCESS_HEAP_ENTRY
, *
LPPROCESS_HEAP_ENTRY
, *
PPROCESS_HEAP_ENTRY
;
#define PROCESS_HEAP_REGION 0x0001
#define PROCESS_HEAP_UNCOMMITTED_RANGE 0x0002
#define PROCESS_HEAP_ENTRY_BUSY 0x0004
#define PROCESS_HEAP_SEG_ALLOC 0x0008
#define PROCESS_HEAP_ENTRY_MOVEABLE 0x0010
#define PROCESS_HEAP_ENTRY_DDESHARE 0x0020
typedef
struct
_REASON_CONTEXT
{
ULONG
Version
;
DWORD
Flags
;
union
{
struct
{
HMODULE
LocalizedReasonModule
;
ULONG
LocalizedReasonId
;
ULONG
ReasonStringCount
;
LPWSTR
*
ReasonStrings
; }
Detailed
;
LPWSTR
SimpleReasonString
; }
Reason
; }
REASON_CONTEXT
, *
PREASON_CONTEXT
;
//
// Debug APIs
//
#define EXCEPTION_DEBUG_EVENT 1
#define CREATE_THREAD_DEBUG_EVENT 2
#define CREATE_PROCESS_DEBUG_EVENT 3
#define EXIT_THREAD_DEBUG_EVENT 4
#define EXIT_PROCESS_DEBUG_EVENT 5
#define LOAD_DLL_DEBUG_EVENT 6
#define UNLOAD_DLL_DEBUG_EVENT 7
#define OUTPUT_DEBUG_STRING_EVENT 8
#define RIP_EVENT 9
LPVOID
lpThreadParameter );
typedef
PTHREAD_START_ROUTINE
LPTHREAD_START_ROUTINE
;
LPVOID
lpThreadParameter );
typedef
PENCLAVE_ROUTINE
LPENCLAVE_ROUTINE
;
typedef
struct
_EXCEPTION_DEBUG_INFO
{
EXCEPTION_RECORD
ExceptionRecord
;
DWORD
dwFirstChance
; }
EXCEPTION_DEBUG_INFO
, *
LPEXCEPTION_DEBUG_INFO
;
typedef
struct
_CREATE_THREAD_DEBUG_INFO
{
HANDLE
hThread
;
LPVOID
lpThreadLocalBase
;
LPTHREAD_START_ROUTINE
lpStartAddress
; }
CREATE_THREAD_DEBUG_INFO
, *
LPCREATE_THREAD_DEBUG_INFO
;
typedef
struct
_CREATE_PROCESS_DEBUG_INFO
{
HANDLE
hFile
;
HANDLE
hProcess
;
HANDLE
hThread
;
LPVOID
lpBaseOfImage
;
DWORD
dwDebugInfoFileOffset
;
DWORD
nDebugInfoSize
;
LPVOID
lpThreadLocalBase
;
LPTHREAD_START_ROUTINE
lpStartAddress
;
LPVOID
lpImageName
;
WORD
fUnicode
; }
CREATE_PROCESS_DEBUG_INFO
, *
LPCREATE_PROCESS_DEBUG_INFO
;
typedef
struct
_EXIT_THREAD_DEBUG_INFO
{
DWORD
dwExitCode
; }
EXIT_THREAD_DEBUG_INFO
, *
LPEXIT_THREAD_DEBUG_INFO
;
typedef
struct
_EXIT_PROCESS_DEBUG_INFO
{
DWORD
dwExitCode
; }
EXIT_PROCESS_DEBUG_INFO
, *
LPEXIT_PROCESS_DEBUG_INFO
;
typedef
struct
_LOAD_DLL_DEBUG_INFO
{
HANDLE
hFile
;
LPVOID
lpBaseOfDll
;
DWORD
dwDebugInfoFileOffset
;
DWORD
nDebugInfoSize
;
LPVOID
lpImageName
;
WORD
fUnicode
; }
LOAD_DLL_DEBUG_INFO
, *
LPLOAD_DLL_DEBUG_INFO
;
typedef
struct
_UNLOAD_DLL_DEBUG_INFO
{
LPVOID
lpBaseOfDll
; }
UNLOAD_DLL_DEBUG_INFO
, *
LPUNLOAD_DLL_DEBUG_INFO
;
typedef
struct
_OUTPUT_DEBUG_STRING_INFO
{
LPSTR
lpDebugStringData
;
WORD
fUnicode
;
WORD
nDebugStringLength
; }
OUTPUT_DEBUG_STRING_INFO
, *
LPOUTPUT_DEBUG_STRING_INFO
;
typedef
struct
_RIP_INFO
{
DWORD
dwError
;
DWORD
dwType
; }
RIP_INFO
, *
LPRIP_INFO
;
typedef
struct
_DEBUG_EVENT
{
DWORD
dwDebugEventCode
;
DWORD
dwProcessId
;
DWORD
dwThreadId
;
union
{
EXCEPTION_DEBUG_INFO
Exception
;
CREATE_THREAD_DEBUG_INFO
CreateThread
;
CREATE_PROCESS_DEBUG_INFO
CreateProcessInfo
;
EXIT_THREAD_DEBUG_INFO
ExitThread
;
EXIT_PROCESS_DEBUG_INFO
ExitProcess
;
LOAD_DLL_DEBUG_INFO
LoadDll
;
UNLOAD_DLL_DEBUG_INFO
UnloadDll
;
OUTPUT_DEBUG_STRING_INFO
DebugString
;
RIP_INFO
RipInfo
; }
u
; }
DEBUG_EVENT
, *
LPDEBUG_EVENT
;
//
// Context definitions
//
#if !defined(MIDL_PASS)
typedef
PCONTEXT
LPCONTEXT
;
#endif // !defined(MIDL_PASS)
//
// macros
//
/* compatibility macros */
#define STILL_ACTIVE STATUS_PENDING
#define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION
#define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT
#define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT
#define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP
#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED
#define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND
#define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO
#define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT
#define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION
#define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW
#define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK
#define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW
#define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO
#define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW
#define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION
#define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR
#define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION
#define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION
#define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW
#define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION
#define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION
#define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE
#define EXCEPTION_POSSIBLE_DEADLOCK STATUS_POSSIBLE_DEADLOCK
#define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT
/* Local Memory Flags */
#define LMEM_FIXED 0x0000
#define LMEM_MOVEABLE 0x0002
#define LMEM_NOCOMPACT 0x0010
#define LMEM_NODISCARD 0x0020
#define LMEM_ZEROINIT 0x0040
#define LMEM_MODIFY 0x0080
#define LMEM_DISCARDABLE 0x0F00
#define LMEM_VALID_FLAGS 0x0F72
#define LMEM_INVALID_HANDLE 0x8000
#define LHND (LMEM_MOVEABLE | LMEM_ZEROINIT)
#define LPTR (LMEM_FIXED | LMEM_ZEROINIT)
#define NONZEROLHND (LMEM_MOVEABLE)
#define NONZEROLPTR (LMEM_FIXED)
#define LocalDiscard( h ) LocalReAlloc( (h), 0, LMEM_MOVEABLE )
/* Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE) */
#define LMEM_DISCARDED 0x4000
#define LMEM_LOCKCOUNT 0x00FF
//
// NUMA values
//
#define NUMA_NO_PREFERRED_NODE ((DWORD) -1)
#ifdef __cplusplus
}
#endif
#if ( _MSC_VER >= 800 )
#if _MSC_VER >= 1200
#pragma warning(pop)
#else
#pragma warning(default:4001)
#pragma warning(default:4201)
#pragma warning(default:4214)
/* Leave 4514 disabled. It's an unneeded warning anyway. */ #endif #endif
#endif // _MINWINBASE_