/* * 32-bit version of ntdll structures * * Copyright 2021 Alexandre Julliard * * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __WOW64_STRUCT32_H #define __WOW64_STRUCT32_H #include "wine/server.h" typedef struct { ULONG Length; ULONG RootDirectory; ULONG ObjectName; ULONG Attributes; ULONG SecurityDescriptor; ULONG SecurityQualityOfService; } OBJECT_ATTRIBUTES32; typedef struct { union { NTSTATUS Status; ULONG Pointer; }; ULONG Information; } IO_STATUS_BLOCK32; typedef struct { UNICODE_STRING32 Name; } OBJECT_NAME_INFORMATION32; typedef struct { UNICODE_STRING32 TypeName; ULONG TotalNumberOfObjects; ULONG TotalNumberOfHandles; ULONG TotalPagedPoolUsage; ULONG TotalNonPagedPoolUsage; ULONG TotalNamePoolUsage; ULONG TotalHandleTableUsage; ULONG HighWaterNumberOfObjects; ULONG HighWaterNumberOfHandles; ULONG HighWaterPagedPoolUsage; ULONG HighWaterNonPagedPoolUsage; ULONG HighWaterNamePoolUsage; ULONG HighWaterHandleTableUsage; ULONG InvalidAttributes; GENERIC_MAPPING GenericMapping; ULONG ValidAccessMask; BOOLEAN SecurityRequired; BOOLEAN MaintainHandleCount; UCHAR TypeIndex; CHAR ReservedByte; ULONG PoolType; ULONG DefaultPagedPoolCharge; ULONG DefaultNonPagedPoolCharge; } OBJECT_TYPE_INFORMATION32; typedef struct { UNICODE_STRING32 ObjectName; UNICODE_STRING32 ObjectTypeName; } DIRECTORY_BASIC_INFORMATION32; typedef struct { ULONG CompletionPort; ULONG CompletionKey; } FILE_COMPLETION_INFORMATION32; typedef struct { ULONG CompletionKey; ULONG CompletionValue; IO_STATUS_BLOCK32 IoStatusBlock; } FILE_IO_COMPLETION_INFORMATION32; typedef struct { BOOLEAN ReplaceIfExists; ULONG RootDirectory; ULONG FileNameLength; WCHAR FileName[1]; } FILE_RENAME_INFORMATION32; typedef struct { ULONG Mask; WORD Group; WORD Reserved[3]; } GROUP_AFFINITY32; typedef struct { DWORD NumberOfAssignedProcesses; DWORD NumberOfProcessIdsInList; ULONG ProcessIdList[1]; } JOBOBJECT_BASIC_PROCESS_ID_LIST32; typedef struct { LARGE_INTEGER PerProcessUserTimeLimit; LARGE_INTEGER PerJobUserTimeLimit; DWORD LimitFlags; ULONG MinimumWorkingSetSize; ULONG MaximumWorkingSetSize; DWORD ActiveProcessLimit; ULONG Affinity; DWORD PriorityClass; DWORD SchedulingClass; } JOBOBJECT_BASIC_LIMIT_INFORMATION32; typedef struct { JOBOBJECT_BASIC_LIMIT_INFORMATION32 BasicLimitInformation; IO_COUNTERS IoInfo; ULONG ProcessMemoryLimit; ULONG JobMemoryLimit; ULONG PeakProcessMemoryUsed; ULONG PeakJobMemoryUsed; } JOBOBJECT_EXTENDED_LIMIT_INFORMATION32; typedef struct { ULONG CompletionKey; LONG CompletionPort; } JOBOBJECT_ASSOCIATE_COMPLETION_PORT32; typedef struct { ULONG BaseAddress; ULONG AllocationBase; DWORD AllocationProtect; ULONG RegionSize; DWORD State; DWORD Protect; DWORD Type; } MEMORY_BASIC_INFORMATION32; typedef struct { UNICODE_STRING32 SectionFileName; } MEMORY_SECTION_NAME32; typedef union { ULONG Flags; struct { ULONG Valid : 1; ULONG ShareCount : 3; ULONG Win32Protection : 11; ULONG Shared : 1; ULONG Node : 6; ULONG Locked : 1; ULONG LargePage : 1; }; } MEMORY_WORKING_SET_EX_BLOCK32; typedef struct { ULONG VirtualAddress; MEMORY_WORKING_SET_EX_BLOCK32 VirtualAttributes; } MEMORY_WORKING_SET_EX_INFORMATION32; typedef struct { NTSTATUS ExitStatus; ULONG PebBaseAddress; ULONG AffinityMask; LONG BasePriority; ULONG UniqueProcessId; ULONG InheritedFromUniqueProcessId; } PROCESS_BASIC_INFORMATION32; typedef struct { ULONG Version; ULONG Reserved; ULONG Callback; } PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION32; typedef struct { ULONG ReserveSize; ULONG ZeroBits; ULONG StackBase; } PROCESS_STACK_ALLOCATION_INFORMATION32; typedef struct { ULONG PreferredNode; ULONG Reserved0; ULONG Reserved1; ULONG Reserved2; PROCESS_STACK_ALLOCATION_INFORMATION32 AllocInfo; } PROCESS_STACK_ALLOCATION_INFORMATION_EX32; typedef struct { ULONG Size; PS_CREATE_STATE State; union { struct { ULONG InitFlags; ACCESS_MASK AdditionalFileAccess; } InitState; struct { ULONG FileHandle; } FailSection; struct { USHORT DllCharacteristics; } ExeFormat; struct { ULONG IFEOKey; } ExeName; struct { ULONG OutputFlags; ULONG FileHandle; ULONG SectionHandle; ULONGLONG UserProcessParametersNative; ULONG UserProcessParametersWow64; ULONG CurrentParameterFlags; ULONGLONG PebAddressNative; ULONG PebAddressWow64; ULONGLONG ManifestAddress; ULONG ManifestSize; } SuccessState; }; } PS_CREATE_INFO32; typedef struct { ULONG Attribute; ULONG Size; ULONG Value; ULONG ReturnLength; } PS_ATTRIBUTE32; typedef struct { ULONG TotalLength; PS_ATTRIBUTE32 Attributes[1]; } PS_ATTRIBUTE_LIST32; typedef struct { ULONG Section; ULONG MappedBaseAddress; ULONG ImageBaseAddress; ULONG ImageSize; ULONG Flags; USHORT LoadOrderIndex; USHORT InitOrderIndex; USHORT LoadCount; USHORT NameOffset; BYTE Name[MAXIMUM_FILENAME_LENGTH]; } RTL_PROCESS_MODULE_INFORMATION32; typedef struct { ULONG ModulesCount; RTL_PROCESS_MODULE_INFORMATION32 Modules[1]; } RTL_PROCESS_MODULES32; typedef struct { USHORT NextOffset; RTL_PROCESS_MODULE_INFORMATION32 BaseInfo; ULONG ImageCheckSum; ULONG TimeDateStamp; ULONG DefaultBase; } RTL_PROCESS_MODULE_INFORMATION_EX32; typedef struct { ULONG BaseAddress; ULONG Attributes; LARGE_INTEGER Size; } SECTION_BASIC_INFORMATION32; typedef struct { ULONG TransferAddress; ULONG ZeroBits; ULONG MaximumStackSize; ULONG CommittedStackSize; ULONG SubSystemType; USHORT MinorSubsystemVersion; USHORT MajorSubsystemVersion; USHORT MajorOperatingSystemVersion; USHORT MinorOperatingSystemVersion; USHORT ImageCharacteristics; USHORT DllCharacteristics; USHORT Machine; BOOLEAN ImageContainsCode; UCHAR ImageFlags; ULONG LoaderFlags; ULONG ImageFileSize; ULONG CheckSum; } SECTION_IMAGE_INFORMATION32; typedef struct { ULONG Sid; DWORD Attributes; } SID_AND_ATTRIBUTES32; typedef struct { ULONG DefaultDacl; } TOKEN_DEFAULT_DACL32; typedef struct { DWORD GroupCount; SID_AND_ATTRIBUTES32 Groups[1]; } TOKEN_GROUPS32; typedef struct { ULONG Owner; } TOKEN_OWNER32; typedef struct { SID_AND_ATTRIBUTES32 User; } TOKEN_USER32; typedef struct { NTSTATUS ExitStatus; ULONG TebBaseAddress; CLIENT_ID32 ClientId; ULONG AffinityMask; LONG Priority; LONG BasePriority; } THREAD_BASIC_INFORMATION32; typedef struct { UNICODE_STRING32 Description; } THREAD_DESCRIPTION_INFORMATION32; typedef struct { ULONG PeakVirtualSize; ULONG VirtualSize; ULONG PageFaultCount; ULONG PeakWorkingSetSize; ULONG WorkingSetSize; ULONG QuotaPeakPagedPoolUsage; ULONG QuotaPagedPoolUsage; ULONG QuotaPeakNonPagedPoolUsage; ULONG QuotaNonPagedPoolUsage; ULONG PagefileUsage; ULONG PeakPagefileUsage; } VM_COUNTERS32; typedef struct { ULONG PeakVirtualSize; ULONG VirtualSize; ULONG PageFaultCount; ULONG PeakWorkingSetSize; ULONG WorkingSetSize; ULONG QuotaPeakPagedPoolUsage; ULONG QuotaPagedPoolUsage; ULONG QuotaPeakNonPagedPoolUsage; ULONG QuotaNonPagedPoolUsage; ULONG PagefileUsage; ULONG PeakPagefileUsage; ULONG PrivateUsage; } VM_COUNTERS_EX32; typedef struct { DBG_STATE NewState; CLIENT_ID32 AppClientId; union { struct { EXCEPTION_RECORD32 ExceptionRecord; ULONG FirstChance; } Exception; struct { ULONG HandleToThread; struct { ULONG SubSystemKey; ULONG StartAddress; } NewThread; } CreateThread; struct { ULONG HandleToProcess; ULONG HandleToThread; struct { ULONG SubSystemKey; ULONG FileHandle; ULONG BaseOfImage; ULONG DebugInfoFileOffset; ULONG DebugInfoSize; struct { ULONG SubSystemKey; ULONG StartAddress; } InitialThread; } NewProcess; } CreateProcessInfo; struct { NTSTATUS ExitStatus; } ExitProcess, ExitThread; struct { ULONG FileHandle; ULONG BaseOfDll; ULONG DebugInfoFileOffset; ULONG DebugInfoSize; ULONG NamePointer; } LoadDll; struct { ULONG BaseAddress; } UnloadDll; } StateInfo; } DBGUI_WAIT_STATE_CHANGE32; typedef struct { ULONG unknown; ULONG KeMaximumIncrement; ULONG PageSize; ULONG MmNumberOfPhysicalPages; ULONG MmLowestPhysicalPage; ULONG MmHighestPhysicalPage; ULONG AllocationGranularity; ULONG LowestUserAddress; ULONG HighestUserAddress; ULONG ActiveProcessorsAffinityMask; BYTE NumberOfProcessors; } SYSTEM_BASIC_INFORMATION32; typedef struct { ULONG CurrentSize; ULONG PeakSize; ULONG PageFaultCount; ULONG MinimumWorkingSet; ULONG MaximumWorkingSet; ULONG CurrentSizeIncludingTransitionInPages; ULONG PeakSizeIncludingTransitionInPages; ULONG TransitionRePurposeCount; ULONG Flags; } SYSTEM_CACHE_INFORMATION32; typedef struct { ULONG OwnerPid; BYTE ObjectType; BYTE HandleFlags; USHORT HandleValue; ULONG ObjectPointer; ULONG AccessMask; } SYSTEM_HANDLE_ENTRY32; typedef struct { ULONG Count; SYSTEM_HANDLE_ENTRY32 Handle[1]; } SYSTEM_HANDLE_INFORMATION32; typedef struct { ULONG RegistryQuotaAllowed; ULONG RegistryQuotaUsed; ULONG Reserved1; } SYSTEM_REGISTRY_QUOTA_INFORMATION32; typedef struct { ULONG Object; ULONG UniqueProcessId; ULONG HandleValue; ULONG GrantedAccess; USHORT CreatorBackTraceIndex; USHORT ObjectTypeIndex; ULONG HandleAttributes; ULONG Reserved; } SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX32; typedef struct { ULONG NumberOfHandles; ULONG Reserved; SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX32 Handles[1]; } SYSTEM_HANDLE_INFORMATION_EX32; typedef struct { ULONG ProcessorMask; LOGICAL_PROCESSOR_RELATIONSHIP Relationship; union { struct { BYTE Flags; } ProcessorCore; struct { DWORD NodeNumber; } NumaNode; CACHE_DESCRIPTOR Cache; ULONGLONG Reserved[2]; }; } SYSTEM_LOGICAL_PROCESSOR_INFORMATION32; typedef struct { BYTE Flags; BYTE EfficiencyClass; BYTE Reserved[20]; WORD GroupCount; GROUP_AFFINITY32 GroupMask[ANYSIZE_ARRAY]; } PROCESSOR_RELATIONSHIP32; typedef struct { DWORD NodeNumber; BYTE Reserved[20]; GROUP_AFFINITY32 GroupMask; } NUMA_NODE_RELATIONSHIP32; typedef struct { BYTE Level; BYTE Associativity; WORD LineSize; DWORD CacheSize; PROCESSOR_CACHE_TYPE Type; BYTE Reserved[20]; GROUP_AFFINITY32 GroupMask; } CACHE_RELATIONSHIP32; typedef struct { BYTE MaximumProcessorCount; BYTE ActiveProcessorCount; BYTE Reserved[38]; ULONG ActiveProcessorMask; } PROCESSOR_GROUP_INFO32; typedef struct { WORD MaximumGroupCount; WORD ActiveGroupCount; BYTE Reserved[20]; PROCESSOR_GROUP_INFO32 GroupInfo[ANYSIZE_ARRAY]; } GROUP_RELATIONSHIP32; typedef struct { LOGICAL_PROCESSOR_RELATIONSHIP Relationship; DWORD Size; union { PROCESSOR_RELATIONSHIP32 Processor; NUMA_NODE_RELATIONSHIP32 NumaNode; CACHE_RELATIONSHIP32 Cache; GROUP_RELATIONSHIP32 Group; }; } SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX32; typedef struct { LARGE_INTEGER KernelTime; LARGE_INTEGER UserTime; LARGE_INTEGER CreateTime; DWORD dwTickCount; ULONG StartAddress; CLIENT_ID32 ClientId; DWORD dwCurrentPriority; DWORD dwBasePriority; DWORD dwContextSwitches; DWORD dwThreadState; DWORD dwWaitReason; DWORD dwUnknown; } SYSTEM_THREAD_INFORMATION32; typedef struct { ULONG NextEntryOffset; DWORD dwThreadCount; DWORD dwUnknown1[6]; LARGE_INTEGER CreationTime; LARGE_INTEGER UserTime; LARGE_INTEGER KernelTime; UNICODE_STRING32 ProcessName; DWORD dwBasePriority; ULONG UniqueProcessId; ULONG ParentProcessId; ULONG HandleCount; ULONG SessionId; DWORD dwUnknown4; VM_COUNTERS_EX32 vmCounters; IO_COUNTERS ioCounters; SYSTEM_THREAD_INFORMATION32 ti[1]; } SYSTEM_PROCESS_INFORMATION32; struct __server_iovec32 { ULONG ptr; data_size_t size; }; struct __server_request_info32 { union { union generic_request req; union generic_reply reply; } u; unsigned int data_count; ULONG reply_data; struct __server_iovec32 data[__SERVER_MAX_DATA]; }; #endif /* __WOW64_STRUCT32_H */