26#define WIN32_NO_STATUS
33#define PSAPI_VERSION 1
123#elif defined(__aarch64__)
125#elif defined(__arm64ec__)
127#elif defined(__x86_64__)
129#elif defined(__arm__)
201 caught_by_dbg =
FALSE;
204 if (caught_by_dbg)
return;
228 HANDLE eventbuffer, eventdata;
234 if (
buffer && eventbuffer && eventdata)
247 } *mon_buffer = (
struct _mon_buffer_t*)
buffer;
252 mon_buffer->buffer[
str_len] = 0;
320 asm(
".seh_proc RaiseException\n\t"
321 "stp x29, x30, [sp, #-0xb0]!\n\t"
322 ".seh_save_fplr_x 0xb0\n\t"
323 ".seh_endprologue\n\t"
324 "and w1, w1, #0x01\n\t"
325 "stp w0, w1, [sp, #0x10]\n\t"
326 "adr x4, RaiseException\n\t"
327 "stp xzr, x4, [sp, #0x18]\n\t"
330 "csel w2, w2, w5, lo\n\t"
331 "str x2, [sp, #0x28]\n\t"
334 "add x0, sp, #0x30\n\t"
337 "1:\tadd x0, sp, #0x10\n\t"
338 "bl \"#RtlRaiseException\"\n\t"
339 "ldp x29, x30, [sp], #0xb0\n\t"
346 ".byte 0x48,0x8d,0xa4,0x24,0x00,0x00,0x00,0x00\n\t"
350 __ASM_CFI(
".cfi_adjust_cfa_offset 0xc8\n\t")
351 "leaq 0x20(%rsp),%rax\n\t"
352 "movl %ecx,(%rax)\n\t"
354 "movl %edx,4(%rax)\n\t"
355 "movq $0,8(%rax)\n\t"
356 "leaq " __ASM_NAME(
"RaiseException")
"(%rip),%rcx\n\t"
357 "movq %rcx,0x10(%rax)\n\t"
359 "movl $0,0x18(%rcx)\n\t"
360 "testl %r8d,%r8d\n\t"
366 "cmovb %r8d,%edx\n\t"
367 "movl %edx,0x18(%rcx)\n\t"
368 "leaq 0x20(%rcx),%rax\n"
369 "1:\tmovq (%r9),%r8\n\t"
370 "movq %r8,(%rax)\n\t"
376 "2:\tcall " __ASM_NAME(
"RtlRaiseException")
"\n\t"
378 __ASM_CFI(
".cfi_adjust_cfa_offset -0xc8\n\t")
402 else record.NumberParameters = 0;
496 if (len < 0 || len >=
size)
return;
522 attr.RootDirectory = 0;
526 attr.SecurityQualityOfService =
NULL;
596 static const char msg[] =
".\nDo you wish to debug it?";
602 TRACE(
"Killing process\n" );
643 else ERR(
"Couldn't start debugger %s (%ld)\n"
644 "Read the Wine Developers Guide on how to set up winedbg or another debugger\n",
671 attr.RootDirectory = 0;
675 attr.SecurityQualityOfService =
NULL;
726 TRACE(
"Broken app is writing to the resource data, enabling work-around\n" );
883 PEB_LDR_DATA32 *ldr_data32_ptr;
884 DWORD ldr_data32, first_module;
889 &peb32,
sizeof(peb32),
NULL )))
893 ldr_data32_ptr = (PEB_LDR_DATA32 *)(
DWORD_PTR) ldr_data32;
895 &first_module,
sizeof(first_module),
NULL ))
897 iter->
head = (
LIST_ENTRY *)&ldr_data32_ptr->InLoadOrderModuleList;
1027 if (needed) *needed = 0;
1120 if (
filter & ~LIST_MODULES_ALL)
1125 list_mode =
filter & LIST_MODULES_ALL;
1140 if (!(
is_win64 && list_mode == LIST_MODULES_32BIT))
1158 if (
is_win64 && target_wow64 && (list_mode & LIST_MODULES_32BIT))
1163 if (!(
is_win64 && list_mode == LIST_MODULES_32BIT))
1167 if (
is_win64 && target_wow64 && (list_mode & LIST_MODULES_64BIT))
1177 if (list_mode == LIST_MODULES_DEFAULT)
1330 len =
mem->SectionFileName.Length /
sizeof(
WCHAR);
1459 if (!
size)
return 0;
1565 info->cb =
sizeof(*info);
1569 info->PhysicalTotal = basic.MmNumberOfPhysicalPages;
1571 info->SystemCache = 0;
1596 info->HandleCount =
info->ProcessCount =
info->ThreadCount = 0;
1600 info->ProcessCount++;
1602 info->ThreadCount += spi->dwThreadCount;
1771 DWORD ntlen, devlen;
1791 ntlen = devlen + (
result->Length/
sizeof(
WCHAR) - 2);
1792 if (ntlen + 1 > *
size)
std::map< E_MODULE, HMODULE > mod
ACPI_SIZE strlen(const char *String)
static void startup(void)
struct outqueuenode * head
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const WCHAR nameW[]
_Inout_ PIRP _In_ NTSTATUS ExceptionCode
@ ProcessBasicInformation
@ ProcessWow64Information
static LPCWSTR LPCWSTR LPCWSTR env
NTSTATUS NTAPI DbgUiContinue(IN PCLIENT_ID ClientId, IN NTSTATUS ContinueStatus)
NTSTATUS NTAPI DbgUiDebugActiveProcess(IN HANDLE Process)
NTSTATUS NTAPI DbgUiStopDebugging(IN HANDLE Process)
NTSTATUS NTAPI DbgUiConnectToDbg(VOID)
#define ERROR_INSUFFICIENT_BUFFER
void format_size(uint64_t size, wstring &s, bool show_bytes)
static __inline BOOL set_ntstatus(NTSTATUS status)
#define ReadProcessMemory(a, b, c, d, e)
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define GetModuleFileNameExW(w, x, y, z)
#define EXCEPTION_MAXIMUM_PARAMETERS
#define GetProcAddress(x, y)
#define GetCurrentProcess()
#define RtlImageDirectoryEntryToData
#define HeapFree(x, y, z)
#define ERROR_INVALID_HANDLE
#define WINE_DECLARE_DEBUG_CHANNEL(x)
#define WideCharToMultiByte
static void cleanup(void)
DWORD WINAPI QueryDosDeviceW(LPCWSTR lpDeviceName, LPWSTR lpTargetPath, DWORD ucchMax)
BOOL WINAPI FreeEnvironmentStringsW(IN LPWSTR EnvironmentStrings)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
HMODULE WINAPI DECLSPEC_HOTPATCH GetModuleHandleA(LPCSTR lpModuleName)
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
BOOL WINAPI TerminateProcess(IN HANDLE hProcess, IN UINT uExitCode)
HANDLE WINAPI OpenProcess(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN DWORD dwProcessId)
BOOL WINAPI SetProcessWorkingSetSizeEx(IN HANDLE hProcess, IN SIZE_T dwMinimumWorkingSetSize, IN SIZE_T dwMaximumWorkingSetSize, IN DWORD Flags)
INT(WINAPI * MessageBoxA_funcptr)(HWND, LPCSTR, LPCSTR, UINT)
HRESULT WINAPI WerRegisterFile(const WCHAR *file, WER_REGISTER_FILE_TYPE type, DWORD flags)
void WINAPI DECLSPEC_HOTPATCH FatalAppExitW(UINT action, LPCWSTR str)
static LONG WINAPI debug_exception_handler(EXCEPTION_POINTERS *eptr)
BOOL WINAPI EnumProcesses(DWORD *ids, DWORD count, DWORD *used)
void WINAPI DECLSPEC_HOTPATCH OutputDebugStringA(LPCSTR str)
BOOL WINAPI DECLSPEC_HOTPATCH GetPerformanceInfo(PPERFORMANCE_INFORMATION info, DWORD size)
HRESULT WINAPI WerUnregisterMemoryBlock(void *block)
HRESULT WINAPI WerRegisterMemoryBlock(void *block, DWORD size)
DWORD WINAPI DECLSPEC_HOTPATCH GetModuleBaseNameW(HANDLE process, HMODULE module, WCHAR *name, DWORD size)
static void module_push_iter(struct module_push *mp, struct module_iterator *iter)
HRESULT WINAPI WerUnregisterFile(const WCHAR *file)
HRESULT WINAPI WerGetFlags(HANDLE process, DWORD *flags)
BOOL WINAPI DECLSPEC_HOTPATCH ContinueDebugEvent(DWORD pid, DWORD tid, DWORD status)
DWORD WINAPI DECLSPEC_HOTPATCH GetMappedFileNameA(HANDLE process, void *addr, char *name, DWORD size)
BOOL WINAPI DECLSPEC_HOTPATCH GetWsChanges(HANDLE process, PSAPI_WS_WATCH_INFORMATION *info, DWORD size)
void WINAPI DECLSPEC_HOTPATCH OutputDebugStringW(LPCWSTR str)
BOOL WINAPI EnumProcessModulesEx(HANDLE process, HMODULE *module, DWORD count, DWORD *needed, DWORD filter)
DWORD WINAPI DECLSPEC_HOTPATCH GetMappedFileNameW(HANDLE process, void *addr, WCHAR *name, DWORD size)
BOOL WINAPI GetModuleInformation(HANDLE process, HMODULE module, MODULEINFO *modinfo, DWORD count)
static BOOL get_ldr_module(HANDLE process, HMODULE module, LDR_DATA_TABLE_ENTRY *ldr_module)
BOOL WINAPI EnumDeviceDrivers(void **image_base, DWORD count, DWORD *needed)
void WINAPI DECLSPEC_HOTPATCH RaiseException(DWORD code, DWORD flags, DWORD count, const ULONG_PTR *args)
LONG WINAPI UnhandledExceptionFilter(EXCEPTION_POINTERS *epointers)
BOOL WINAPI DECLSPEC_HOTPATCH GetProcessMemoryInfo(HANDLE process, PROCESS_MEMORY_COUNTERS *pmc, DWORD count)
BOOL WINAPI QueryWorkingSetEx(HANDLE process, void *buffer, DWORD size)
BOOL WINAPI DECLSPEC_HOTPATCH QueryFullProcessImageNameA(HANDLE process, DWORD flags, char *name, DWORD *size)
DWORD WINAPI DECLSPEC_HOTPATCH GetProcessImageFileNameA(HANDLE process, char *file, DWORD size)
BOOL WINAPI EnumPageFilesA(PENUM_PAGE_FILE_CALLBACKA callback, void *context)
DWORD WINAPI DECLSPEC_HOTPATCH GetModuleFileNameExA(HANDLE process, HMODULE module, char *name, DWORD size)
static PTOP_LEVEL_EXCEPTION_FILTER top_filter
struct _LDR_DATA_TABLE_ENTRY32 LDR_DATA_TABLE_ENTRY32
HRESULT WINAPI WerSetFlags(DWORD flags)
static int module_push_all(struct module_push *mp, struct module_iterator *iter)
DWORD WINAPI DECLSPEC_HOTPATCH GetDeviceDriverFileNameA(void *image_base, char *name, DWORD size)
static int module_iterator_next(struct module_iterator *iter)
static BOOL start_debugger(EXCEPTION_POINTERS *epointers, HANDLE event)
DWORD WINAPI DECLSPEC_HOTPATCH GetModuleBaseNameA(HANDLE process, HMODULE module, char *name, DWORD size)
HRESULT WINAPI WerUnregisterRuntimeExceptionModule(const WCHAR *dll, void *context)
INT(WINAPI * MessageBoxW_funcptr)(HWND, LPCWSTR, LPCWSTR, UINT)
static BOOL start_debugger_atomic(EXCEPTION_POINTERS *epointers)
LPTOP_LEVEL_EXCEPTION_FILTER WINAPI DECLSPEC_HOTPATCH SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER filter)
BOOL WINAPI EnumPageFilesW(PENUM_PAGE_FILE_CALLBACKW callback, void *context)
DWORD WINAPI DECLSPEC_HOTPATCH GetDeviceDriverFileNameW(void *image_base, WCHAR *name, DWORD size)
void WINAPI DECLSPEC_HOTPATCH RaiseFailFastException(EXCEPTION_RECORD *record, CONTEXT *context, DWORD flags)
BOOL WINAPI DECLSPEC_HOTPATCH EnumProcessModules(HANDLE process, HMODULE *module, DWORD count, DWORD *needed)
static BOOL check_resource_write(void *addr)
BOOL WINAPI DECLSPEC_HOTPATCH DebugActiveProcess(DWORD pid)
DWORD WINAPI DECLSPEC_HOTPATCH GetProcessImageFileNameW(HANDLE process, WCHAR *file, DWORD size)
BOOL WINAPI DECLSPEC_HOTPATCH CheckRemoteDebuggerPresent(HANDLE process, BOOL *present)
static BOOL get_ldr_module32(HANDLE process, HMODULE module, LDR_DATA_TABLE_ENTRY32 *ldr_module)
static LONG WINAPI debug_exception_handler_wide(EXCEPTION_POINTERS *eptr)
BOOL WINAPI InitializeProcessForWsWatch(HANDLE process)
static void format_exception_msg(const EXCEPTION_POINTERS *ptr, char *buffer, int size)
BOOL WINAPI DECLSPEC_HOTPATCH QueryWorkingSet(HANDLE process, void *buffer, DWORD size)
DWORD WINAPI DECLSPEC_HOTPATCH GetDeviceDriverBaseNameA(void *image_base, char *name, DWORD size)
BOOL WINAPI DECLSPEC_HOTPATCH QueryFullProcessImageNameW(HANDLE process, DWORD flags, WCHAR *name, DWORD *size)
BOOL WINAPI IsDebuggerPresent(void)
HRESULT WINAPI WerRegisterRuntimeExceptionModule(const WCHAR *dll, void *context)
static BOOL init_module_iterator_wow64(struct module_iterator *iter, HANDLE process)
BOOL WINAPI DECLSPEC_HOTPATCH EmptyWorkingSet(HANDLE process)
BOOL WINAPI DECLSPEC_HOTPATCH DebugActiveProcessStop(DWORD pid)
DWORD WINAPI DECLSPEC_HOTPATCH GetDeviceDriverBaseNameW(void *image_base, WCHAR *name, DWORD size)
BOOL WINAPI DECLSPEC_HOTPATCH GetWsChangesEx(HANDLE process, PSAPI_WS_WATCH_INFORMATION_EX *info, DWORD *size)
void WINAPI DECLSPEC_HOTPATCH FatalAppExitA(UINT action, LPCSTR str)
static BOOL init_module_iterator(struct module_iterator *iter, HANDLE process)
DWORD file_name_WtoA(LPCWSTR src, INT srclen, LPSTR dest, INT destlen)
UINT WINAPI DECLSPEC_HOTPATCH GetErrorMode(void)
LPWSTR WINAPI DECLSPEC_HOTPATCH GetEnvironmentStringsW(void)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateMutexExW(SECURITY_ATTRIBUTES *sa, LPCWSTR name, DWORD flags, DWORD access)
static const WCHAR sizeW[]
static void * image_base(void)
#define InterlockedExchangePointer(Target, Value)
struct _UNICODE_STRING UNICODE_STRING
HANDLE NTAPI OpenFileMappingW(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCWSTR lpName)
@ SystemProcessInformation
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
GLenum const GLvoid * addr
GLenum GLenum GLenum GLenum mapping
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
#define PROCESS_SUSPEND_RESUME
#define PROCESS_QUERY_INFORMATION
#define PROCESS_CREATE_THREAD
@ ProcessImageFileNameWin32
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserProcess(ULONG)
#define EXCEPTION_EXECUTE_HANDLER
#define EXCEPTION_CONTINUE_SEARCH
#define EXCEPTION_CONTINUE_EXECUTION
#define InterlockedCompareExchangePointer
static const BOOL is_win64
#define SystemPerformanceInformation
#define memcpy(s1, s2, n)
#define memmove(s1, s2, n)
static IPrintDialogCallback callback
static HMODULE MODULEINFO * modinfo
#define __ASM_GLOBAL_FUNC(name, code)
NTSYSAPI VOID NTAPI RtlUnwind(_In_opt_ PVOID TargetFrame, _In_opt_ PVOID TargetIp, _In_opt_ PEXCEPTION_RECORD ExceptionRecord, _In_ PVOID ReturnValue)
NTSYSAPI VOID NTAPI RtlRaiseException(_In_ PEXCEPTION_RECORD ExceptionRecord)
#define SEM_NOGPFAULTERRORBOX
NTSYSAPI NTSTATUS NTAPI RtlUnicodeStringToAnsiString(PANSI_STRING DestinationString, PUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
NTSYSAPI NTSTATUS NTAPI NtOpenKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
NTSYSAPI VOID NTAPI RtlFreeAnsiString(PANSI_STRING AnsiString)
@ KeyValuePartialInformation
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
NTSYSAPI NTSTATUS NTAPI NtQueryValueKey(IN HANDLE KeyHandle, IN PUNICODE_STRING ValueName, IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, IN PVOID KeyValueInformation, IN ULONG Length, IN PULONG ResultLength)
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
NTSTATUS NTAPI NtSetEvent(IN HANDLE EventHandle, OUT PLONG PreviousState OPTIONAL)
NTSTATUS NTAPI NtCreateEvent(OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN EVENT_TYPE EventType, IN BOOLEAN InitialState)
NTSTATUS NTAPI NtQueryVirtualMemory(IN HANDLE ProcessHandle, IN PVOID BaseAddress, IN MEMORY_INFORMATION_CLASS MemoryInformationClass, OUT PVOID MemoryInformation, IN SIZE_T MemoryInformationLength, OUT PSIZE_T ReturnLength)
NTSTATUS NTAPI NtQueryInformationProcess(_In_ HANDLE ProcessHandle, _In_ PROCESSINFOCLASS ProcessInformationClass, _Out_ PVOID ProcessInformation, _In_ ULONG ProcessInformationLength, _Out_opt_ PULONG ReturnLength)
#define STATUS_FAIL_FAST_EXCEPTION
#define STATUS_POSSIBLE_DEADLOCK
#define DBG_PRINTEXCEPTION_C
#define IMAGE_DIRECTORY_ENTRY_RESOURCE
BOOL(CALLBACK * PENUM_PAGE_FILE_CALLBACKW)(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCWSTR)
struct _PROCESS_MEMORY_COUNTERS PROCESS_MEMORY_COUNTERS
BOOL(CALLBACK * PENUM_PAGE_FILE_CALLBACKA)(LPVOID, PENUM_PAGE_FILE_INFORMATION, LPCSTR)
static unsigned __int64 next
#define __ASM_GLOBAL_IMPORT(name)
#define __ASM_STDCALL_FUNC(name, args, code)
#define __ASM_STDCALL(name, args)
#define EXCEPTION_WINE_ASSERTION
#define offsetof(TYPE, MEMBER)
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
_Check_return_ _CRTIMP int __cdecl wcsncmp(_In_reads_or_z_(_MaxCount) const wchar_t *_Str1, _In_reads_or_z_(_MaxCount) const wchar_t *_Str2, _In_ size_t _MaxCount)
#define DECLSPEC_HOTPATCH
#define EXCEPTION_WRITE_FAULT
#define EXCEPTION_EXECUTE_FAULT
#define STATUS_BUFFER_TOO_SMALL
NTSYSAPI NTSTATUS NTAPI NtQuerySystemInformation(IN SYSTEM_INFORMATION_CLASS SystemInfoClass, OUT PVOID SystemInfoBuffer, IN ULONG SystemInfoBufferSize, OUT PULONG BytesReturned OPTIONAL)
PEXCEPTION_RECORD ExceptionRecord
ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]
UNICODE_STRING32 FullDllName
LIST_ENTRY32 InLoadOrderModuleList
LIST_ENTRY32 InInitializationOrderModuleList
LIST_ENTRY32 InMemoryOrderModuleList
UNICODE_STRING32 BaseDllName
UNICODE_STRING FullDllName
LIST_ENTRY InLoadOrderLinks
UNICODE_STRING BaseDllName
struct _LIST_ENTRY * Flink
LIST_ENTRY InLoadOrderModuleList
SIZE_T QuotaNonPagedPoolUsage
SIZE_T PeakWorkingSetSize
SIZE_T QuotaPeakNonPagedPoolUsage
SIZE_T QuotaPeakPagedPoolUsage
SIZE_T QuotaPagedPoolUsage
SIZE_T QuotaPeakPagedPoolUsage
SIZE_T PeakWorkingSetSize
SIZE_T QuotaPeakNonPagedPoolUsage
SIZE_T QuotaNonPagedPoolUsage
SIZE_T QuotaPagedPoolUsage
LDR_DATA_TABLE_ENTRY32 ldr_module32
LDR_DATA_TABLE_ENTRY ldr_module
#define EXCEPTION_NONCONTINUABLE
#define EXCEPTION_WINE_STUB
DWORD WINAPI WaitForMultipleObjects(IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH OpenEventW(IN DWORD dwDesiredAccess, IN BOOL bInheritHandle, IN LPCWSTR lpName)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex(IN HANDLE hMutex)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
#define RTL_CONSTANT_STRING(s)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_NO_SUCH_DEVICE
#define STATUS_INFO_LENGTH_MISMATCH
static EFI_HANDLE * handles
enum _WER_REGISTER_FILE_TYPE WER_REGISTER_FILE_TYPE
BOOL NTAPI VirtualProtect(IN LPVOID lpAddress, IN SIZE_T dwSize, IN DWORD flNewProtect, OUT PDWORD lpflOldProtect)
SIZE_T NTAPI VirtualQuery(IN LPCVOID lpAddress, OUT PMEMORY_BASIC_INFORMATION lpBuffer, IN SIZE_T dwLength)
PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER
#define PROCESS_NAME_NATIVE
LONG(CALLBACK * PTOP_LEVEL_EXCEPTION_FILTER)(LPEXCEPTION_POINTERS)
#define EXCEPTION_STACK_OVERFLOW
DWORD WINAPI GetLastError(void)
#define STARTF_USESHOWWINDOW
#define EXCEPTION_INT_DIVIDE_BY_ZERO
DWORD WINAPI GetCurrentThreadId(void)
#define EXCEPTION_INT_OVERFLOW
#define EVENT_MODIFY_STATE
#define CREATE_UNICODE_ENVIRONMENT
DWORD WINAPI GetCurrentProcessId(void)
void WINAPI DebugBreak(void)
#define EXCEPTION_ARRAY_BOUNDS_EXCEEDED
#define EXCEPTION_DATATYPE_MISALIGNMENT
#define EXCEPTION_ILLEGAL_INSTRUCTION
#define EXCEPTION_ACCESS_VIOLATION
#define EXCEPTION_PRIV_INSTRUCTION
_Inout_ PERBANDINFO * pbi
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
#define ERROR_PARTIAL_COPY
#define DBG_PRINTEXCEPTION_WIDE_C
static unsigned int block