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

📄 ntddk.inc

📁 这是asm驱动的开发包
💻 INC
📖 第 1 页 / 共 5 页
字号:
;           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 + -