📄 ntddk.inc
字号:
; Any changes made here should be reflected there as well.
; -
;typedef enum _FSINFOCLASS {
FileFsVolumeInformation equ 1
FileFsLabelInformation equ 2
FileFsSizeInformation equ 3
FileFsDeviceInformation equ 4
FileFsAttributeInformation equ 5
FileFsControlInformation equ 6
FileFsFullSizeInformation equ 7
FileFsObjectIdInformation equ 8
FileFsMaximumInformation equ 9
FILE_FS_DEVICE_INFORMATION STRUCT ; sizeof = 8
DeviceType DWORD ? ; 00h DEVICE_TYPE
Characteristics DWORD ? ; 04h
FILE_FS_DEVICE_INFORMATION ENDS
PFILE_FS_DEVICE_INFORMATION typedef PTR FILE_FS_DEVICE_INFORMATION
; Define segement buffer structure for scatter/gather read/write.
FILE_SEGMENT_ELEMENT UNION
Buffer QWORD ? ; PVOID64
Alignment QWORD ?
FILE_SEGMENT_ELEMENT ENDS
PFILE_SEGMENT_ELEMENT typedef ptr FILE_SEGMENT_ELEMENT
; Define the I/O bus interface types.
;typedef enum _INTERFACE_TYPE {
InterfaceTypeUndefined equ -1
Internal equ 0
Isa equ 1
Eisa equ 2
MicroChannel equ 3
TurboChannel equ 4
PCIBus equ 5
VMEBus equ 6
NuBus equ 7
PCMCIABus equ 8
CBus equ 9
MPIBus equ 10
MPSABus equ 11
ProcessorInternal equ 12
InternalPowerBus equ 13
PNPISABus equ 14
PNPBus equ 15
MaximumInterfaceType equ 16
; Define the DMA transfer widths.
;typedef enum _DMA_WIDTH {
Width8Bits equ 0
Width16Bits equ 1
Width32Bits equ 2
MaximumDmaWidth equ 3
; Define DMA transfer speeds.
;typedef enum _DMA_SPEED {
Compatible equ 0
TypeA equ 1
TypeB equ 2
TypeC equ 3
TypeF equ 4
MaximumDmaSpeed equ 5
; Define types of bus information.
;typedef enum _BUS_DATA_TYPE {
ConfigurationSpaceUndefined equ -1
Cmos equ 0
EisaConfiguration equ 1
Pos equ 2
CbusConfiguration equ 3
PCIConfiguration equ 4
VMEConfiguration equ 5
NuBusConfiguration equ 6
PCMCIAConfiguration equ 7
MPIConfiguration equ 8
MPSAConfiguration equ 9
PNPISAConfiguration equ 10
SgiInternalConfiguration equ 11
MaximumBusDataType equ 12
;} BUS_DATA_TYPE, *PBUS_DATA_TYPE;
; Define I/O Driver error log packet structure. This structure is filled in
; by the driver.
IO_ERROR_LOG_PACKET STRUCT ; sizeof = 30h
MajorFunctionCode BYTE ?
RetryCount BYTE ?
DumpDataSize WORD ?
NumberOfStrings WORD ?
StringOffset WORD ?
EventCategory WORD ?
WORD ?
ErrorCode SDWORD ? ; 00C NTSTATUS
UniqueErrorValue DWORD ? ; 010
FinalStatus SDWORD ? ; 014 NTSTATUS
SequenceNumber DWORD ? ; 018
IoControlCode DWORD ? ; 01C
DeviceOffset LARGE_INTEGER <> ; 020
DumpData DWORD 1 dup(?) ; 028
DWORD ?
IO_ERROR_LOG_PACKET ENDS
PIO_ERROR_LOG_PACKET typedef PTR IO_ERROR_LOG_PACKET
; Define the I/O error log message. This message is sent by the error log
; thread over the lpc port.
IO_ERROR_LOG_MESSAGE STRUCT
_Type WORD ?
_Size WORD ?
DriverNameLength WORD ?
WORD ? ; padding
TimeStamp LARGE_INTEGER <>
DriverNameOffset DWORD ?
EntryData IO_ERROR_LOG_PACKET <>
IO_ERROR_LOG_MESSAGE ENDS
PIO_ERROR_LOG_MESSAGE typedef PTR IO_ERROR_LOG_MESSAGE
; Define the maximum message size that will be sent over the LPC to the
; application reading the error log entries.
; Regardless of LPC size restrictions, ERROR_LOG_MAXIMUM_SIZE must remain
; a value that can fit in a UCHAR.
ERROR_LOG_LIMIT_SIZE equ (256-16)
; This limit, exclusive of IO_ERROR_LOG_MESSAGE_HEADER_LENGTH, also applies
; to IO_ERROR_LOG_MESSAGE_LENGTH
IO_ERROR_LOG_MESSAGE_HEADER_LENGTH equ ( (sizeof IO_ERROR_LOG_MESSAGE) - (sizeof IO_ERROR_LOG_PACKET) + (sizeof WORD)*40 )
ERROR_LOG_MESSAGE_LIMIT_SIZE equ ( ERROR_LOG_LIMIT_SIZE + IO_ERROR_LOG_MESSAGE_HEADER_LENGTH )
IFDEF _WIN64
PORT_MAXIMUM_MESSAGE_LENGTH equ 512
ELSE
PORT_MAXIMUM_MESSAGE_LENGTH equ 256
ENDIF
; IO_ERROR_LOG_MESSAGE_LENGTH is
; min(PORT_MAXIMUM_MESSAGE_LENGTH, ERROR_LOG_MESSAGE_LIMIT_SIZE)
IF PORT_MAXIMUM_MESSAGE_LENGTH GT ERROR_LOG_MESSAGE_LIMIT_SIZE
IO_ERROR_LOG_MESSAGE_LENGTH equ ERROR_LOG_MESSAGE_LIMIT_SIZE
ELSE
IO_ERROR_LOG_MESSAGE_LENGTH equ PORT_MAXIMUM_MESSAGE_LENGTH
ENDIF
;IO_ERROR_LOG_MESSAGE_LENGTH equ ( (PORT_MAXIMUM_MESSAGE_LENGTH > ERROR_LOG_MESSAGE_LIMIT_SIZE) ? \
; ERROR_LOG_MESSAGE_LIMIT_SIZE : \
; PORT_MAXIMUM_MESSAGE_LENGTH)
; Define the maximum packet size a driver can allocate.
ERROR_LOG_MAXIMUM_SIZE equ ( IO_ERROR_LOG_MESSAGE_LENGTH - IO_ERROR_LOG_MESSAGE_HEADER_LENGTH )
; Registry Specific Access Rights.
KEY_QUERY_VALUE equ 0001h
KEY_SET_VALUE equ 0002h
KEY_CREATE_SUB_KEY equ 0004h
KEY_ENUMERATE_SUB_KEYS equ 0008h
KEY_NOTIFY equ 0010h
KEY_CREATE_LINK equ 0020h
KEY_READ equ (STANDARD_RIGHTS_READ or KEY_QUERY_VALUE or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY) AND NOT SYNCHRONIZE
KEY_WRITE equ (STANDARD_RIGHTS_WRITE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY) AND NOT SYNCHRONIZE
KEY_EXECUTE equ (KEY_READ AND NOT SYNCHRONIZE)
KEY_ALL_ACCESS equ (STANDARD_RIGHTS_ALL or KEY_QUERY_VALUE or KEY_SET_VALUE or KEY_CREATE_SUB_KEY or KEY_ENUMERATE_SUB_KEYS or KEY_NOTIFY or KEY_CREATE_LINK) AND NOT SYNCHRONIZE
; Open/Create Options
REG_OPTION_RESERVED equ 00000000 ; Parameter is reserved
REG_OPTION_NON_VOLATILE equ 00000000 ; Key is preserved when system is rebooted
REG_OPTION_VOLATILE equ 00000001 ; Key is not preserved when system is rebooted
REG_OPTION_CREATE_LINK equ 00000002 ; Created key is a symbolic link
REG_OPTION_BACKUP_RESTORE equ 00000004 ; open for backup or restore special access rules privilege required
REG_OPTION_OPEN_LINK equ 00000008 ; Open symbolic link
REG_LEGAL_OPTION equ (REG_OPTION_RESERVED or REG_OPTION_NON_VOLATILE or REG_OPTION_VOLATILE or REG_OPTION_CREATE_LINK or REG_OPTION_BACKUP_RESTORE or REG_OPTION_OPEN_LINK)
; Key creation/open disposition
REG_CREATED_NEW_KEY equ 00000001 ; New Registry Key created
REG_OPENED_EXISTING_KEY equ 00000002 ; Existing Key opened
; Key restore flags
REG_WHOLE_HIVE_VOLATILE equ 00000001 ; Restore whole hive volatile
REG_REFRESH_HIVE equ 00000002 ; Unwind changes to last flush
REG_NO_LAZY_FLUSH equ 00000004 ; Never lazy flush this hive
REG_FORCE_RESTORE equ 00000008 ; Force the restore process even when we have open handles on subkeys
; Key query structures
KEY_BASIC_INFORMATION STRUCT
LastWriteTime LARGE_INTEGER <> ; 00h
TitleIndex DWORD ? ; 08h
NameLength DWORD ? ; 0Ch
_Name WORD ? ; 10h WCHAR Variable length string (original field name Name)
WORD ? ; 12h padding
KEY_BASIC_INFORMATION ENDS
PKEY_BASIC_INFORMATION typedef ptr KEY_BASIC_INFORMATION
KEY_NODE_INFORMATION STRUCT
LastWriteTime LARGE_INTEGER <> ; 00h
TitleIndex DWORD ? ; 08h
ClassOffset DWORD ? ; 0Ch
ClassLength DWORD ? ; 10h
NameLength DWORD ? ; 14h
_Name WORD ? ; 18h WCHAR Variable length string (original field name Name)
WORD ? ; 1Ah padding
; Class[1]; // Variable length string not declared
KEY_NODE_INFORMATION ENDS
PKEY_NODE_INFORMATION typedef ptr KEY_NODE_INFORMATION
KEY_FULL_INFORMATION STRUCT
LastWriteTime LARGE_INTEGER <> ; 00h
TitleIndex DWORD ? ; 08h
ClassOffset DWORD ? ; 0Ch
ClassLength DWORD ? ; 10h
SubKeys DWORD ? ; 14h
MaxNameLen DWORD ? ; 18h
MaxClassLen DWORD ? ; 1Ch
Values DWORD ? ; 20h
MaxValueNameLen DWORD ? ; 24h
MaxValueDataLen DWORD ? ; 28h
Class WORD ? ; 2Ch WCHAR Variable length
WORD ? ; 2Eh padding
KEY_FULL_INFORMATION ENDS
PKEY_FULL_INFORMATION typedef ptr KEY_FULL_INFORMATION
KEY_NAME_INFORMATION STRUCT
NameLength DWORD ? ; 00h
_Name WORD ? ; 04h WCHAR Variable length string (original field name Name)
WORD ? ; 06h padding
KEY_NAME_INFORMATION ENDS
PKEY_NAME_INFORMATION typedef ptr KEY_NAME_INFORMATION
;typedef enum _KEY_INFORMATION_CLASS {
KeyBasicInformation equ 0
KeyNodeInformation equ 1
KeyFullInformation equ 2
KeyNameInformation equ 3
KEY_WRITE_TIME_INFORMATION STRUCT
LastWriteTime LARGE_INTEGER <>
KEY_WRITE_TIME_INFORMATION ENDS
PKEY_WRITE_TIME_INFORMATION typedef ptr KEY_WRITE_TIME_INFORMATION
;typedef enum _KEY_SET_INFORMATION_CLASS {
KeyWriteTimeInformation equ 0
; Value entry query structures
KEY_VALUE_BASIC_INFORMATION STRUCT ; sizeof = 10h
TitleIndex DWORD ? ; 00h
_Type DWORD ? ; 04h (original field name Type)
NameLength DWORD ? ; 08h
_Name WORD ? ; 0Ch WCHAR Variable size (original field name Name)
WORD ? ; padding
KEY_VALUE_BASIC_INFORMATION ENDS
PKEY_VALUE_BASIC_INFORMATION typedef PTR KEY_VALUE_BASIC_INFORMATION
KEY_VALUE_FULL_INFORMATION STRUCT ; sizeof = 18h
TitleIndex DWORD ? ; 00h
_Type DWORD ? ; 04h (original field name Type)
DataOffset DWORD ? ; 08h
DataLength DWORD ? ; 0Ch
NameLength DWORD ? ; 10h
_Name WORD ? ; 14h WCHAR Variable size (original field name Name)
WORD ? ; 16h padding
;Data[1]; // Variable size data not declared
KEY_VALUE_FULL_INFORMATION ENDS
PKEY_VALUE_FULL_INFORMATION typedef PTR KEY_VALUE_FULL_INFORMATION
KEY_VALUE_PARTIAL_INFORMATION STRUCT ; sizeof = 10h
TitleIndex DWORD ?
_Type DWORD ? ; original field name Type
DataLength DWORD ?
Data BYTE ? ; Variable size
db 3 dup(?) ; padding
KEY_VALUE_PARTIAL_INFORMATION ENDS
PKEY_VALUE_PARTIAL_INFORMATION typedef PTR KEY_VALUE_PARTIAL_INFORMATION
KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 STRUCT ; sizeof = 0Ch
_Type DWORD ? ; (original field name Type)
DataLength DWORD ?
Data BYTE ? ; Variable size
db 3 dup(?) ; padding
KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 ENDS
PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64 typedef PTR KEY_VALUE_PARTIAL_INFORMATION_ALIGN64
KEY_VALUE_ENTRY STRUCT ; sizeof = 10h
ValueName PVOID ? ; PTR UNICODE_STRING
DataLength DWORD ?
DataOffset DWORD ?
_Type DWORD ? ; (original field name Type)
KEY_VALUE_ENTRY ENDS
PKEY_VALUE_ENTRY typedef PTR KEY_VALUE_ENTRY
;typedef enum _KEY_VALUE_INFORMATION_CLASS {
KeyValueBasicInformation equ 0
KeyValueFullInformation equ 1
KeyValuePartialInformation equ 2
KeyValueFullInformationAlign64 equ 3
KeyValuePartialInformationAlign64 equ 4
;OBJ_NAME_PATH_SEPARATOR dw "\", "\"
; Object Manager Object Type Specific Access Rights.
OBJECT_TYPE_CREATE equ 0001
OBJECT_TYPE_ALL_ACCESS equ (STANDARD_RIGHTS_REQUIRED or 1)
; Object Manager Directory Specific Access Rights.
DIRECTORY_QUERY equ 0001
DIRECTORY_TRAVERSE equ 0002
DIRECTORY_CREATE_OBJECT equ 0004
DIRECTORY_CREATE_SUBDIRECTORY equ 0008
DIRECTORY_ALL_ACCESS equ (STANDARD_RIGHTS_REQUIRED or 0Fh)
; Object Manager Symbolic Link Specific Access Rights.
SYMBOLIC_LINK_QUERY equ 0001
SYMBOLIC_LINK_ALL_ACCESS equ (STANDARD_RIGHTS_REQUIRED or 1)
OBJECT_NAME_INFORMATION STRUCT
_Name UNICODE_STRING <> ; (org name Name)
OBJECT_NAME_INFORMATION ENDS
POBJECT_NAME_INFORMATION typedef ptr OBJECT_NAME_INFORMATION
DUPLICATE_CLOSE_SOURCE equ 00000001 ; winnt
DUPLICATE_SAME_ACCESS equ 00000002 ; winnt
DUPLICATE_SAME_ATTRIBUTES equ 00000004
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Section Information Structures.
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;typedef enum _SECTION_INHERIT {
ViewShare equ 1
ViewUnmap equ 2
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Section Access Rights.
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;; begin_winnt
SECTION_QUERY equ 0001h
SECTION_MAP_WRITE equ 0002h
SECTION_MAP_READ equ 0004h
SECTION_MAP_EXECUTE equ 0008h
SECTION_EXTEND_SIZE equ 0010h
SECTION_ALL_ACCESS equ (STANDARD_RIGHTS_REQUIRED or SECTION_QUERY or SECTION_MAP_WRITE or SECTION_MAP_READ or SECTION_MAP_EXECUTE or SECTION_EXTEND_SIZE)
;; end_winnt
SEGMENT_ALL_ACCESS equ SECTION_ALL_ACCESS
PAGE_NOACCESS equ 01h ; winnt
PAGE_READONLY equ 02h ; winnt
PAGE_READWRITE equ 04h ; winnt
PAGE_WRITECOPY equ 08h ; winnt
PAGE_EXECUTE equ 10h ; winnt
PAGE_EXECUTE_READ equ 20h ; winnt
PAGE_EXECUTE_READWRITE equ 40h ; winnt
PAGE_EXECUTE_WRITECOPY equ 80h ; winnt
PAGE_GUARD equ 100h ; winnt
PAGE_NOCACHE equ 200h ; winnt
PAGE_WRITECOMBINE equ 400h ; winnt
MEM_COMMIT equ 1000h
MEM_RESERVE equ 2000h
MEM_DECOMMIT equ 4000h
MEM_RELEASE equ 8000h
MEM_FREE equ 10000h
MEM_PRIVATE equ 20000h
MEM_MAPPED equ 40000h
MEM_RESET equ 80000h
MEM_TOP_DOWN equ 100000h
MEM_LARGE_PAGES equ 20000000h
MEM_4MB_PAGES equ 80000000h
SEC_RESERVE equ 4000000h
PROCESS_DUP_HANDLE equ 0040h ; winnt
PROCESS_ALL_ACCESS equ (STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0FFFh)
MAXIMUM_PROCESSORS equ 32
; Thread Specific Access Rights
THREAD_TERMINATE equ 0001h ; winnt
THREAD_SET_INFORMATION equ 0020h ; winnt
THREAD_ALL_ACCESS equ (STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 3FFh)
; ClientId
CLIENT_ID STRUCT ; sizeof = 8
Uniq
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -