📄 ntddk.inc
字号:
FILE_DEVICE_DISK_FILE_SYSTEM equ 08
FILE_DEVICE_FILE_SYSTEM equ 09
FILE_DEVICE_INPORT_PORT equ 0ah
FILE_DEVICE_KEYBOARD equ 0bh
FILE_DEVICE_MAILSLOT equ 0ch
FILE_DEVICE_MIDI_IN equ 0dh
FILE_DEVICE_MIDI_OUT equ 0eh
FILE_DEVICE_MOUSE equ 0fh
FILE_DEVICE_MULTI_UNC_PROVIDER equ 10h
FILE_DEVICE_NAMED_PIPE equ 11h
FILE_DEVICE_NETWORK equ 12h
FILE_DEVICE_NETWORK_BROWSER equ 13h
FILE_DEVICE_NETWORK_FILE_SYSTEM equ 14h
FILE_DEVICE_NULL equ 15h
FILE_DEVICE_PARALLEL_PORT equ 16h
FILE_DEVICE_PHYSICAL_NETCARD equ 17h
FILE_DEVICE_PRINTER equ 18h
FILE_DEVICE_SCANNER equ 19h
FILE_DEVICE_SERIAL_MOUSE_PORT equ 1ah
FILE_DEVICE_SERIAL_PORT equ 1bh
FILE_DEVICE_SCREEN equ 1ch
FILE_DEVICE_SOUND equ 1dh
FILE_DEVICE_STREAMS equ 1eh
FILE_DEVICE_TAPE equ 1fh
FILE_DEVICE_TAPE_FILE_SYSTEM equ 20h
FILE_DEVICE_TRANSPORT equ 21h
FILE_DEVICE_UNKNOWN equ 22h
FILE_DEVICE_VIDEO equ 23h
FILE_DEVICE_VIRTUAL_DISK equ 24h
FILE_DEVICE_WAVE_IN equ 25h
FILE_DEVICE_WAVE_OUT equ 26h
FILE_DEVICE_8042_PORT equ 27h
FILE_DEVICE_NETWORK_REDIRECTOR equ 28h
FILE_DEVICE_BATTERY equ 29h
FILE_DEVICE_BUS_EXTENDER equ 2ah
FILE_DEVICE_MODEM equ 2bh
FILE_DEVICE_VDM equ 2ch
FILE_DEVICE_MASS_STORAGE equ 2dh
FILE_DEVICE_SMB equ 2eh
FILE_DEVICE_KS equ 2fh
FILE_DEVICE_CHANGER equ 30h
FILE_DEVICE_SMARTCARD equ 31h
FILE_DEVICE_ACPI equ 32h
FILE_DEVICE_DVD equ 33h
FILE_DEVICE_FULLSCREEN_VIDEO equ 34h
FILE_DEVICE_DFS_FILE_SYSTEM equ 35h
FILE_DEVICE_DFS_VOLUME equ 36h
FILE_DEVICE_SERENUM equ 37h
FILE_DEVICE_TERMSRV equ 38h
FILE_DEVICE_KSEC equ 39h
; +
; Macro definition for defining IOCTL and FSCTL function control codes. Note
; that function codes 0-2047 are reserved for Microsoft Corporation, and
; 2048-4095 are reserved for customers.
; -
CTL_CODE MACRO DeviceType:=<0>, Function:=<0>, Method:=<0>, Access:=<0>
EXITM %(((DeviceType) SHL 16) OR ((Access) SHL 14) OR ((Function) SHL 2) OR (Method))
ENDM
; Macro to extract device type out of the device io control code
DEVICE_TYPE_FROM_CTL_CODE MACRO ctrlCode:REQ
EXITM %(((ctrlCode) AND 0ffff0000h) SHR 16)
ENDM
; Define the method codes for how buffers are passed for I/O and FS controls
METHOD_BUFFERED equ 0
METHOD_IN_DIRECT equ 1
METHOD_OUT_DIRECT equ 2
METHOD_NEITHER equ 3
; Define the access check value for any access
;
; The FILE_READ_ACCESS and FILE_WRITE_ACCESS constants are also defined in
; ntioapi.h as FILE_READ_DATA and FILE_WRITE_DATA. The values for these
; constants *MUST* always be in sync.
;
; FILE_SPECIAL_ACCESS is checked by the NT I/O system the same as FILE_ANY_ACCESS.
; The file systems, however, may add additional access checks for I/O and FS controls
; that use this value.
FILE_ANY_ACCESS equ 0
FILE_SPECIAL_ACCESS equ FILE_ANY_ACCESS
FILE_READ_ACCESS equ 1 ; file & pipe
FILE_WRITE_ACCESS equ 2 ; file & pipe
; Define access rights to files and directories
; +
; The FILE_READ_DATA and FILE_WRITE_DATA constants are also defined in
; devioctl.h as FILE_READ_ACCESS and FILE_WRITE_ACCESS. The values for these
; constants *MUST* always be in sync.
; The values are redefined in devioctl.h because they must be available to
; both DOS and NT.
; -
FILE_READ_DATA equ 0001 ; file & pipe
FILE_LIST_DIRECTORY equ 0001 ; directory
FILE_WRITE_DATA equ 0002 ; file & pipe
FILE_ADD_FILE equ 0002 ; directory
FILE_APPEND_DATA equ 0004 ; file
FILE_ADD_SUBDIRECTORY equ 0004 ; directory
FILE_CREATE_PIPE_INSTANCE equ 0004 ; named pipe
FILE_READ_EA equ 0008 ; file & directory
FILE_WRITE_EA equ 0010h ; file & directory
FILE_EXECUTE equ 0020h ; file
FILE_TRAVERSE equ 0020h ; directory
FILE_DELETE_CHILD equ 0040h ; directory
FILE_READ_ATTRIBUTES equ 0080h ; all
FILE_WRITE_ATTRIBUTES equ 0100h ; all
FILE_ALL_ACCESS equ (STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 1FFh)
FILE_GENERIC_READ equ (STANDARD_RIGHTS_READ or FILE_READ_DATA or FILE_READ_ATTRIBUTES or FILE_READ_EA or SYNCHRONIZE)
FILE_GENERIC_WRITE equ (STANDARD_RIGHTS_WRITE or FILE_WRITE_DATA or FILE_WRITE_ATTRIBUTES or FILE_WRITE_EA or FILE_APPEND_DATA or SYNCHRONIZE)
FILE_GENERIC_EXECUTE equ (STANDARD_RIGHTS_EXECUTE or FILE_READ_ATTRIBUTES or FILE_EXECUTE or SYNCHRONIZE)
; Define share access rights to files and directories
FILE_SHARE_READ equ 1 ; winnt
FILE_SHARE_WRITE equ 2 ; winnt
FILE_SHARE_DELETE equ 4 ; winnt
FILE_SHARE_VALID_FLAGS equ 7
; +
; Define the file attributes values
;
; Note: 0x00000008 is reserved for use for the old DOS VOLID (volume ID)
; and is therefore not considered valid in NT.
;
; Note: 0x00000010 is reserved for use for the old DOS SUBDIRECTORY flag
; and is therefore not considered valid in NT. This flag has
; been disassociated with file attributes since the other flags are
; protected with READ_ and WRITE_ATTRIBUTES access to the file.
;
; Note: Note also that the order of these flags is set to allow both the
; FAT and the Pinball File Systems to directly set the attributes
; flags in attributes words without having to pick each flag out
; individually. The order of these flags should not be changed!
; -
FILE_ATTRIBUTE_READONLY equ 00000001h ; winnt
FILE_ATTRIBUTE_HIDDEN equ 00000002h ; winnt
FILE_ATTRIBUTE_SYSTEM equ 00000004h ; winnt
FILE_ATTRIBUTE_DIRECTORY equ 00000010h ; winnt
FILE_ATTRIBUTE_ARCHIVE equ 00000020h ; winnt
FILE_ATTRIBUTE_DEVICE equ 00000040h ; winnt
FILE_ATTRIBUTE_NORMAL equ 00000080h ; winnt
FILE_ATTRIBUTE_TEMPORARY equ 00000100h ; winnt
FILE_ATTRIBUTE_SPARSE_FILE equ 00000200h ; winnt
FILE_ATTRIBUTE_REPARSE_POINT equ 00000400h ; winnt
FILE_ATTRIBUTE_COMPRESSED equ 00000800h ; winnt
FILE_ATTRIBUTE_OFFLINE equ 00001000h ; winnt
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED equ 00002000h ; winnt
FILE_ATTRIBUTE_ENCRYPTED equ 00004000h ; winnt
; This definition is old and will disappear shortly
FILE_ATTRIBUTE_CONTENT_INDEXED equ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
FILE_ATTRIBUTE_VALID_FLAGS equ 00007fb7h
FILE_ATTRIBUTE_VALID_SET_FLAGS equ 000031a7h
; Define the create disposition values
FILE_SUPERSEDE equ 0
FILE_OPEN equ 1
FILE_CREATE equ 2
FILE_OPEN_IF equ 3
FILE_OVERWRITE equ 4
FILE_OVERWRITE_IF equ 5
FILE_MAXIMUM_DISPOSITION equ 5
; Define the create/open option flags
FILE_DIRECTORY_FILE equ 00000001h
FILE_WRITE_THROUGH equ 00000002h
FILE_SEQUENTIAL_ONLY equ 00000004h
FILE_NO_INTERMEDIATE_BUFFERING equ 00000008h
FILE_SYNCHRONOUS_IO_ALERT equ 00000010h
FILE_SYNCHRONOUS_IO_NONALERT equ 00000020h
FILE_NON_DIRECTORY_FILE equ 00000040h
FILE_CREATE_TREE_CONNECTION equ 00000080h
FILE_COMPLETE_IF_OPLOCKED equ 00000100h
FILE_NO_EA_KNOWLEDGE equ 00000200h
FILE_OPEN_FOR_RECOVERY equ 00000400h
FILE_RANDOM_ACCESS equ 00000800h
FILE_DELETE_ON_CLOSE equ 00001000h
FILE_OPEN_BY_FILE_ID equ 00002000h
FILE_OPEN_FOR_BACKUP_INTENT equ 00004000h
FILE_NO_COMPRESSION equ 00008000h
FILE_RESERVE_OPFILTER equ 00100000h
FILE_OPEN_REPARSE_POINT equ 00200000h
FILE_OPEN_NO_RECALL equ 00400000h
FILE_OPEN_FOR_FREE_SPACE_QUERY equ 00800000h
FILE_COPY_STRUCTURED_STORAGE equ 00000041h
FILE_STRUCTURED_STORAGE equ 00000441h
FILE_VALID_OPTION_FLAGS equ 00ffffffh
FILE_VALID_PIPE_OPTION_FLAGS equ 00000032h
FILE_VALID_MAILSLOT_OPTION_FLAGS equ 00000032h
FILE_VALID_SET_FLAGS equ 00000036h
; Define the I/O status information return values for NtCreateFile/NtOpenFile
FILE_SUPERSEDED equ 0
FILE_OPENED equ 1
FILE_CREATED equ 2
FILE_OVERWRITTEN equ 3
FILE_EXISTS equ 4
FILE_DOES_NOT_EXIST equ 5
; Define special ByteOffset parameters for read and write operations
FILE_WRITE_TO_END_OF_FILE equ 0ffffffffh
FILE_USE_FILE_POINTER_POSITION equ 0fffffffeh
; Define alignment requirement values
FILE_BYTE_ALIGNMENT equ 00000000h
FILE_WORD_ALIGNMENT equ 00000001h
FILE_LONG_ALIGNMENT equ 00000003h
FILE_QUAD_ALIGNMENT equ 00000007h
FILE_OCTA_ALIGNMENT equ 0000000fh
FILE_32_BYTE_ALIGNMENT equ 0000001fh
FILE_64_BYTE_ALIGNMENT equ 0000003fh
FILE_128_BYTE_ALIGNMENT equ 0000007fh
FILE_256_BYTE_ALIGNMENT equ 000000ffh
FILE_512_BYTE_ALIGNMENT equ 000001ffh
; Define the maximum length of a filename string
MAXIMUM_FILENAME_LENGTH equ 256
; Define the various device characteristics flags
FILE_REMOVABLE_MEDIA equ 00000001h
FILE_READ_ONLY_DEVICE equ 00000002h
FILE_FLOPPY_DISKETTE equ 00000004h
FILE_WRITE_ONCE_MEDIA equ 00000008h
FILE_REMOTE_DEVICE equ 00000010h
FILE_DEVICE_IS_MOUNTED equ 00000020h
FILE_VIRTUAL_VOLUME equ 00000040h
FILE_AUTOGENERATED_DEVICE_NAME equ 00000080h
FILE_DEVICE_SECURE_OPEN equ 00000100h
; end_wdm
; flags specified here will be propagated up and down a device stack
; after FDO and all filter devices are added, but before the device
; stack is started
FILE_CHARACTERISTICS_PROPAGATED equ FILE_REMOVABLE_MEDIA or FILE_READ_ONLY_DEVICE or FILE_FLOPPY_DISKETTE or FILE_WRITE_ONCE_MEDIA or FILE_DEVICE_SECURE_OPEN
; Define the base asynchronous I/O argument types
IO_STATUS_BLOCK STRUCT ; sizeof = 08h
Status SDWORD ? ; 0000h NTSTATUS
Information DWORD ? ; 0004h
IO_STATUS_BLOCK ENDS
PIO_STATUS_BLOCK typedef PTR IO_STATUS_BLOCK
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Define the file information class values
;
; WARNING: The order of the following values are assumed by the I/O system.
; Any changes made here should be reflected there as well.
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;typedef enum _FILE_INFORMATION_CLASS {
FileDirectoryInformation equ 1
FileFullDirectoryInformation equ 2
FileBothDirectoryInformation equ 3
FileBasicInformation equ 4 ; wdm
FileStandardInformation equ 5 ; wdm
FileInternalInformation equ 6
FileEaInformation equ 7
FileAccessInformation equ 8
FileNameInformation equ 9
FileRenameInformation equ 10
FileLinkInformation equ 11
FileNamesInformation equ 12
FileDispositionInformation equ 13
FilePositionInformation equ 14 ; wdm
FileFullEaInformation equ 15
FileModeInformation equ 16
FileAlignmentInformation equ 17
FileAllInformation equ 18
FileAllocationInformation equ 19
FileEndOfFileInformation equ 20 ; wdm
FileAlternateNameInformation equ 21
FileStreamInformation equ 22
FilePipeInformation equ 23
FilePipeLocalInformation equ 24
FilePipeRemoteInformation equ 25
FileMailslotQueryInformation equ 26
FileMailslotSetInformation equ 27
FileCompressionInformation equ 28
FileObjectIdInformation equ 29
FileCompletionInformation equ 30
FileMoveClusterInformation equ 31
FileQuotaInformation equ 32
FileReparsePointInformation equ 33
FileNetworkOpenInformation equ 34
FileAttributeTagInformation equ 35
FileTrackingInformation equ 36
FileMaximumInformation equ 37
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Define the various structures which are returned on query operations
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
FILE_BASIC_INFORMATION STRUCT ; sizeof = 028h
CreationTime LARGE_INTEGER <>
LastAccessTime LARGE_INTEGER <>
LastWriteTime LARGE_INTEGER <>
ChangeTime LARGE_INTEGER <>
FileAttributes DWORD ?
DWORD ? ; padding
FILE_BASIC_INFORMATION ENDS
PFILE_BASIC_INFORMATION typedef ptr FILE_BASIC_INFORMATION
FILE_STANDARD_INFORMATION STRUCT ; sizeof = 018h
AllocationSize LARGE_INTEGER <>
EndOfFile LARGE_INTEGER <>
NumberOfLinks DWORD ?
DeletePending BOOLEAN ?
Directory BOOLEAN ?
db 2 dup(?) ; padding
FILE_STANDARD_INFORMATION ENDS
PFILE_STANDARD_INFORMATION typedef ptr FILE_STANDARD_INFORMATION
FILE_POSITION_INFORMATION STRUCT
CurrentByteOffset LARGE_INTEGER <>
FILE_POSITION_INFORMATION ENDS
PFILE_POSITION_INFORMATION typedef ptr FILE_POSITION_INFORMATION
FILE_ALIGNMENT_INFORMATION STRUCT
AlignmentRequirement DWORD ?
FILE_ALIGNMENT_INFORMATION ENDS
PFILE_ALIGNMENT_INFORMATION typedef ptr FILE_ALIGNMENT_INFORMATION
FILE_NAME_INFORMATION STRUCT
FileNameLength DWORD ?
FileName WCHAR 1 dup(?)
FILE_NAME_INFORMATION ENDS
PFILE_NAME_INFORMATION typedef ptr FILE_NAME_INFORMATION
FILE_NETWORK_OPEN_INFORMATION STRUCT ; sizeof = 038h
CreationTime LARGE_INTEGER <>
LastAccessTime LARGE_INTEGER <>
LastWriteTime LARGE_INTEGER <>
ChangeTime LARGE_INTEGER <>
AllocationSize LARGE_INTEGER <>
EndOfFile LARGE_INTEGER <>
FileAttributes DWORD ?
DWORD ? ; padding
FILE_NETWORK_OPEN_INFORMATION ENDS
PFILE_NETWORK_OPEN_INFORMATION typedef ptr FILE_NETWORK_OPEN_INFORMATION
FILE_ATTRIBUTE_TAG_INFORMATION STRUCT ; sizeof=8
FileAttributes DWORD ?
ReparseTag DWORD ?
FILE_ATTRIBUTE_TAG_INFORMATION ENDS
PFILE_ATTRIBUTE_TAG_INFORMATION typedef PTR FILE_ATTRIBUTE_TAG_INFORMATION
FILE_DISPOSITION_INFORMATION STRUCT ; sizeof=1 :-( I'm 99% sure it cann't be so
DeleteFile BOOLEAN ?
FILE_DISPOSITION_INFORMATION ENDS
PFILE_DISPOSITION_INFORMATION typedef PTR FILE_DISPOSITION_INFORMATION
FILE_END_OF_FILE_INFORMATION STRUCT ; sizeof=8
EndOfFile LARGE_INTEGER <>
FILE_END_OF_FILE_INFORMATION ENDS
PFILE_END_OF_FILE_INFORMATION typedef PTR FILE_END_OF_FILE_INFORMATION
FILE_FULL_EA_INFORMATION STRUCT ; sizeof = 0Ch
NextEntryOffset DWORD ? ; 00h
qwFlags BYTE ? ; 04h
EaNameLength BYTE ? ; 05h
EaValueLength WORD ? ; 06h
EaName BYTE ? ; 08h
db 3 dup(?)
FILE_FULL_EA_INFORMATION ENDS
PFILE_FULL_EA_INFORMATION typedef PTR FILE_FULL_EA_INFORMATION
; +
; Define the file system information class values
;
; WARNING: The order of the following values are assumed by the I/O system.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -