📄 ntddstor.inc
字号:
comment ^
Module Name:
ntddstor.inc
Abstract:
This is the include file that defines all common constants and types
accessing the storage class drivers
Author:
Four-F (four-f@mail.ru)
Last updated:
29-December-2004
^
IFNDEF CTL_CODE
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
ENDIF
comment ^
//
// Interface GUIDs
//
DEFINE_GUID(DiskClassGuid, 0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(CdRomClassGuid, 0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(PartitionClassGuid, 0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(TapeClassGuid, 0x53f5630bL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(WriteOnceDiskClassGuid, 0x53f5630cL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(VolumeClassGuid, 0x53f5630dL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(MediumChangerClassGuid, 0x53f56310L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(FloppyClassGuid, 0x53f56311L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(CdChangerClassGuid, 0x53f56312L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(StoragePortClassGuid, 0x2accfe60L, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
#endif
^
; begin_winioctl
IFNDEF _NTDDSTOR_H_
_NTDDSTOR_H_ equ 1
; IoControlCode values for storage devices
IOCTL_STORAGE_BASE equ FILE_DEVICE_MASS_STORAGE
; The following device control codes are common for all class drivers. They
; should be used in place of the older IOCTL_DISK, IOCTL_CDROM and IOCTL_TAPE
; common codes
IOCTL_STORAGE_CHECK_VERIFY equ CTL_CODE(IOCTL_STORAGE_BASE, 0200h, METHOD_BUFFERED, FILE_READ_ACCESS)
IOCTL_STORAGE_CHECK_VERIFY2 equ CTL_CODE(IOCTL_STORAGE_BASE, 0200h, METHOD_BUFFERED, FILE_ANY_ACCESS)
IOCTL_STORAGE_MEDIA_REMOVAL equ CTL_CODE(IOCTL_STORAGE_BASE, 0201h, METHOD_BUFFERED, FILE_READ_ACCESS)
IOCTL_STORAGE_EJECT_MEDIA equ CTL_CODE(IOCTL_STORAGE_BASE, 0202h, METHOD_BUFFERED, FILE_READ_ACCESS)
IOCTL_STORAGE_LOAD_MEDIA equ CTL_CODE(IOCTL_STORAGE_BASE, 0203h, METHOD_BUFFERED, FILE_READ_ACCESS)
IOCTL_STORAGE_LOAD_MEDIA2 equ CTL_CODE(IOCTL_STORAGE_BASE, 0203h, METHOD_BUFFERED, FILE_ANY_ACCESS)
IOCTL_STORAGE_RESERVE equ CTL_CODE(IOCTL_STORAGE_BASE, 0204h, METHOD_BUFFERED, FILE_READ_ACCESS)
IOCTL_STORAGE_RELEASE equ CTL_CODE(IOCTL_STORAGE_BASE, 0205h, METHOD_BUFFERED, FILE_READ_ACCESS)
IOCTL_STORAGE_FIND_NEW_DEVICES equ CTL_CODE(IOCTL_STORAGE_BASE, 0206h, METHOD_BUFFERED, FILE_READ_ACCESS)
IOCTL_STORAGE_EJECTION_CONTROL equ CTL_CODE(IOCTL_STORAGE_BASE, 0250h, METHOD_BUFFERED, FILE_ANY_ACCESS)
IOCTL_STORAGE_MCN_CONTROL equ CTL_CODE(IOCTL_STORAGE_BASE, 0251h, METHOD_BUFFERED, FILE_ANY_ACCESS)
IOCTL_STORAGE_GET_MEDIA_TYPES equ CTL_CODE(IOCTL_STORAGE_BASE, 0300h, METHOD_BUFFERED, FILE_ANY_ACCESS)
IOCTL_STORAGE_GET_MEDIA_TYPES_EX equ CTL_CODE(IOCTL_STORAGE_BASE, 0301h, METHOD_BUFFERED, FILE_ANY_ACCESS)
IOCTL_STORAGE_RESET_BUS equ CTL_CODE(IOCTL_STORAGE_BASE, 0400h, METHOD_BUFFERED, FILE_READ_ACCESS)
IOCTL_STORAGE_RESET_DEVICE equ CTL_CODE(IOCTL_STORAGE_BASE, 0401h, METHOD_BUFFERED, FILE_READ_ACCESS)
IOCTL_STORAGE_GET_DEVICE_NUMBER equ CTL_CODE(IOCTL_STORAGE_BASE, 0420h, METHOD_BUFFERED, FILE_ANY_ACCESS)
IOCTL_STORAGE_PREDICT_FAILURE equ CTL_CODE(IOCTL_STORAGE_BASE, 0440h, METHOD_BUFFERED, FILE_ANY_ACCESS)
; end_winioctl
IOCTL_STORAGE_QUERY_PROPERTY equ CTL_CODE(IOCTL_STORAGE_BASE, 0500h, METHOD_BUFFERED, FILE_ANY_ACCESS)
; begin_winioctl
; These ioctl codes are obsolete. They are defined here to avoid resuing them
; and to allow class drivers to respond to them more easily.
OBSOLETE_IOCTL_STORAGE_RESET_BUS equ CTL_CODE(IOCTL_STORAGE_BASE, 0400h, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS)
OBSOLETE_IOCTL_STORAGE_RESET_DEVICE equ CTL_CODE(IOCTL_STORAGE_BASE, 0401h, METHOD_BUFFERED, FILE_READ_ACCESS or FILE_WRITE_ACCESS)
; +
; IOCTL_STORAGE_GET_DEVICE_NUMBER
;
; input - none
;
; output - STORAGE_DEVICE_NUMBER structure
; The values in the STORAGE_DEVICE_NUMBER structure are guaranteed
; to remain unchanged until the system is rebooted. They are not
; guaranteed to be persistant across boots.
; -
STORAGE_DEVICE_NUMBER STRUCT
; The FILE_DEVICE_XXX type for this device.
DeviceType DWORD ? ; DEVICE_TYPE
; The number of this device
DeviceNumber DWORD ?
; If the device is partitionable, the partition number of the device.
; Otherwise -1
PartitionNumber DWORD ?
STORAGE_DEVICE_NUMBER ENDS
PSTORAGE_DEVICE_NUMBER typedef ptr STORAGE_DEVICE_NUMBER
; Define the structures for scsi resets
STORAGE_BUS_RESET_REQUEST STRUCT ; sizeof = 1
PathId BYTE ?
STORAGE_BUS_RESET_REQUEST ENDS
PSTORAGE_BUS_RESET_REQUEST typedef ptr STORAGE_BUS_RESET_REQUEST
; +
; IOCTL_STORAGE_MEDIA_REMOVAL disables the mechanism
; on a storage device that ejects media. This function
; may or may not be supported on storage devices that
; support removable media.
;
; TRUE means prevent media from being removed.
; FALSE means allow media removal.
; -
PREVENT_MEDIA_REMOVAL STRUCT ; sizeof = 1
PreventMediaRemoval BOOLEAN ?
PREVENT_MEDIA_REMOVAL ENDS
PPREVENT_MEDIA_REMOVAL typedef ptr PREVENT_MEDIA_REMOVAL
; begin_ntminitape
comment ^
typedef struct _TAPE_STATISTICS {
ULONG Version;
ULONG Flags;
LARGE_INTEGER RecoveredWrites;
LARGE_INTEGER UnrecoveredWrites;
LARGE_INTEGER RecoveredReads;
LARGE_INTEGER UnrecoveredReads;
UCHAR CompressionRatioReads;
UCHAR CompressionRatioWrites;
} TAPE_STATISTICS, *PTAPE_STATISTICS;
^
RECOVERED_WRITES_VALID equ 00000001
UNRECOVERED_WRITES_VALID equ 00000002
RECOVERED_READS_VALID equ 00000004
UNRECOVERED_READS_VALID equ 00000008h
WRITE_COMPRESSION_INFO_VALID equ 00000010h
READ_COMPRESSION_INFO_VALID equ 00000020h
TAPE_GET_STATISTICS STRUCT ; sizeof = 4
Operation DWORD ?
TAPE_GET_STATISTICS ENDS
PTAPE_GET_STATISTICS typedef ptr TAPE_GET_STATISTICS
TAPE_RETURN_STATISTICS equ 0
TAPE_RETURN_ENV_INFO equ 1
TAPE_RESET_STATISTICS equ 2
; IOCTL_STORAGE_GET_MEDIA_TYPES_EX will return an array of DEVICE_MEDIA_INFO
; structures, one per supported type, embedded in the GET_MEDIA_TYPES struct.
;typedef enum _STORAGE_MEDIA_TYPE {
; Following are defined in ntdddisk.h in the MEDIA_TYPE enum
; Unknown, // Format is unknown
; F5_1Pt2_512, // 5.25", 1.2MB, 512 bytes/sector
; F3_1Pt44_512, // 3.5", 1.44MB, 512 bytes/sector
; F3_2Pt88_512, // 3.5", 2.88MB, 512 bytes/sector
; F3_20Pt8_512, // 3.5", 20.8MB, 512 bytes/sector
; F3_720_512, // 3.5", 720KB, 512 bytes/sector
; F5_360_512, // 5.25", 360KB, 512 bytes/sector
; F5_320_512, // 5.25", 320KB, 512 bytes/sector
; F5_320_1024, // 5.25", 320KB, 1024 bytes/sector
; F5_180_512, // 5.25", 180KB, 512 bytes/sector
; F5_160_512, // 5.25", 160KB, 512 bytes/sector
; RemovableMedia, // Removable media other than floppy
; FixedMedia, // Fixed hard disk media
; F3_120M_512, // 3.5", 120M Floppy
; F3_640_512, // 3.5" , 640KB, 512 bytes/sector
; F5_640_512, // 5.25", 640KB, 512 bytes/sector
; F5_720_512, // 5.25", 720KB, 512 bytes/sector
; F3_1Pt2_512, // 3.5" , 1.2Mb, 512 bytes/sector
; F3_1Pt23_1024, // 3.5" , 1.23Mb, 1024 bytes/sector
; F5_1Pt23_1024, // 5.25", 1.23MB, 1024 bytes/sector
; F3_128Mb_512, // 3.5" MO 128Mb 512 bytes/sector
; F3_230Mb_512, // 3.5" MO 230Mb 512 bytes/sector
; F8_256_128, // 8", 256KB, 128 bytes/sector
DDS_4mm equ 020h ; Tape - DAT DDS1,2,... (all vendors)
MiniQic equ 021h ; Tape - miniQIC Tape
Travan equ 022h ; Tape - Travan TR-1,2,3,...
QIC equ 023h ; Tape - QIC
MP_8mm equ 024h ; Tape - 8mm Exabyte Metal Particle
AME_8mm equ 025h ; Tape - 8mm Exabyte Advanced Metal Evap
AIT1_8mm equ 026h ; Tape - 8mm Sony AIT1
DLT equ 027h ; Tape - DLT Compact IIIxt, IV
NCTP equ 028h ; Tape - Philips NCTP
IBM_3480 equ 029h ; Tape - IBM 3480
IBM_3490E equ 02Ah ; Tape - IBM 3490E
IBM_Magstar_3590 equ 02Bh ; Tape - IBM Magstar 3590
IBM_Magstar_MP equ 02Ch ; Tape - IBM Magstar MP
STK_DATA_D3 equ 02Dh ; Tape - STK Data D3
SONY_DTF equ 02Eh ; Tape - Sony DTF
DV_6mm equ 02Fh ; Tape - 6mm Digital Video
DMI equ 030h ; Tape - Exabyte DMI and compatibles
SONY_D2 equ 031h ; Tape - Sony D2S and D2L
CLEANER_CARTRIDGE equ 032h ; Cleaner - All Drive types that support Drive Cleaners
CD_ROM equ 033h ; Opt_Disk - CD
CD_R equ 034h ; Opt_Disk - CD-Recordable (Write Once)
CD_RW equ 035h ; Opt_Disk - CD-Rewriteable
DVD_ROM equ 036h ; Opt_Disk - DVD-ROM
DVD_R equ 037h ; Opt_Disk - DVD-Recordable (Write Once)
DVD_RW equ 038h ; Opt_Disk - DVD-Rewriteable
MO_3_RW equ 039h ; Opt_Disk - 3.5" Rewriteable MO Disk
MO_5_WO equ 03Ah ; Opt_Disk - MO 5.25" Write Once
MO_5_RW equ 03Bh ; Opt_Disk - MO 5.25" Rewriteable (not LIMDOW)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -