⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ntapi.h

📁 MinGW+MSYS开发必用的api参考
💻 H
📖 第 1 页 / 共 5 页
字号:
/* * ntapi.h * * Windows NT Native API * * Most structures in this file is obtained from Windows NT/2000 Native API * Reference by Gary Nebbett, ISBN 1578701996. * * This file is part of the w32api package. * * Contributors: *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net> * * THIS SOFTWARE IS NOT COPYRIGHTED * * This source code is offered for use in the public domain. You may * use, modify or distribute it freely. * * This code is distributed in the hope that it will be useful but * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY * DISCLAIMED. This includes but is not limited to warranties of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * */#ifndef __NTAPI_H#define __NTAPI_H#if __GNUC__ >= 3#pragma GCC system_header#endif#ifdef __cplusplusextern "C" {#endif#include <stdarg.h>#include <winbase.h>#include "ntddk.h"#include "ntpoapi.h"#pragma pack(push,4)typedef struct _PEB *PPEB;/* FIXME: Unknown definitions */typedef PVOID POBJECT_TYPE_LIST;typedef PVOID PEXECUTION_STATE;typedef PVOID PLANGID;#ifndef NtCurrentProcess#define NtCurrentProcess() ((HANDLE)0xFFFFFFFF)#endif /* NtCurrentProcess */#ifndef NtCurrentThread#define NtCurrentThread() ((HANDLE)0xFFFFFFFE)#endif /* NtCurrentThread *//* System information and control */typedef enum _SYSTEM_INFORMATION_CLASS {	SystemInformationClassMin = 0,	SystemBasicInformation = 0,	SystemProcessorInformation = 1,	SystemPerformanceInformation = 2,	SystemTimeOfDayInformation = 3,	SystemPathInformation = 4,	SystemNotImplemented1 = 4,	SystemProcessInformation = 5,	SystemProcessesAndThreadsInformation = 5,	SystemCallCountInfoInformation = 6,	SystemCallCounts = 6,	SystemDeviceInformation = 7,	SystemConfigurationInformation = 7,	SystemProcessorPerformanceInformation = 8,	SystemProcessorTimes = 8,	SystemFlagsInformation = 9,	SystemGlobalFlag = 9,	SystemCallTimeInformation = 10,	SystemNotImplemented2 = 10,	SystemModuleInformation = 11,	SystemLocksInformation = 12,	SystemLockInformation = 12,	SystemStackTraceInformation = 13,	SystemNotImplemented3 = 13,	SystemPagedPoolInformation = 14,	SystemNotImplemented4 = 14,	SystemNonPagedPoolInformation = 15,	SystemNotImplemented5 = 15,	SystemHandleInformation = 16,	SystemObjectInformation = 17,	SystemPageFileInformation = 18,	SystemPagefileInformation = 18,	SystemVdmInstemulInformation = 19,	SystemInstructionEmulationCounts = 19,	SystemVdmBopInformation = 20,	SystemInvalidInfoClass1 = 20,		SystemFileCacheInformation = 21,	SystemCacheInformation = 21,	SystemPoolTagInformation = 22,	SystemInterruptInformation = 23,	SystemProcessorStatistics = 23,	SystemDpcBehaviourInformation = 24,	SystemDpcInformation = 24,	SystemFullMemoryInformation = 25,	SystemNotImplemented6 = 25,	SystemLoadImage = 26,	SystemUnloadImage = 27,	SystemTimeAdjustmentInformation = 28,	SystemTimeAdjustment = 28,	SystemSummaryMemoryInformation = 29,	SystemNotImplemented7 = 29,	SystemNextEventIdInformation = 30,	SystemNotImplemented8 = 30,	SystemEventIdsInformation = 31,	SystemNotImplemented9 = 31,	SystemCrashDumpInformation = 32,	SystemExceptionInformation = 33,	SystemCrashDumpStateInformation = 34,	SystemKernelDebuggerInformation = 35,	SystemContextSwitchInformation = 36,	SystemRegistryQuotaInformation = 37,	SystemLoadAndCallImage = 38,	SystemPrioritySeparation = 39,	SystemPlugPlayBusInformation = 40,	SystemNotImplemented10 = 40,	SystemDockInformation = 41,	SystemNotImplemented11 = 41,	/* SystemPowerInformation = 42, Conflicts with POWER_INFORMATION_LEVEL 1 */	SystemInvalidInfoClass2 = 42,	SystemProcessorSpeedInformation = 43,	SystemInvalidInfoClass3 = 43,	SystemCurrentTimeZoneInformation = 44,	SystemTimeZoneInformation = 44,	SystemLookasideInformation = 45,	SystemSetTimeSlipEvent = 46,	SystemCreateSession = 47,	SystemDeleteSession = 48,	SystemInvalidInfoClass4 = 49,	SystemRangeStartInformation = 50,	SystemVerifierInformation = 51,	SystemAddVerifier = 52,	SystemSessionProcessesInformation	= 53,	SystemInformationClassMax} SYSTEM_INFORMATION_CLASS;typedef struct _SYSTEM_BASIC_INFORMATION {	ULONG  Unknown;	ULONG  MaximumIncrement;	ULONG  PhysicalPageSize;	ULONG  NumberOfPhysicalPages;	ULONG  LowestPhysicalPage;	ULONG  HighestPhysicalPage;	ULONG  AllocationGranularity;	ULONG  LowestUserAddress;	ULONG  HighestUserAddress;	ULONG  ActiveProcessors;	UCHAR  NumberProcessors;} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;typedef struct _SYSTEM_PROCESSOR_INFORMATION {	USHORT  ProcessorArchitecture;	USHORT  ProcessorLevel;	USHORT  ProcessorRevision;	USHORT  Unknown;	ULONG  FeatureBits;} SYSTEM_PROCESSOR_INFORMATION, *PSYSTEM_PROCESSOR_INFORMATION;typedef struct _SYSTEM_PERFORMANCE_INFORMATION {	LARGE_INTEGER  IdleTime;	LARGE_INTEGER  ReadTransferCount;	LARGE_INTEGER  WriteTransferCount;	LARGE_INTEGER  OtherTransferCount;	ULONG  ReadOperationCount;	ULONG  WriteOperationCount;	ULONG  OtherOperationCount;	ULONG  AvailablePages;	ULONG  TotalCommittedPages;	ULONG  TotalCommitLimit;	ULONG  PeakCommitment;	ULONG  PageFaults;	ULONG  WriteCopyFaults;	ULONG  TransitionFaults;	ULONG  CacheTransitionFaults;	ULONG  DemandZeroFaults;	ULONG  PagesRead;	ULONG  PageReadIos;	ULONG	 CacheReads;	ULONG	 CacheIos;	ULONG  PagefilePagesWritten;	ULONG  PagefilePageWriteIos;	ULONG  MappedFilePagesWritten;	ULONG  MappedFilePageWriteIos;	ULONG  PagedPoolUsage;	ULONG  NonPagedPoolUsage;	ULONG  PagedPoolAllocs;	ULONG  PagedPoolFrees;	ULONG  NonPagedPoolAllocs;	ULONG  NonPagedPoolFrees;	ULONG  TotalFreeSystemPtes;	ULONG  SystemCodePage;	ULONG  TotalSystemDriverPages;	ULONG  TotalSystemCodePages;	ULONG  SmallNonPagedLookasideListAllocateHits;	ULONG  SmallPagedLookasideListAllocateHits;	ULONG  Reserved3;	ULONG  MmSystemCachePage;	ULONG  PagedPoolPage;	ULONG  SystemDriverPage;	ULONG  FastReadNoWait;	ULONG  FastReadWait;	ULONG  FastReadResourceMiss;	ULONG  FastReadNotPossible;	ULONG  FastMdlReadNoWait;	ULONG  FastMdlReadWait;	ULONG  FastMdlReadResourceMiss;	ULONG  FastMdlReadNotPossible;	ULONG  MapDataNoWait;	ULONG  MapDataWait;	ULONG  MapDataNoWaitMiss;	ULONG  MapDataWaitMiss;	ULONG  PinMappedDataCount;	ULONG  PinReadNoWait;	ULONG  PinReadWait;	ULONG  PinReadNoWaitMiss;	ULONG  PinReadWaitMiss;	ULONG  CopyReadNoWait;	ULONG  CopyReadWait;	ULONG  CopyReadNoWaitMiss;	ULONG  CopyReadWaitMiss;	ULONG  MdlReadNoWait;	ULONG  MdlReadWait;	ULONG  MdlReadNoWaitMiss;	ULONG  MdlReadWaitMiss;	ULONG  ReadAheadIos;	ULONG  LazyWriteIos;	ULONG  LazyWritePages;	ULONG  DataFlushes;	ULONG  DataPages;	ULONG  ContextSwitches;	ULONG  FirstLevelTbFills;	ULONG  SecondLevelTbFills;	ULONG  SystemCalls;} SYSTEM_PERFORMANCE_INFORMATION, *PSYSTEM_PERFORMANCE_INFORMATION;typedef struct _SYSTEM_TIME_OF_DAY_INFORMATION {	LARGE_INTEGER  BootTime;	LARGE_INTEGER  CurrentTime;	LARGE_INTEGER  TimeZoneBias;	ULONG  CurrentTimeZoneId;} SYSTEM_TIME_OF_DAY_INFORMATION, *PSYSTEM_TIME_OF_DAY_INFORMATION;typedef struct _VM_COUNTERS {	ULONG  PeakVirtualSize;	ULONG  VirtualSize;	ULONG  PageFaultCount;	ULONG  PeakWorkingSetSize;	ULONG  WorkingSetSize;	ULONG  QuotaPeakPagedPoolUsage;	ULONG  QuotaPagedPoolUsage;	ULONG  QuotaPeakNonPagedPoolUsage;	ULONG  QuotaNonPagedPoolUsage;	ULONG  PagefileUsage;	ULONG  PeakPagefileUsage;} VM_COUNTERS;typedef enum _THREAD_STATE {	StateInitialized,	StateReady,	StateRunning,	StateStandby,	StateTerminated,	StateWait,	StateTransition,	StateUnknown} THREAD_STATE;typedef struct _SYSTEM_THREADS {	LARGE_INTEGER  KernelTime;	LARGE_INTEGER  UserTime;	LARGE_INTEGER  CreateTime;	ULONG  WaitTime;	PVOID  StartAddress;	CLIENT_ID  ClientId;	KPRIORITY  Priority;	KPRIORITY  BasePriority;	ULONG  ContextSwitchCount;	THREAD_STATE  State;	KWAIT_REASON  WaitReason;} SYSTEM_THREADS, *PSYSTEM_THREADS;typedef struct _SYSTEM_PROCESSES {	ULONG  NextEntryDelta;	ULONG  ThreadCount;	ULONG  Reserved1[6];	LARGE_INTEGER  CreateTime;	LARGE_INTEGER  UserTime;	LARGE_INTEGER  KernelTime;	UNICODE_STRING  ProcessName;	KPRIORITY  BasePriority;	ULONG  ProcessId;	ULONG  InheritedFromProcessId;	ULONG  HandleCount;	ULONG  Reserved2[2];	VM_COUNTERS  VmCounters;	IO_COUNTERS  IoCounters;	SYSTEM_THREADS  Threads[1];} SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;typedef struct _SYSTEM_CALLS_INFORMATION {	ULONG  Size;	ULONG  NumberOfDescriptorTables;	ULONG  NumberOfRoutinesInTable[1];	ULONG  CallCounts[ANYSIZE_ARRAY];} SYSTEM_CALLS_INFORMATION, *PSYSTEM_CALLS_INFORMATION;typedef struct _SYSTEM_CONFIGURATION_INFORMATION {	ULONG  DiskCount;	ULONG  FloppyCount;	ULONG  CdRomCount;	ULONG  TapeCount;	ULONG  SerialCount;	ULONG  ParallelCount;} SYSTEM_CONFIGURATION_INFORMATION, *PSYSTEM_CONFIGURATION_INFORMATION;typedef struct _SYSTEM_PROCESSOR_TIMES {	LARGE_INTEGER  IdleTime;	LARGE_INTEGER  KernelTime;	LARGE_INTEGER  UserTime;	LARGE_INTEGER  DpcTime;	LARGE_INTEGER  InterruptTime;	ULONG  InterruptCount;} SYSTEM_PROCESSOR_TIMES, *PSYSTEM_PROCESSOR_TIMES;/* SYSTEM_GLOBAL_FLAG.GlobalFlag constants */#define FLG_STOP_ON_EXCEPTION             0x00000001#define FLG_SHOW_LDR_SNAPS                0x00000002#define FLG_DEBUG_INITIAL_COMMAND         0x00000004#define FLG_STOP_ON_HUNG_GUI              0x00000008#define FLG_HEAP_ENABLE_TAIL_CHECK        0x00000010#define FLG_HEAP_ENABLE_FREE_CHECK        0x00000020#define FLG_HEAP_VALIDATE_PARAMETERS      0x00000040#define FLG_HEAP_VALIDATE_ALL             0x00000080#define FLG_POOL_ENABLE_TAIL_CHECK        0x00000100#define FLG_POOL_ENABLE_FREE_CHECK        0x00000200#define FLG_POOL_ENABLE_TAGGING           0x00000400#define FLG_HEAP_ENABLE_TAGGING           0x00000800#define FLG_USER_STACK_TRACE_DB           0x00001000#define FLG_KERNEL_STACK_TRACE_DB         0x00002000#define FLG_MAINTAIN_OBJECT_TYPELIST      0x00004000#define FLG_HEAP_ENABLE_TAG_BY_DLL        0x00008000#define FLG_IGNORE_DEBUG_PRIV             0x00010000#define FLG_ENABLE_CSRDEBUG               0x00020000#define FLG_ENABLE_KDEBUG_SYMBOL_LOAD     0x00040000#define FLG_DISABLE_PAGE_KERNEL_STACKS    0x00080000#define FLG_HEAP_ENABLE_CALL_TRACING      0x00100000#define FLG_HEAP_DISABLE_COALESCING       0x00200000#define FLG_ENABLE_CLOSE_EXCEPTIONS       0x00400000#define FLG_ENABLE_EXCEPTION_LOGGING      0x00800000#define FLG_ENABLE_DBGPRINT_BUFFERING     0x08000000typedef struct _SYSTEM_GLOBAL_FLAG {  ULONG  GlobalFlag;} SYSTEM_GLOBAL_FLAG, *PSYSTEM_GLOBAL_FLAG;typedef struct _SYSTEM_MODULE_INFORMATION_ENTRY {	ULONG	 Unknown1;	ULONG	 Unknown2;	PVOID  Base;	ULONG  Size;	ULONG  Flags;	USHORT  Index;  /* Length of module name not including the path, this     field contains valid value only for NTOSKRNL module */	USHORT	NameLength;	USHORT  LoadCount;	USHORT  PathLength;	CHAR  ImageName[256];} SYSTEM_MODULE_INFORMATION_ENTRY, *PSYSTEM_MODULE_INFORMATION_ENTRY;typedef struct _SYSTEM_MODULE_INFORMATION {	ULONG  Count;  SYSTEM_MODULE_INFORMATION_ENTRY Module[1];} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;typedef struct _SYSTEM_LOCK_INFORMATION {	PVOID  Address;	USHORT  Type;	USHORT  Reserved1;	ULONG  ExclusiveOwnerThreadId;	ULONG  ActiveCount;	ULONG  ContentionCount;	ULONG  Reserved2[2];	ULONG  NumberOfSharedWaiters;	ULONG  NumberOfExclusiveWaiters;} SYSTEM_LOCK_INFORMATION, *PSYSTEM_LOCK_INFORMATION;/*SYSTEM_HANDLE_INFORMATION.Flags cosntants */#define PROTECT_FROM_CLOSE                0x01#define INHERIT                           0x02typedef struct _SYSTEM_HANDLE_INFORMATION {	ULONG  ProcessId;	UCHAR  ObjectTypeNumber;	UCHAR  Flags;	USHORT  Handle;	PVOID  Object;	ACCESS_MASK  GrantedAccess;} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;typedef struct _SYSTEM_OBJECT_TYPE_INFORMATION {	ULONG  NextEntryOffset;	ULONG  ObjectCount;	ULONG  HandleCount;	ULONG  TypeNumber;	ULONG  InvalidAttributes;	GENERIC_MAPPING  GenericMapping;	ACCESS_MASK  ValidAccessMask;	POOL_TYPE  PoolType;	UCHAR  Unknown;	UNICODE_STRING  Name;} SYSTEM_OBJECT_TYPE_INFORMATION, *PSYSTEM_OBJECT_TYPE_INFORMATION;/* SYSTEM_OBJECT_INFORMATION.Flags constants */#define FLG_SYSOBJINFO_SINGLE_HANDLE_ENTRY    0x40#define FLG_SYSOBJINFO_DEFAULT_SECURITY_QUOTA 0x20#define FLG_SYSOBJINFO_PERMANENT              0x10#define FLG_SYSOBJINFO_EXCLUSIVE              0x08#define FLG_SYSOBJINFO_CREATOR_INFO           0x04#define FLG_SYSOBJINFO_KERNEL_MODE            0x02typedef struct _SYSTEM_OBJECT_INFORMATION {	ULONG  NextEntryOffset;	PVOID  Object;	ULONG  CreatorProcessId;	USHORT  Unknown;	USHORT  Flags;	ULONG  PointerCount;	ULONG  HandleCount;	ULONG  PagedPoolUsage;	ULONG  NonPagedPoolUsage;	ULONG  ExclusiveProcessId;	PSECURITY_DESCRIPTOR  SecurityDescriptor;	UNICODE_STRING  Name;} SYSTEM_OBJECT_INFORMATION, *PSYSTEM_OBJECT_INFORMATION;typedef struct _SYSTEM_PAGEFILE_INFORMATION {	ULONG  NextEntryOffset;	ULONG  CurrentSize;	ULONG  TotalUsed;	ULONG  PeakUsed;	UNICODE_STRING  FileName;} SYSTEM_PAGEFILE_INFORMATION, *PSYSTEM_PAGEFILE_INFORMATION;typedef struct _SYSTEM_INSTRUCTION_EMULATION_INFORMATION {	ULONG  SegmentNotPresent;	ULONG  TwoByteOpcode;	ULONG  ESprefix;	ULONG  CSprefix;	ULONG  SSprefix;	ULONG  DSprefix;	ULONG  FSPrefix;	ULONG  GSprefix;	ULONG  OPER32prefix;	ULONG  ADDR32prefix;	ULONG  INSB;	ULONG  INSW;	ULONG  OUTSB;	ULONG  OUTSW;	ULONG  PUSHFD;	ULONG  POPFD;	ULONG  INTnn;	ULONG  INTO;	ULONG  IRETD;	ULONG  INBimm;	ULONG  INWimm;	ULONG  OUTBimm;	ULONG  OUTWimm;	ULONG  INB;	ULONG  INW;	ULONG  OUTB;	ULONG  OUTW;	ULONG  LOCKprefix;	ULONG  REPNEprefix;	ULONG  REPprefix;	ULONG  HLT;	ULONG  CLI;	ULONG  STI;	ULONG  GenericInvalidOpcode;} SYSTEM_INSTRUCTION_EMULATION_INFORMATION, *PSYSTEM_INSTRUCTION_EMULATION_INFORMATION;typedef struct _SYSTEM_POOL_TAG_INFORMATION {	CHAR  Tag[4];	ULONG  PagedPoolAllocs;	ULONG  PagedPoolFrees;	ULONG  PagedPoolUsage;	ULONG  NonPagedPoolAllocs;	ULONG  NonPagedPoolFrees;	ULONG  NonPagedPoolUsage;} SYSTEM_POOL_TAG_INFORMATION, *PSYSTEM_POOL_TAG_INFORMATION;typedef struct _SYSTEM_PROCESSOR_STATISTICS {	ULONG  ContextSwitches;	ULONG  DpcCount;	ULONG  DpcRequestRate;	ULONG  TimeIncrement;	ULONG  DpcBypassCount;	ULONG  ApcBypassCount;} SYSTEM_PROCESSOR_STATISTICS, *PSYSTEM_PROCESSOR_STATISTICS;typedef struct _SYSTEM_DPC_INFORMATION {	ULONG  Reserved;	ULONG  MaximumDpcQueueDepth;	ULONG  MinimumDpcRate;	ULONG  AdjustDpcThreshold;	ULONG  IdealDpcRate;} SYSTEM_DPC_INFORMATION, *PSYSTEM_DPC_INFORMATION;typedef struct _SYSTEM_LOAD_IMAGE {	UNICODE_STRING  ModuleName;	PVOID  ModuleBase;	PVOID  SectionPointer;	PVOID  EntryPoint;	PVOID  ExportDirectory;} SYSTEM_LOAD_IMAGE, *PSYSTEM_LOAD_IMAGE;typedef struct _SYSTEM_UNLOAD_IMAGE {  PVOID  ModuleBase;} SYSTEM_UNLOAD_IMAGE, *PSYSTEM_UNLOAD_IMAGE;typedef struct _SYSTEM_QUERY_TIME_ADJUSTMENT {	ULONG  TimeAdjustment;	ULONG  MaximumIncrement;	BOOLEAN  TimeSynchronization;} SYSTEM_QUERY_TIME_ADJUSTMENT, *PSYSTEM_QUERY_TIME_ADJUSTMENT;typedef struct _SYSTEM_SET_TIME_ADJUSTMENT {	ULONG  TimeAdjustment;	BOOLEAN  TimeSynchronization;} SYSTEM_SET_TIME_ADJUSTMENT, *PSYSTEM_SET_TIME_ADJUSTMENT;typedef struct _SYSTEM_CRASH_DUMP_INFORMATION {	HANDLE  CrashDumpSectionHandle;	HANDLE  Unknown;} SYSTEM_CRASH_DUMP_INFORMATION, *PSYSTEM_CRASH_DUMP_INFORMATION;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -