540d550a38
d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h, miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h, ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h, netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h, ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h, ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h, ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h, ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h, poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h, storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h, upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h, usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h, winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h, xfilter.h): Change comment to refer w32api package, not MinGW.
339 lines
8.9 KiB
C
339 lines
8.9 KiB
C
/*
|
|
* ntddstor.h
|
|
*
|
|
* Storage class IOCTL interface.
|
|
*
|
|
* This file is part of the w32api package.
|
|
*
|
|
* Contributors:
|
|
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
|
|
*
|
|
* THIS SOFTWARE IS NOT COPYRIGHTED
|
|
*
|
|
* This source code is offered for use in the public domain. You may
|
|
* use, modify or distribute it freely.
|
|
*
|
|
* This code is distributed in the hope that it will be useful but
|
|
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
|
* DISCLAIMED. This includes but is not limited to warranties of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
*
|
|
*/
|
|
|
|
#ifndef __NTDDSTOR_H
|
|
#define __NTDDSTOR_H
|
|
|
|
#if __GNUC__ >=3
|
|
#pragma GCC system_header
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#pragma pack(push,4)
|
|
|
|
#include "ntddk.h"
|
|
|
|
|
|
#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
|
|
|
|
#define IOCTL_STORAGE_CHECK_VERIFY \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_CHECK_VERIFY2 \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_EJECT_MEDIA \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_EJECTION_CONTROL \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_FIND_NEW_DEVICES \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_GET_DEVICE_NUMBER \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0304, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_GET_MEDIA_TYPES \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_LOAD_MEDIA \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_LOAD_MEDIA2 \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_MCN_CONTROL \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_MEDIA_REMOVAL \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_PREDICT_FAILURE \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_QUERY_PROPERTY \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_RELEASE \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_RESERVE \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_RESET_BUS \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
|
|
|
#define IOCTL_STORAGE_RESET_DEVICE \
|
|
CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
|
|
|
|
|
|
DEFINE_GUID(GUID_DEVINTERFACE_DISK,
|
|
0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
|
|
|
|
DEFINE_GUID(GUID_DEVINTERFACE_CDROM,
|
|
0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
|
|
|
|
DEFINE_GUID(GUID_DEVINTERFACE_PARTITION,
|
|
0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
|
|
|
|
DEFINE_GUID(GUID_DEVINTERFACE_TAPE,
|
|
0x53f5630bL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
|
|
|
|
DEFINE_GUID(GUID_DEVINTERFACE_WRITEONCEDISK,
|
|
0x53f5630cL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
|
|
|
|
DEFINE_GUID(GUID_DEVINTERFACE_VOLUME,
|
|
0x53f5630dL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
|
|
|
|
DEFINE_GUID(GUID_DEVINTERFACE_MEDIUMCHANGER,
|
|
0x53f56310L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
|
|
|
|
DEFINE_GUID(GUID_DEVINTERFACE_FLOPPY,
|
|
0x53f56311L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
|
|
|
|
DEFINE_GUID(GUID_DEVINTERFACE_CDCHANGER,
|
|
0x53f56312L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
|
|
|
|
DEFINE_GUID(GUID_DEVINTERFACE_STORAGEPORT,
|
|
0x2accfe60L, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
|
|
|
|
|
|
typedef enum _STORAGE_MEDIA_TYPE {
|
|
DDS_4mm = 0x20,
|
|
MiniQic,
|
|
Travan,
|
|
QIC,
|
|
MP_8mm,
|
|
AME_8mm,
|
|
AIT1_8mm,
|
|
DLT,
|
|
NCTP,
|
|
IBM_3480,
|
|
IBM_3490E,
|
|
IBM_Magstar_3590,
|
|
IBM_Magstar_MP,
|
|
STK_DATA_D3,
|
|
SONY_DTF,
|
|
DV_6mm,
|
|
DMI,
|
|
SONY_D2,
|
|
CLEANER_CARTRIDGE,
|
|
CD_ROM,
|
|
CD_R,
|
|
CD_RW,
|
|
DVD_ROM,
|
|
DVD_R,
|
|
DVD_RW,
|
|
MO_3_RW,
|
|
MO_5_WO,
|
|
MO_5_RW,
|
|
MO_5_LIMDOW,
|
|
PC_5_WO,
|
|
PC_5_RW,
|
|
PD_5_RW,
|
|
ABL_5_WO,
|
|
PINNACLE_APEX_5_RW,
|
|
SONY_12_WO,
|
|
PHILIPS_12_WO,
|
|
HITACHI_12_WO,
|
|
CYGNET_12_WO,
|
|
KODAK_14_WO,
|
|
MO_NFR_525,
|
|
NIKON_12_RW,
|
|
IOMEGA_ZIP,
|
|
IOMEGA_JAZ,
|
|
SYQUEST_EZ135,
|
|
SYQUEST_EZFLYER,
|
|
SYQUEST_SYJET,
|
|
AVATAR_F2,
|
|
MP2_8mm,
|
|
DST_S,
|
|
DST_M,
|
|
DST_L,
|
|
VXATape_1,
|
|
VXATape_2,
|
|
STK_9840,
|
|
LTO_Ultrium,
|
|
LTO_Accelis,
|
|
DVD_RAM,
|
|
AIT_8mm,
|
|
ADR_1,
|
|
ADR_2
|
|
} STORAGE_MEDIA_TYPE, *PSTORAGE_MEDIA_TYPE;
|
|
|
|
typedef enum _STORAGE_BUS_TYPE {
|
|
BusTypeUnknown = 0x00,
|
|
BusTypeScsi,
|
|
BusTypeAtapi,
|
|
BusTypeAta,
|
|
BusType1394,
|
|
BusTypeSsa,
|
|
BusTypeFibre,
|
|
BusTypeUsb,
|
|
BusTypeRAID,
|
|
BusTypeMaxReserved = 0x7F
|
|
} STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
|
|
|
|
/* DEVICE_MEDIA_INFO.DeviceSpecific.DiskInfo.MediaCharacteristics constants */
|
|
#define MEDIA_ERASEABLE 0x00000001
|
|
#define MEDIA_WRITE_ONCE 0x00000002
|
|
#define MEDIA_READ_ONLY 0x00000004
|
|
#define MEDIA_READ_WRITE 0x00000008
|
|
#define MEDIA_WRITE_PROTECTED 0x00000100
|
|
#define MEDIA_CURRENTLY_MOUNTED 0x80000000
|
|
|
|
typedef struct _DEVICE_MEDIA_INFO {
|
|
union {
|
|
struct {
|
|
LARGE_INTEGER Cylinders;
|
|
STORAGE_MEDIA_TYPE MediaType;
|
|
ULONG TracksPerCylinder;
|
|
ULONG SectorsPerTrack;
|
|
ULONG BytesPerSector;
|
|
ULONG NumberMediaSides;
|
|
ULONG MediaCharacteristics;
|
|
} DiskInfo;
|
|
struct {
|
|
LARGE_INTEGER Cylinders;
|
|
STORAGE_MEDIA_TYPE MediaType;
|
|
ULONG TracksPerCylinder;
|
|
ULONG SectorsPerTrack;
|
|
ULONG BytesPerSector;
|
|
ULONG NumberMediaSides;
|
|
ULONG MediaCharacteristics;
|
|
} RemovableDiskInfo;
|
|
struct {
|
|
STORAGE_MEDIA_TYPE MediaType;
|
|
ULONG MediaCharacteristics;
|
|
ULONG CurrentBlockSize;
|
|
STORAGE_BUS_TYPE BusType;
|
|
union {
|
|
struct {
|
|
UCHAR MediumType;
|
|
UCHAR DensityCode;
|
|
} ScsiInformation;
|
|
} BusSpecificData;
|
|
} TapeInfo;
|
|
} DeviceSpecific;
|
|
} DEVICE_MEDIA_INFO, *PDEVICE_MEDIA_INFO;
|
|
|
|
typedef struct _GET_MEDIA_TYPES {
|
|
ULONG DeviceType;
|
|
ULONG MediaInfoCount;
|
|
DEVICE_MEDIA_INFO MediaInfo[1];
|
|
} GET_MEDIA_TYPES, *PGET_MEDIA_TYPES;
|
|
|
|
typedef struct _STORAGE_ADAPTER_DESCRIPTOR {
|
|
ULONG Version;
|
|
ULONG Size;
|
|
ULONG MaximumTransferLength;
|
|
ULONG MaximumPhysicalPages;
|
|
ULONG AlignmentMask;
|
|
BOOLEAN AdapterUsesPio;
|
|
BOOLEAN AdapterScansDown;
|
|
BOOLEAN CommandQueueing;
|
|
BOOLEAN AcceleratedTransfer;
|
|
STORAGE_BUS_TYPE BusType;
|
|
USHORT BusMajorVersion;
|
|
USHORT BusMinorVersion;
|
|
} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR;
|
|
|
|
typedef struct _STORAGE_BUS_RESET_REQUEST {
|
|
UCHAR PathId;
|
|
} STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST;
|
|
|
|
typedef struct _STORAGE_DESCRIPTOR_HEADER {
|
|
ULONG Version;
|
|
ULONG Size;
|
|
} STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER;
|
|
|
|
typedef struct _STORAGE_DEVICE_DESCRIPTOR {
|
|
ULONG Version;
|
|
ULONG Size;
|
|
UCHAR DeviceType;
|
|
UCHAR DeviceTypeModifier;
|
|
BOOLEAN RemovableMedia;
|
|
BOOLEAN CommandQueueing;
|
|
ULONG VendorIdOffset;
|
|
ULONG ProductIdOffset;
|
|
ULONG ProductRevisionOffset;
|
|
ULONG SerialNumberOffset;
|
|
STORAGE_BUS_TYPE BusType;
|
|
ULONG RawPropertiesLength;
|
|
UCHAR RawDeviceProperties[1];
|
|
} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
|
|
|
|
typedef struct _STORAGE_DEVICE_ID_DESCRIPTOR {
|
|
ULONG Version;
|
|
ULONG Size;
|
|
ULONG NumberOfIdentifiers;
|
|
UCHAR Identifiers[1];
|
|
} STORAGE_DEVICE_ID_DESCRIPTOR, *PSTORAGE_DEVICE_ID_DESCRIPTOR;
|
|
|
|
typedef struct _STORAGE_DEVICE_NUMBER {
|
|
DEVICE_TYPE DeviceType;
|
|
ULONG DeviceNumber;
|
|
ULONG PartitionNumber;
|
|
} STORAGE_DEVICE_NUMBER, *PSTORAGE_DEVICE_NUMBER;
|
|
|
|
typedef struct _STORAGE_PREDICT_FAILURE {
|
|
ULONG PredictFailure;
|
|
UCHAR VendorSpecific[512];
|
|
} STORAGE_PREDICT_FAILURE, *PSTORAGE_PREDICT_FAILURE;
|
|
|
|
typedef enum _STORAGE_PROPERTY_ID {
|
|
StorageDeviceProperty = 0,
|
|
StorageAdapterProperty,
|
|
StorageDeviceIdProperty
|
|
} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
|
|
|
|
typedef enum _STORAGE_QUERY_TYPE {
|
|
PropertyStandardQuery = 0,
|
|
PropertyExistsQuery,
|
|
PropertyMaskQuery,
|
|
PropertyQueryMaxDefined
|
|
} STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE;
|
|
|
|
typedef struct _STORAGE_PROPERTY_QUERY {
|
|
STORAGE_PROPERTY_ID PropertyId;
|
|
STORAGE_QUERY_TYPE QueryType;
|
|
UCHAR AdditionalParameters[1];
|
|
} STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
|
|
|
|
#pragma pack(pop)
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __NTDDSTOR_H */
|