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

📄 ntddstor.inc

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