! Copyright (C) 2013 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
+! See https://factorcode.org/license.txt for BSD license.
USING: alien.c-types alien.syntax classes.struct windows.types ;
IN: windows.ntdll
TYPEDEF: uint NTSTATUS
+! Buffer is a PWSTR
STRUCT: LSA_UNICODE_STRING
{ Length USHORT }
{ MaximumLength USHORT }
TYPEDEF: LSA_UNICODE_STRING UNICODE_STRING
TYPEDEF: LSA_UNICODE_STRING* PUNICODE_STRING
+STRUCT: RTL_DRIVE_LETTER_CURDIR
+ { Flags USHORT }
+ { Length USHORT }
+ { Timestamp ULONG }
+ { DosPath UNICODE_STRING } ;
+TYPEDEF: RTL_DRIVE_LETTER_CURDIR* PRTL_DRIVE_LETTER_CURDIR
+
STRUCT: RTL_USER_PROCESS_PARAMETERS
- { Reserved1 BYTE[16] }
- { Reserved2 PVOID[10] }
+ { MaximumLength ULONG }
+ { Length ULONG }
+ { Flags ULONG }
+ { DebugFlags ULONG }
+ { ConsoleHandle PVOID }
+ { ConsoleFlags ULONG }
+ { StdInputHandle HANDLE }
+ { StdOutputHandle HANDLE }
+ { StdErrorHandle HANDLE }
+ { CurrentDirectoryPath UNICODE_STRING }
+ { CurrentDirectoryHandle HANDLE }
+ { DllPath UNICODE_STRING }
{ ImagePathName UNICODE_STRING }
- { CommandLine UNICODE_STRING } ;
+ { CommandLine UNICODE_STRING }
+ { Environment PVOID }
+ { StartingPositionLeft ULONG }
+ { StartingPositionTop ULONG }
+ { Width ULONG }
+ { Height ULONG }
+ { CharWidth ULONG }
+ { CharHeight ULONG }
+ { ConsoleTextAttributes ULONG }
+ { WindowFlags ULONG }
+ { ShowWindowFlags ULONG }
+ { WindowTitle UNICODE_STRING }
+ { DesktopName UNICODE_STRING }
+ { ShellInfo UNICODE_STRING }
+ { RuntimeData UNICODE_STRING }
+ { DLCurrentDirectory RTL_DRIVE_LETTER_CURDIR[0x20] } ;
TYPEDEF: RTL_USER_PROCESS_PARAMETERS* PRTL_USER_PROCESS_PARAMETERS
STRUCT: LIST_ENTRY
TYPEDEF: LIST_ENTRY* PLIST_ENTRY
STRUCT: PEB_LDR_DATA
- { Reserved1 BYTE[8] }
- { Reserved2 PVOID[3] }
- { InMemoryOrderModuleList LIST_ENTRY } ;
+ { Length ULONG }
+ { Initialized BOOLEAN }
+ { SsHandle PVOID }
+ { InLoadOrderModuleList LIST_ENTRY }
+ { InMemoryOrderModuleList LIST_ENTRY }
+ { InInitializationOrderModuleList LIST_ENTRY } ;
TYPEDEF: PEB_LDR_DATA* PPEB_LDR_DATA
TYPEDEF: void* PPS_POST_PROCESS_INIT_ROUTINE
+STRUCT: PEB_FREE_BLOCK
+ { Next PEB_FREE_BLOCK* }
+ { Size ULONG } ;
+TYPEDEF: PEB_FREE_BLOCK* PPEB_FREE_BLOCK
+
+STRUCT: PEBLOCKROUTINE
+ { PebLock PVOID } ;
+TYPEDEF: PEBLOCKROUTINE* PPEBLOCKROUTINE
+
+TYPEDEF: PVOID* PPVOID
+
STRUCT: PEB
- { Reserved1 BYTE[2] }
- { BeingDebugged BYTE }
- { Reserved2 BYTE[1] }
- { Reserved3 BYTE[2] }
- { Ldr PPEB_LDR_DATA }
+ { InheritedAddressSpace BOOLEAN }
+ { ReadImageFileExecOptions BOOLEAN }
+ { BeingDebugged BOOLEAN }
+ { Spare BOOLEAN }
+ { Mutant HANDLE }
+ { ImageBaseAddress HMODULE }
+ { LoaderData PPEB_LDR_DATA }
{ ProcessParameters PRTL_USER_PROCESS_PARAMETERS }
- { Reserved4 BYTE[104] }
- { Reserved5 PVOID[52] }
- { PostProcessInitRoutine PPS_POST_PROCESS_INIT_ROUTINE }
- { Reserved6 BYTE[128] }
- { Reserved7 PVOID[1] }
+ { SubSystemData PVOID }
+ { ProcessHeap HANDLE }
+ { FastPebLock PVOID }
+ { FastPebLockRoutine PPEBLOCKROUTINE }
+ { FastPebUnlockRoutine PPEBLOCKROUTINE }
+ { EnvironmentUpdateCount ULONG }
+ { KernelCallbackTable PPVOID }
+ { EventLogSection PVOID }
+ { EventLog PVOID }
+ { FreeList PPEB_FREE_BLOCK }
+ { TlsExpansionCounter ULONG }
+ { TlsBitmap PVOID }
+ { TlsBitmapBits ULONG[2] }
+ { ReadOnlySharedMemoryBase PVOID }
+ { ReadOnlySharedMemoryHeap PVOID }
+ { ReadOnlyStaticServerData PPVOID }
+ { AnsiCodePageData PVOID }
+ { OemCodePageData PVOID }
+ { UnicodeCaseTableData PVOID }
+ { NumberOfProcessors ULONG }
+ { NtGlobalFlag ULONG }
+ { Spare2 BYTE[4] }
+ { CriticalSectionTimeout LARGE_INTEGER }
+ { HeapSegmentReserve ULONG }
+ { HeapSegmentCommit ULONG }
+ { HeapDeCommitTotalFreeThreshold ULONG }
+ { HeapDeCommitFreeBlockThreshold ULONG }
+ { NumberOfHeaps ULONG }
+ { MaximumNumberOfHeaps ULONG }
+ { ProcessHeaps PPVOID* }
+ { GdiSharedHandleTable PVOID }
+ { ProcessStarterHelper PVOID }
+ { GdiDCAttributeList PVOID }
+ { LoaderLock PVOID }
+ { OSMajorVersion ULONG }
+ { OSMinorVersion ULONG }
+ { OSBuildNumber ULONG }
+ { OSPlatformId ULONG }
+ { ImageSubSystem ULONG }
+ { ImageSubSystemMajorVersion ULONG }
+ { ImageSubSystemMinorVersion ULONG }
+ { GdiHandleBuffer ULONG[0x22] }
+ { PostProcessInitRoutine ULONG }
+ { TlsExpansionBitmap ULONG }
+ { TlsExpansionBitmapBits BYTE[0x80] }
{ SessionId ULONG } ;
TYPEDEF: PEB* PPEB
! PebBaseAddress is PPEB
STRUCT: PROCESS_BASIC_INFORMATION
- { Reserved1 PVOID }
- { PebBaseAddress void* }
- { Reserved2 PVOID[2] }
+ { ExitStatus PVOID }
+ { PebBaseAddress PVOID }
+ { AffinityMask PVOID }
+ { BasePriority PVOID }
{ UniqueProcessId ULONG_PTR }
- { Reserved3 PVOID } ;
-
+ { InheritedFromUniqueProcessId PVOID } ;
+
ENUM: PROCESSINFOCLASS
{ ProcessBasicInformation 0 }
{ ProcessDebugPort 7 }
PVOID ProcessInformation,
ULONG ProcessInformationLength,
PULONG ReturnLength
-) ;
\ No newline at end of file
+)