18 #define BINARY_UNKNOWN (0) 19 #define BINARY_PE_EXE32 (1) 20 #define BINARY_PE_DLL32 (2) 21 #define BINARY_PE_EXE64 (3) 22 #define BINARY_PE_DLL64 (4) 23 #define BINARY_WIN16 (5) 24 #define BINARY_OS216 (6) 25 #define BINARY_DOS (7) 26 #define BINARY_UNIX_EXE (8) 27 #define BINARY_UNIX_LIB (9) 46 #define ENV_NAME_ENTRY(type, name) \ 47 {(type), _ARRAYSIZE(name) - 1, (name)} 73 String.Buffer = &PathName->Buffer[(PathName->Length -
String.Length) /
sizeof(
WCHAR)];
78 String.Buffer = &PathName->Buffer[(PathName->Length -
String.Length) /
sizeof(
WCHAR)];
83 String.Buffer = &PathName->Buffer[(PathName->Length -
String.Length) /
sizeof(
WCHAR)];
174 while (*CommandLine ==
L' ' || *CommandLine ==
L'\t')
204 while (*CommandLine && !(*CommandLine ==
L' ' || *CommandLine ==
L'\t'))
206 if (*CommandLine ==
L'\"')
210 while (*CommandLine && *CommandLine++ !=
L'\"') ;
225 while (*CommandLine ==
L' ' || *CommandLine ==
L'\t')
236 if (CurrentDir ==
NULL)
254 if (!ShortCurrentDir)
296 CheckVdm->
EnvLen = AnsiEnvironment->Length;
297 CheckVdm->
DesktopLen = (StartupInfo->lpDesktop !=
NULL) ? (
wcslen(StartupInfo->lpDesktop) + 1) : 0;
298 CheckVdm->
TitleLen = (StartupInfo->lpTitle !=
NULL) ? (
wcslen(StartupInfo->lpTitle) + 1) : 0;
299 CheckVdm->
ReservedLen = (StartupInfo->lpReserved !=
NULL) ? (
wcslen(StartupInfo->lpReserved) + 1) : 0;
304 CheckVdm->
StdIn = StartupInfo->hStdInput;
305 CheckVdm->
StdOut = StartupInfo->hStdOutput;
306 CheckVdm->
StdErr = StartupInfo->hStdError;
314 if (StartupInfo->lpDesktop)
318 if (StartupInfo->lpTitle)
322 if (StartupInfo->lpReserved)
330 || (StartupInfo->lpDesktop && !AnsiDesktop)
331 || (StartupInfo->lpTitle && !AnsiTitle)
332 || (StartupInfo->lpReserved && !AnsiReserved))
349 AnsiCmdLine[CheckVdm->
CmdLen++] =
'\r';
350 AnsiCmdLine[CheckVdm->
CmdLen++] =
'\n';
351 AnsiCmdLine[CheckVdm->
CmdLen++] = 0;
373 if (StartupInfo->lpDesktop)
378 StartupInfo->lpDesktop,
387 if (StartupInfo->lpTitle)
392 StartupInfo->lpTitle,
401 if (StartupInfo->lpReserved)
406 StartupInfo->lpReserved,
416 RtlCopyMemory(&AnsiStartupInfo, StartupInfo,
sizeof(AnsiStartupInfo));
419 AnsiStartupInfo.
lpTitle = AnsiTitle;
432 if (CaptureBuffer ==
NULL)
460 AnsiEnvironment->Buffer,
470 if (StartupInfo->lpDesktop)
480 if (StartupInfo->lpTitle)
490 if (StartupInfo->lpReserved)
507 *iTask = CheckVdm->
iTask;
512 if (AnsiCmdLine)
RtlFreeHeap(RtlGetProcessHeap(), 0, AnsiCmdLine);
513 if (AnsiAppName)
RtlFreeHeap(RtlGetProcessHeap(), 0, AnsiAppName);
514 if (AnsiCurDirectory)
RtlFreeHeap(RtlGetProcessHeap(), 0, AnsiCurDirectory);
515 if (AnsiDesktop)
RtlFreeHeap(RtlGetProcessHeap(), 0, AnsiDesktop);
516 if (AnsiTitle)
RtlFreeHeap(RtlGetProcessHeap(), 0, AnsiTitle);
517 if (AnsiReserved)
RtlFreeHeap(RtlGetProcessHeap(), 0, AnsiReserved);
523 if (ShortCurrentDir)
RtlFreeHeap(RtlGetProcessHeap(), 0, ShortCurrentDir);
524 if (CurrentDir)
RtlFreeHeap(RtlGetProcessHeap(), 0, CurrentDir);
527 if (ShortAppName)
RtlFreeHeap(RtlGetProcessHeap(), 0, ShortAppName);
559 UpdateVdmEntry->
iTask = IndexInfo;
570 else if (UpdateVdmEntry->
iTask)
589 sizeof(*UpdateVdmEntry));
622 sizeof(EventBasicInfo),
634 sizeof(*GetVdmExitCode));
638 *ExitCode = GetVdmExitCode->
ExitCode;
655 CmdLineString->Buffer = 0;
658 *VdmSize = 0x1000000;
679 L"\"%s\\ntvdm.exe\" -i%lx %s%c",
693 L"\"%s\\ntvdm.exe\" %s%c",
740 #define IS_ALPHA(x) \ 741 ( ((x) >= L'A' && (x) <= L'Z') || ((x) >= L'a' && (x) <= L'z') ) 745 #define IS_PATH_SEPARATOR(x) ((x) == L'\\' || (x) == L'/') 749 ULONG EnvironmentSize = 0;
753 ULONG NameLength, NumChars, Remaining;
754 PWCHAR SourcePtr, DestPtr, StartPtr;
757 if (!AnsiEnv || !UnicodeEnv)
792 EnvironmentSize += 2;
806 (
PVOID*)&NewEnvironment,
815 NewEnvironment =
NULL;
822 DestPtr = NewEnvironment;
832 if (*SourcePtr !=
L'=')
834 StartPtr = SourcePtr;
839 *DestPtr++ = *SourcePtr;
840 if (*SourcePtr++ ==
L'=')
break;
853 if (
IS_ALPHA(SourcePtr[1]) && SourcePtr[2] ==
L':' && SourcePtr[3] ==
L'=')
861 !(
IS_ALPHA(SourcePtr[4]) && SourcePtr[5] ==
L':' &&
867 *DestPtr++ = SourcePtr[0];
868 *DestPtr++ = SourcePtr[1];
869 *DestPtr++ = SourcePtr[2];
870 *DestPtr++ = SourcePtr[3];
897 *DestPtr++ = *SourcePtr;
903 NameLength =
wcslen(SourcePtr);
905 if (NumChars == 0 || NumChars > NameLength + Remaining)
909 NumChars = NameLength;
912 if (NumChars > NameLength)
913 Remaining -= (NumChars - NameLength);
915 SourcePtr += NameLength;
918 *DestPtr++ = *SourcePtr++;
928 while (*SourcePtr ==
L';')
930 *DestPtr++ = *SourcePtr++;
933 StartPtr = SourcePtr;
940 Delimiter = *SourcePtr;
942 NameLength = SourcePtr - StartPtr;
952 if ( NumChars == 0 ||
953 (Delimiter ==
L';' ? NumChars > NameLength + Remaining
954 : NumChars > NameLength ) )
958 NumChars = NameLength;
961 if (NumChars > NameLength)
962 Remaining -= (NumChars - NameLength);
967 *SourcePtr = Delimiter;
968 *DestPtr++ = *SourcePtr++;
974 *DestPtr++ = *SourcePtr++;
982 RtlInitEmptyUnicodeString(UnicodeEnv, NewEnvironment,
983 (DestPtr - NewEnvironment) *
sizeof(
WCHAR));
984 UnicodeEnv->Length = UnicodeEnv->MaximumLength;
997 NewEnvironment =
NULL;
1008 RtlInitEmptyUnicodeString(UnicodeEnv,
NULL, 0);
1009 RtlInitEmptyAnsiString(AnsiEnv,
NULL, 0);
1014 (
PVOID*)&NewEnvironment,
1035 if (UnicodeEnv->Buffer)
1039 (
PVOID*)&UnicodeEnv->Buffer,
1098 DPRINT1(
"InternalIsOS2OrOldWin(): Binary file seems to be broken\n");
1114 unsigned char magic[4];
1116 unsigned short type;
1120 unsigned long magic;
1121 unsigned long cputype;
1122 unsigned long cpusubtype;
1151 if(
Header.macho.magic == 0xFEEDFACE ||
1152 Header.macho.magic == 0xCEFAEDFE)
1154 switch(
Header.macho.filetype)
1243 if(!lpApplicationName || !lpBinaryType)
1268 if(!(dot =
wcsrchr(lpApplicationName,
L'.')))
1318 DPRINT1(
"Invalid binary type %lu returned!\n", BinType);
1339 StringAllocated =
TRUE;
1353 if (StringAllocated)
1391 ExitVdm->
iWowTask = IsWow ? iWowTask : 0;
1426 if (CommandData ==
NULL)
1432 sizeof(*IsFirstVdm));
1459 sizeof(*SetReenterCount));
1481 RtlZeroMemory(GetNextVdmCommand,
sizeof(*GetNextVdmCommand));
1508 GetNextVdmCommand->
CmdLen 1509 + GetNextVdmCommand->
AppLen 1510 + GetNextVdmCommand->
PifLen 1512 + GetNextVdmCommand->
EnvLen 1517 if (CaptureBuffer ==
NULL)
1591 sizeof(*GetNextVdmCommand));
1648 CommandData->
StdIn = GetNextVdmCommand->
StdIn;
1662 GetNextVdmCommand->
CmdLen);
1673 GetNextVdmCommand->
AppLen);
1684 GetNextVdmCommand->
PifLen);
1705 GetNextVdmCommand->
Env,
1706 GetNextVdmCommand->
EnvLen);
1727 GetNextVdmCommand->
Title,
1776 if (CaptureBuffer ==
NULL)
1783 VDMCurrentDirsRequest->
cchCurDirs = cchCurDirs;
1792 sizeof(*VDMCurrentDirsRequest));
1825 IN DWORD dwUnusedBufferLength,
1838 if (dwRegisterFlags != 0)
1851 if (CaptureBuffer ==
NULL)
1853 DPRINT1(
"CsrAllocateCaptureBuffer failed!\n");
1860 (
PVOID)lpUnusedBuffer,
1861 dwUnusedBufferLength,
1874 sizeof(*RegisterVDMRequest));
1885 if (dwRegisterFlags != 0)
1890 *lpVideoState = RegisterVDMRequest->
VideoState;
1891 *lpVDMBuffer = RegisterVDMRequest->
VDMBuffer;
1952 if (CaptureBuffer ==
NULL)
1959 VDMCurrentDirsRequest->
cchCurDirs = cchCurDirs;
1969 sizeof(*VDMCurrentDirsRequest));
2002 DPRINT1(
"VDMOperationStarted(%d)\n", Unknown0);
enum _ENV_NAME_TYPE ENV_NAME_TYPE
#define ERROR_INVALID_PARAMETER
static UNICODE_STRING BaseDotExeSuffixName
VOID NTAPI CsrFreeCaptureBuffer(IN PCSR_CAPTURE_BUFFER CaptureBuffer)
#define ERROR_BAD_ENVIRONMENT
BOOL WINAPI VDMOperationStarted(IN ULONG Unknown0)
PVOID PVOID PWCHAR PVOID Environment
BASE_GET_VDM_EXIT_CODE GetVDMExitCodeRequest
_In_ ULONG _In_ ULONG _In_ ULONG Length
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
#define WideCharToMultiByte
#define IS_PATH_SEPARATOR(x)
BOOL WINAPI BaseUpdateVDMEntry(IN ULONG UpdateIndex, IN OUT PHANDLE WaitHandle, IN ULONG IndexInfo, IN ULONG BinaryType)
ULONG NTAPI CsrAllocateMessagePointer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, IN ULONG MessageLength, OUT PVOID *CapturedData)
WCHAR CurrentDirectory[1024]
PCSR_CAPTURE_BUFFER NTAPI CsrAllocateCaptureBuffer(IN ULONG ArgumentCount, IN ULONG BufferSize)
BASE_UPDATE_VDM_ENTRY UpdateVDMEntryRequest
#define STATUS_INVALID_PARAMETER
NTSYSAPI VOID NTAPI RtlDestroyEnvironment(_In_ PWSTR Environment)
BOOL NTAPI BaseCreateVDMEnvironment(IN PWCHAR lpEnvironment, OUT PANSI_STRING AnsiEnv, OUT PUNICODE_STRING UnicodeEnv)
NTSTATUS NTAPI CsrClientCallServer(IN OUT PCSR_API_MESSAGE ApiMessage, IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer OPTIONAL, IN CSR_API_NUMBER ApiNumber, IN ULONG DataLength)
BOOL WINAPI BaseGetVdmConfigInfo(IN LPCWSTR CommandLineReserved, IN ULONG DosSeqId, IN ULONG BinaryType, IN PUNICODE_STRING CmdLineString, OUT PULONG VdmSize)
BOOL NTAPI BaseDestroyVDMEnvironment(IN PANSI_STRING AnsiEnv, IN PUNICODE_STRING UnicodeEnv)
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
#define GetCurrentDirectoryW(x, y)
_Check_return_ _CRTIMP int __cdecl _wcsnicmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define ERROR_NOT_ENOUGH_MEMORY
#define INVALID_HANDLE_VALUE
static DWORD WINAPI InternalIsOS2OrOldWin(HANDLE hFile, IMAGE_DOS_HEADER *mz, IMAGE_OS2_HEADER *ne)
DWORD WINAPI GetLastError(VOID)
BOOL WINAPI BaseCheckForVDM(IN HANDLE ProcessHandle, OUT LPDWORD ExitCode)
ENV_NAME_TYPE WINAPI BaseGetEnvNameType_U(IN PWCHAR Name, IN ULONG NameLength)
BASE_EXIT_VDM ExitVDMRequest
union _CONSOLE_API_MESSAGE::@3505 Data
VOID WINAPI ExitVDM(BOOL IsWow, ULONG iWowTask)
BOOL WINAPI GetBinaryTypeW(LPCWSTR lpApplicationName, LPDWORD lpBinaryType)
#define RtlMoveMemory(Destination, Source, Length)
#define STATUS_BUFFER_TOO_SMALL
int WINAPI lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2)
NTSYSAPI VOID NTAPI RtlInitAnsiString(PANSI_STRING DestinationString, PCSZ SourceString)
#define IMAGE_DOS_SIGNATURE
static UNICODE_STRING BaseDotComSuffixName
DWORD WINAPI GetVDMCurrentDirectories(DWORD cchCurDirs, PCHAR lpszzCurDirs)
VOID NTAPI CsrCaptureMessageBuffer(IN OUT PCSR_CAPTURE_BUFFER CaptureBuffer, IN PVOID MessageBuffer OPTIONAL, IN ULONG MessageLength, OUT PVOID *CapturedData)
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
CONSOLE_REGISTERVDM RegisterVDMRequest
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT NumStrings
BASE_IS_FIRST_VDM IsFirstVDMRequest
BOOL WINAPI RegisterConsoleVDM(IN DWORD dwRegisterFlags, IN HANDLE hStartHardwareEvent, IN HANDLE hEndHardwareEvent, IN HANDLE hErrorHardwareEvent, IN DWORD dwUnusedVar, OUT LPDWORD lpVideoStateLength, OUT PVOID *lpVideoState, IN PVOID lpUnusedBuffer, IN DWORD dwUnusedBufferLength, IN COORD dwVDMBufferSize, OUT PVOID *lpVDMBuffer)
#define EXCEPTION_EXECUTE_HANDLER
int _snwprintf(wchar_t *buffer, size_t count, const wchar_t *format,...)
#define ENV_NAME_ENTRY(type, name)
BOOL WINAPI SetVDMCurrentDirectories(DWORD cchCurDirs, PCHAR lpszzCurDirs)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
DWORD WINAPI VDMConsoleOperation(DWORD Unknown0, DWORD Unknown1)
NTSTATUS NTAPI NtQueryEvent(IN HANDLE EventHandle, IN EVENT_INFORMATION_CLASS EventInformationClass, OUT PVOID EventInformation, IN ULONG EventInformationLength, OUT PULONG ReturnLength OPTIONAL)
DWORD BaseSetLastNTError(IN NTSTATUS Status)
#define VDM_DEC_REENTER_COUNT
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
HANDLE WaitObjectForParent
#define NtCurrentProcess()
#define CSR_CREATE_API_NUMBER(ServerId, ApiId)
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
#define STARTF_USESTDHANDLES
LPSTARTUPINFOA StartupInfo
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
BASE_SET_REENTER_COUNT SetReenterCountRequest
#define BASESRV_SERVERDLL_INDEX
#define NT_SUCCESS(StatCode)
BASE_GET_NEXT_VDM_COMMAND GetNextVDMCommandRequest
ULONG WINAPI BaseIsDosApplication(IN PUNICODE_STRING PathName, IN NTSTATUS Status)
DWORD WINAPI GetShortPathNameW(IN LPCWSTR lpszLongPath, OUT LPWSTR lpszShortPath, IN DWORD cchBuffer)
int strncmp(const char *String1, const char *String2, ACPI_SIZE Count)
BOOL WINAPI CmdBatNotification(DWORD Unknown)
NTSYSAPI VOID NTAPI RtlFreeAnsiString(PANSI_STRING AnsiString)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
#define BINARY_TYPE_SEPARATE_WOW
BASE_GETSET_VDM_CURDIRS VDMCurrentDirsRequest
BOOL WINAPI GetBinaryTypeA(IN LPCSTR lpApplicationName, OUT LPDWORD lpBinaryType)
union _BASE_API_MESSAGE::@3503 Data
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
static ENV_INFO BasepEnvNameType[]
BOOL WINAPI RegisterWowExec(DWORD Unknown0)
#define ERROR_INVALID_ACCESS
static const WCHAR Cleanup[]
LPSTARTUPINFOA StartupInfo
BOOL WINAPI RegisterWowBaseHandlers(DWORD Unknown0)
HANDLE ErrorHardwareEvent
HANDLE StartHardwareEvent
static UNICODE_STRING BaseDotPifSuffixName
NTSYSAPI NTSTATUS NTAPI RtlCreateEnvironment(_In_ BOOLEAN Inherit, _Out_ PWSTR *Environment)
NTSTATUS WINAPI BaseCheckVDM(IN ULONG BinaryType, IN PCWCH ApplicationName, IN PCWCH CommandLine, IN PCWCH CurrentDirectory, IN PANSI_STRING AnsiEnvironment, IN PBASE_API_MESSAGE ApiMessage, IN OUT PULONG iTask, IN DWORD CreationFlags, IN LPSTARTUPINFOW StartupInfo, IN HANDLE hUserToken OPTIONAL)
PVOID PVOID PWCHAR ApplicationName
NTSTATUS NTAPI NtAllocateVirtualMemory(IN HANDLE ProcessHandle, IN OUT PVOID *UBaseAddress, IN ULONG_PTR ZeroBits, IN OUT PSIZE_T URegionSize, IN ULONG AllocationType, IN ULONG Protect)
FORCEINLINE struct _TEB * NtCurrentTeb(VOID)
#define INVALID_SET_FILE_POINTER
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
__kernel_entry _Inout_ _Inout_ PSIZE_T RegionSize
NTSYSAPI NTSTATUS NTAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING DestinationString, PANSI_STRING SourceString, BOOLEAN AllocateDestinationString)
static DWORD WINAPI InternalGetBinaryType(HANDLE hFile)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
#define ReadFile(a, b, c, d, e)
#define STATUS_OBJECT_PATH_INVALID
#define VDM_INC_REENTER_COUNT
#define RtlZeroMemory(Destination, Length)
#define ERROR_INVALID_NAME
#define RtlCopyMemory(Destination, Source, Length)
#define _SEH2_EXCEPT(...)
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn BOOLEAN Physical UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 NameType
GLuint GLuint GLsizei GLenum type
struct _ENV_INFO ENV_INFO
BOOL WINAPI GetNextVDMCommand(PVDM_COMMAND_INFO CommandData)
_In_ HANDLE ProcessHandle
struct _ENV_INFO * PENV_INFO
NTSYSAPI BOOLEAN NTAPI RtlEqualUnicodeString(PUNICODE_STRING String1, PUNICODE_STRING String2, BOOLEAN CaseInSensitive)
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define HeapFree(x, y, z)
#define CONSRV_SERVERDLL_INDEX
#define RTL_CONSTANT_STRING(s)
NTSTATUS NTAPI NtFreeVirtualMemory(IN HANDLE ProcessHandle, IN PVOID *UBaseAddress, IN PSIZE_T URegionSize, IN ULONG FreeType)
PULONG MinorVersion OPTIONAL
NTSYSAPI NTSTATUS NTAPI NtWaitForSingleObject(IN HANDLE hObject, IN BOOLEAN bAlertable, IN PLARGE_INTEGER Timeout)