mingw-5.1.4/win32/include/ddk/ntddstor.h
changeset 0 76b1f169d9fe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mingw-5.1.4/win32/include/ddk/ntddstor.h	Fri Apr 03 17:16:45 2009 +0100
@@ -0,0 +1,333 @@
+/*
+ * 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
+
+#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;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __NTDDSTOR_H */