! Copyright (C) 2005, 2006 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: alien alien.c-types alien.syntax kernel windows.types
-math multiline classes.struct alien.data arrays ;
+math multiline classes.struct alien.data arrays literals ;
QUALIFIED-WITH: alien.c-types c
IN: windows.kernel32
{ srWindow SMALL_RECT }
{ dwMaximumWindowSize COORD } ;
+STRUCT: PROCESSENTRY32
+ { dwSize DWORD }
+ { cntUsage DWORD }
+ { th32ProcessID DWORD }
+ { th32DefaultHeapID ULONG_PTR }
+ { th32ModuleID DWORD }
+ { cntThreads DWORD }
+ { th32ParentProcessID DWORD }
+ { pcPriClassBase LONG }
+ { dwFlags DWORD }
+ { szExeFile TCHAR[MAX_PATH] } ;
+
+TYPEDEF: PROCESSENTRY32* PPROCESSENTRY32
+TYPEDEF: PROCESSENTRY32* LPPROCESSENTRY32
+
! Resource IDs
: MAKEINTRESOURCE ( int -- resource ) 0xffff bitand <alien> ; inline
! FUNCTION: CreateThread
! FUNCTION: CreateTimerQueue
! FUNCTION: CreateTimerQueueTimer
-! FUNCTION: CreateToolhelp32Snapshot
+
+CONSTANT: TH32CS_INHERIT 0x80000000
+CONSTANT: TH32CS_SNAPHEAPLIST 1
+CONSTANT: TH32CS_SNAPMODULE 8
+CONSTANT: TH32CS_SNAPMODULE32 0x10
+CONSTANT: TH32CS_SNAPPROCESS 2
+CONSTANT: TH32CS_SNAPTHREAD 4
+CONSTANT: TH32CS_SNAPALL flags{ TH32CS_SNAPHEAPLIST TH32CS_SNAPMODULE TH32CS_SNAPPROCESS TH32CS_SNAPTHREAD }
+
+FUNCTION: HANDLE CreateToolhelp32Snapshot ( DWORD dwFlags, DWORD th32ProcessID ) ;
! FUNCTION: CreateVirtualBuffer
! FUNCTION: CreateWaitableTimerA
! FUNCTION: CreateWaitableTimerW
! FUNCTION: OpenJobObjectA
! FUNCTION: OpenJobObjectW
! FUNCTION: OpenMutexA
-! FUNCTION: OpenMutexW
+! FUNCTION: OpenMutexW
FUNCTION: HANDLE OpenProcess ( DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId ) ;
! FUNCTION: OpenProfileUserMapping
! FUNCTION: OpenSemaphoreA
! FUNCTION: PrivCopyFileExW
! FUNCTION: PrivMoveFileIdentityW
! FUNCTION: Process32First
-! FUNCTION: Process32FirstW
+FUNCTION: BOOL Process32FirstW ( HANDLE hSnapshot, LPPROCESSENTRY32 lppe ) ;
+ALIAS: Process32First Process32FirstW
! FUNCTION: Process32Next
-! FUNCTION: Process32NextW
+FUNCTION: BOOL Process32NextW ( HANDLE hSnapshot, LPPROCESSENTRY32 lppe ) ;
+ALIAS: Process32Next Process32NextW
! FUNCTION: ProcessIdToSessionId
! FUNCTION: PulseEvent
! FUNCTION: PurgeComm
--- /dev/null
+! Copyright (C) 2013 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.c-types alien.syntax classes.struct windows.types ;
+IN: windows.ntdll
+
+LIBRARY: ntdll
+
+TYPEDEF: uint NTSTATUS
+
+STRUCT: LSA_UNICODE_STRING
+ { Length USHORT }
+ { MaximumLength USHORT }
+ { Buffer void* } ;
+TYPEDEF: LSA_UNICODE_STRING* PLSA_UNICODE_STRING
+TYPEDEF: LSA_UNICODE_STRING UNICODE_STRING
+TYPEDEF: LSA_UNICODE_STRING* PUNICODE_STRING
+
+STRUCT: RTL_USER_PROCESS_PARAMETERS
+ { Reserved1 BYTE[16] }
+ { Reserved2 PVOID[10] }
+ { ImagePathName UNICODE_STRING }
+ { CommandLine UNICODE_STRING } ;
+TYPEDEF: RTL_USER_PROCESS_PARAMETERS* PRTL_USER_PROCESS_PARAMETERS
+
+STRUCT: LIST_ENTRY
+ { Flink LIST_ENTRY* }
+ { Blink LIST_ENTRY* } ;
+TYPEDEF: LIST_ENTRY* PLIST_ENTRY
+
+STRUCT: PEB_LDR_DATA
+ { Reserved1 BYTE[8] }
+ { Reserved2 PVOID[3] }
+ { InMemoryOrderModuleList LIST_ENTRY } ;
+TYPEDEF: PEB_LDR_DATA* PPEB_LDR_DATA
+
+TYPEDEF: void* PPS_POST_PROCESS_INIT_ROUTINE
+
+STRUCT: PEB
+ { Reserved1 BYTE[2] }
+ { BeingDebugged BYTE }
+ { Reserved2 BYTE[1] }
+ { Reserved3 BYTE[2] }
+ { Ldr 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] }
+ { SessionId ULONG } ;
+TYPEDEF: PEB* PPEB
+
+! PebBaseAddress is PPEB
+STRUCT: PROCESS_BASIC_INFORMATION
+ { Reserved1 PVOID }
+ { PebBaseAddress void* }
+ { Reserved2 PVOID[2] }
+ { UniqueProcessId ULONG_PTR }
+ { Reserved3 PVOID } ;
+
+ENUM: PROCESSINFOCLASS
+ { ProcessBasicInformation 0 }
+ { ProcessDebugPort 7 }
+ { ProcessWow64Information 26 }
+ { ProcessImageFileName 27 } ;
+
+FUNCTION: NTSTATUS NtQueryInformationProcess (
+ HANDLE ProcessHandle,
+ PROCESSINFOCLASS ProcessInformationClass,
+ PVOID ProcessInformation,
+ ULONG ProcessInformationLength,
+ PULONG ReturnLength
+) ;
\ No newline at end of file