| /* |
| * Internal NT APIs and data structures |
| * |
| * Copyright (C) the Wine project |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| */ |
| |
| #ifndef __WINE_WINTERNAL_H |
| #define __WINE_WINTERNAL_H |
| |
| #include "windef.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif /* defined(__cplusplus) */ |
| |
| /*********************************************************************** |
| * PEB data structure |
| */ |
| typedef struct _PEB { |
| BYTE Reserved1[2]; |
| BYTE BeingDebugged; |
| BYTE Reserved2[229]; |
| PVOID Reserved3[59]; |
| ULONG SessionId; |
| } PEB, *PPEB; |
| |
| /*********************************************************************** |
| * PEB data structure |
| */ |
| typedef struct _TEB { |
| BYTE Reserved1[1952]; |
| PVOID Reserved2[412]; |
| PVOID TlsSlots[64]; |
| BYTE Reserved3[8]; |
| PVOID Reserved4[26]; |
| PVOID ReservedForOle; /* Windows 2000 only */ |
| PVOID Reserved5[4]; |
| PVOID TlsExpansionSlots; |
| } TEB, *PTEB; |
| |
| /********************************************************************** |
| * Various types and data structures |
| */ |
| |
| typedef LONG NTSTATUS; |
| |
| typedef CONST char *PCSZ; |
| |
| typedef struct _STRING { |
| USHORT Length; |
| USHORT MaximumLength; |
| PCHAR Buffer; |
| } STRING, *PSTRING; |
| |
| typedef STRING ANSI_STRING; |
| typedef PSTRING PANSI_STRING; |
| typedef PSTRING PCANSI_STRING; |
| |
| typedef STRING OEM_STRING; |
| typedef PSTRING POEM_STRING; |
| typedef const STRING *PCOEM_STRING; |
| |
| typedef struct _UNICODE_STRING { |
| USHORT Length; |
| USHORT MaximumLength; |
| PWSTR Buffer; |
| } UNICODE_STRING, *PUNICODE_STRING; |
| |
| typedef const UNICODE_STRING *PCUNICODE_STRING; |
| |
| typedef struct _OBJECT_ATTRIBUTES { |
| ULONG Length; |
| HANDLE RootDirectory; |
| PUNICODE_STRING ObjectName; |
| ULONG Attributes; |
| PVOID SecurityDescriptor; |
| PVOID SecurityQualityOfService; |
| } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; |
| |
| typedef struct _IO_STATUS_BLOCK { |
| union { |
| NTSTATUS Status; |
| PVOID Pointer; |
| } DUMMYUNIONNAME; |
| |
| ULONG_PTR Information; |
| } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK; |
| |
| typedef void (WINAPI * PIO_APC_ROUTINE)(PVOID,PIO_STATUS_BLOCK,ULONG); |
| |
| /*********************************************************************** |
| * IA64 specific types and data structures |
| */ |
| |
| #ifdef __ia64__ |
| |
| typedef struct _FRAME_POINTERS { |
| ULONGLONG MemoryStackFp; |
| ULONGLONG BackingStoreFp; |
| } FRAME_POINTERS, *PFRAME_POINTERS; |
| |
| #define UNWIND_HISTORY_TABLE_SIZE 12 |
| |
| typedef struct _RUNTIME_FUNCTION { |
| ULONG BeginAddress; |
| ULONG EndAddress; |
| ULONG UnwindInfoAddress; |
| } RUNTIME_FUNCTION, *PRUNTIME_FUNCTION; |
| |
| typedef struct _UNWIND_HISTORY_TABLE_ENTRY { |
| ULONG64 ImageBase; |
| ULONG64 Gp; |
| PRUNTIME_FUNCTION FunctionEntry; |
| } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; |
| |
| typedef struct _UNWIND_HISTORY_TABLE { |
| ULONG Count; |
| UCHAR Search; |
| ULONG64 LowAddress; |
| ULONG64 HighAddress; |
| UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; |
| } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; |
| |
| #endif /* defined(__ia64__) */ |
| |
| /*********************************************************************** |
| * Various types and data structures |
| */ |
| |
| typedef struct _PROCESS_BASIC_INFORMATION { |
| PVOID Reserved1; |
| PPEB PebBaseAddress; |
| PVOID Reserved2[2]; |
| ULONG_PTR UniqueProcessId; |
| PVOID Reserved3; |
| } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; |
| |
| typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION { |
| LARGE_INTEGER IdleTime; |
| LARGE_INTEGER KernelTime; |
| LARGE_INTEGER UserTime; |
| LARGE_INTEGER Reserved1[2]; |
| ULONG Reserved2; |
| } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION; |
| |
| typedef struct _SYSTEM_PROCESS_INFORMATION { |
| ULONG NextEntryOffset; |
| BYTE Reserved1[52]; |
| PVOID Reserved2[3]; |
| HANDLE UniqueProcessId; |
| PVOID Reserved3; |
| ULONG HandleCount; |
| BYTE Reserved4[4]; |
| PVOID Reserved5[11]; |
| SIZE_T PeakPagefileUsage; |
| SIZE_T PrivatePageCount; |
| LARGE_INTEGER Reserved6[6]; |
| } SYSTEM_PROCESS_INFORMATION, *PSYSTEM_PROCESS_INFORMATION; |
| |
| typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION { |
| ULONG RegistryQuotaAllowed; |
| ULONG RegistryQuotaUsed; |
| PVOID Reserved1; |
| } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; |
| |
| typedef struct _SYSTEM_BASIC_INFORMATION { |
| BYTE Reserved1[24]; |
| PVOID Reserved2[4]; |
| CCHAR NumberOfProcessors; |
| } SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION; |
| |
| typedef struct _SYSTEM_TIMEOFDAY_INFORMATION { |
| BYTE Reserved1[48]; |
| } SYSTEM_TIMEOFDAY_INFORMATION, *PSYSTEM_TIMEOFDAY_INFORMATION; |
| |
| typedef struct _SYSTEM_PERFORMANCE_INFORMATION { |
| BYTE Reserved1[312]; |
| } SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION; |
| |
| typedef struct _SYSTEM_EXCEPTION_INFORMATION { |
| BYTE Reserved1[16]; |
| } SYSTEM_EXCEPTION_INFORMATION, *PSYSTEM_EXCEPTION_INFORMATION; |
| |
| typedef struct _SYSTEM_LOOKASIDE_INFORMATION { |
| BYTE Reserved1[32]; |
| } SYSTEM_LOOKASIDE_INFORMATION, *PSYSTEM_LOOKASIDE_INFORMATION; |
| |
| typedef struct _SYSTEM_INTERRUPT_INFORMATION { |
| BYTE Reserved1[24]; |
| } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION; |
| |
| |
| /*********************************************************************** |
| * Enums |
| */ |
| |
| typedef enum _FILE_INFORMATION_CLASS { |
| FileDirectoryInformation = 1 |
| } FILE_INFORMATION_CLASS; |
| |
| typedef enum _PROCESSINFOCLASS { |
| ProcessBasicInformation = 0, |
| ProcessWow64Information = 26 |
| } PROCESSINFOCLASS; |
| |
| typedef enum _THREADINFOCLASS { |
| ThreadIsIoPending = 16 |
| } THREADINFOCLASS; |
| |
| typedef enum _SYSTEM_INFORMATION_CLASS { |
| SystemBasicInformation = 0, |
| SystemPerformanceInformation = 2, |
| SystemTimeOfDayInformation = 3, |
| SystemProcessInformation = 5, |
| SystemProcessorPerformanceInformation = 8, |
| SystemInterruptInformation = 23, |
| SystemExceptionInformation = 33, |
| SystemRegistryQuotaInformation = 37, |
| SystemLookasideInformation = 45 |
| } SYSTEM_INFORMATION_CLASS; |
| |
| #if (_WIN32_WINNT >= 0x0501) |
| #define INTERNAL_TS_ACTIVE_CONSOLE_ID ( *((volatile ULONG*)(0x7ffe02d8)) ) |
| #endif /* (_WIN32_WINNT >= 0x0501) */ |
| |
| /*********************************************************************** |
| * Macro expensions |
| */ |
| |
| #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) |
| #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) |
| #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length)) |
| |
| /*********************************************************************** |
| * Function declarations |
| */ |
| |
| NTSTATUS WINAPI NtClose(HANDLE); |
| NTSTATUS WINAPI NtCreateFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,PLARGE_INTEGER,ULONG,ULONG,ULONG,ULONG,PVOID,ULONG); |
| NTSTATUS WINAPI NtOpenFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG); |
| NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG); |
| NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,PLARGE_INTEGER); |
| BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(PUNICODE_STRING,POEM_STRING,PBOOLEAN); |
| ULONG WINAPI RtlNtStatusToDosError(NTSTATUS); |
| NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG); |
| NTSTATUS WINAPI NtQueryInformationThread(HANDLE,THREADINFOCLASS,PVOID,ULONG,PULONG); |
| NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG); |
| NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER); |
| NTSTATUS WINAPI RtlLocalTimeToSystemTime(PLARGE_INTEGER,PLARGE_INTEGER); |
| BOOLEAN WINAPI RtlTimeToSecondsSince1970(PLARGE_INTEGER,PULONG); |
| void WINAPI RtlFreeAnsiString(PANSI_STRING); |
| void WINAPI RtlFreeUnicodeString(PUNICODE_STRING); |
| void WINAPI RtlFreeOemString(POEM_STRING); |
| void WINAPI RtlInitString(PSTRING,PCSZ); |
| void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ); |
| void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR); |
| NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN); |
| NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN); |
| NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN); |
| NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PWSTR,ULONG); |
| NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG); |
| NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN); |
| ULONG WINAPI RtlUniform(PULONG); |
| void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID); |
| |
| #ifdef __ia64__ |
| void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT); |
| void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE); |
| #endif |
| |
| /*********************************************************************** |
| * Various macros, types and data structures |
| */ |
| |
| #define LOGONID_CURRENT ((ULONG)-1) |
| #define SERVERNAME_CURRENT ((HANDLE)NULL) |
| |
| typedef enum _WINSTATIONINFOCLASS { |
| WinStationInformation = 8 |
| } WINSTATIONINFOCLASS; |
| |
| typedef struct _WINSTATIONINFORMATIONW { |
| BYTE Reserved2[70]; |
| ULONG LogonId; |
| BYTE Reserved3[1140]; |
| } WINSTATIONINFORMATIONW, * PWINSTATIONINFORMATIONW; |
| |
| typedef BOOLEAN (WINAPI * PWINSTATIONQUERYINFORMATIONW)(HANDLE,ULONG,WINSTATIONINFOCLASS,PVOID,ULONG,PULONG); |
| |
| #ifdef __cplusplus |
| } /* extern "C" */ |
| #endif /* defined(__cplusplus) */ |
| |
| #endif /* __WINE_WINTERNAL_H */ |