3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * DDK definitions for storage media access
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2002 Eric Pouech
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this library; if not, write to the Free Software
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync/*
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * a choice of LGPL license versions is made available with the language indicating
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * of the LGPL is applied is otherwise unspecified.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef _NTDDSTOR_H_
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define _NTDDSTOR_H_
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncextern "C" {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_CHECK_VERIFY CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_MEDIA_REMOVAL CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_RESERVE CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_RELEASE CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_FIND_NEW_DEVICES CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_GET_MEDIA_TYPES CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define IOCTL_STORAGE_QUERY_PROPERTY CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDEFINE_GUID(DiskClassGuid,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 0x53f56307, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDEFINE_GUID(CdRomClassGuid,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 0x53f56308, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDEFINE_GUID(PartitionClassGuid,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 0x53f5630a, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDEFINE_GUID(TapeClassGuid,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 0x53f5630b, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDEFINE_GUID(WriteOnceDiskClassGuid,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 0x53f5630c, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDEFINE_GUID(VolumeClassGuid,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 0x53f5630d, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDEFINE_GUID(MediumChangerClassGuid,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 0x53f56310, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDEFINE_GUID(FloppyClassGuid,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 0x53f56311, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDEFINE_GUID(CdChangerClassGuid,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 0x53f56312, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncDEFINE_GUID(StroagePortClassGuid,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync 0x2accfe60, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _STORAGE_DEVICE_NUMBER {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DEVICE_TYPE DeviceType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG DeviceNumber;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG PartitionNumber;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} STORAGE_DEVICE_NUMBER, *PSTORAGE_DEVICE_NUMBER;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _STORAGE_BUS_RESET_REQUEST {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UCHAR PathId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _PREVENT_MEDIA_REMOVAL {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOLEAN PreventMediaRemoval;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} PREVENT_MEDIA_REMOVAL, *PPREVENT_MEDIA_REMOVAL;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _TAPE_STATISTICS {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Version;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Flags;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LARGE_INTEGER RecoveredWrites;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LARGE_INTEGER UnrecoveredWrites;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LARGE_INTEGER RecoveredReads;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LARGE_INTEGER UnrecoveredReads;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UCHAR CompressionRatioReads;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UCHAR CompressionRatioWrites;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} TAPE_STATISTICS, *PTAPE_STATISTICS;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define RECOVERED_WRITES_VALID 0x00000001
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define UNRECOVERED_WRITES_VALID 0x00000002
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define RECOVERED_READS_VALID 0x00000004
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define UNRECOVERED_READS_VALID 0x00000008
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define WRITE_COMPRESSION_INFO_VALID 0x00000010
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define READ_COMPRESSION_INFO_VALID 0x00000020
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _TAPE_GET_STATISTICS {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Operation;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} TAPE_GET_STATISTICS, *PTAPE_GET_STATISTICS;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TAPE_RETURN_STATISTICS 0L
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TAPE_RETURN_ENV_INFO 1L
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TAPE_RESET_STATISTICS 2L
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef enum _STORAGE_MEDIA_TYPE {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* see also defines in ntdddisk.h */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DDS_4mm = 0x20,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MiniQic,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync Travan,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync QIC,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MP_8mm,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AME_8mm,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AIT1_8mm,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DLT,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync NCTP,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync IBM_3480,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync IBM_3490E,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync IBM_Magstar_3590,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync IBM_Magstar_MP,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STK_DATA_D3,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SONY_DTF,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DV_6mm,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DMI,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SONY_D2,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync CLEANER_CARTRIDGE,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync CD_ROM,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync CD_R,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync CD_RW,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DVD_ROM,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DVD_R,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DVD_RW,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MO_3_RW,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MO_5_WO,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MO_5_RW,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MO_5_LIMDOW,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PC_5_WO,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PC_5_RW,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PD_5_RW,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ABL_5_WO,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PINNACLE_APEX_5_RW,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SONY_12_WO,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PHILIPS_12_WO,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync HITACHI_12_WO,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync CYGNET_12_WO,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync KODAK_14_WO,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MO_NFR_525,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync NIKON_12_RW,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync IOMEGA_ZIP,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync IOMEGA_JAZ,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SYQUEST_EZ135,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SYQUEST_EZFLYER,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SYQUEST_SYJET,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AVATAR_F2,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync MP2_8mm
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} STORAGE_MEDIA_TYPE, *PSTORAGE_MEDIA_TYPE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define MEDIA_ERASEABLE 0x00000001
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define MEDIA_WRITE_ONCE 0x00000002
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define MEDIA_READ_ONLY 0x00000004
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define MEDIA_READ_WRITE 0x00000008
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define MEDIA_WRITE_PROTECTED 0x00000100
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define MEDIA_CURRENTLY_MOUNTED 0x80000000
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _DEVICE_MEDIA_INFO {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync union {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync struct {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LARGE_INTEGER Cylinders;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STORAGE_MEDIA_TYPE MediaType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG TracksPerCylinder;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG SectorsPerTrack;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG BytesPerSector;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG NumberMediaSides;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG MediaCharacteristics;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } DiskInfo;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync struct {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LARGE_INTEGER Cylinders;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STORAGE_MEDIA_TYPE MediaType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG TracksPerCylinder;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG SectorsPerTrack;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG BytesPerSector;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG NumberMediaSides;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG MediaCharacteristics;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } RemovableDiskInfo;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync struct {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STORAGE_MEDIA_TYPE MediaType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG MediaCharacteristics;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG CurrentBlockSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } TapeInfo;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } DeviceSpecific;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} DEVICE_MEDIA_INFO, *PDEVICE_MEDIA_INFO;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _GET_MEDIA_TYPES {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG DeviceType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG MediaInfoCount;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DEVICE_MEDIA_INFO MediaInfo[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} GET_MEDIA_TYPES, *PGET_MEDIA_TYPES;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef enum _STORAGE_QUERY_TYPE {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PropertyStandardQuery = 0,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PropertyExistsQuery,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PropertyMaskQuery,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync PropertyQueryMaxDefined
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef enum _STORAGE_PROPERTY_ID {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync StorageDeviceProperty = 0,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync StorageAdapterProperty
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _STORAGE_PROPERTY_QUERY {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STORAGE_PROPERTY_ID PropertyId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STORAGE_QUERY_TYPE QueryType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UCHAR AdditionalParameters[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _STORAGE_DESCRIPTOR_HEADER {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Version;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Size;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef enum _STORAGE_BUS_TYPE {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BusTypeUnknown = 0x00,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BusTypeScsi,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BusTypeAtapi,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BusTypeAta,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BusType1394,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BusTypeSsa,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BusTypeFibre,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BusTypeUsb,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BusTypeRAID,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BusTypeMaxReserved = 0x7F
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _STORAGE_DEVICE_DESCRIPTOR {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Version;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Size;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UCHAR DeviceType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UCHAR DeviceTypeModifier;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOLEAN RemovableMedia;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOLEAN CommandQueueing;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG VendorIdOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ProductIdOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG ProductRevisionOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG SerialNumberOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync STORAGE_BUS_TYPE BusType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG RawPropertiesLength;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UCHAR RawDeviceProperties[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _STORAGE_ADAPTER_DESCRIPTOR {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Version;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG Size;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG MaximumTransferLength;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG MaximumPhysicalPages;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ULONG AlignmentMask;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOLEAN AdapterUsesPio;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOLEAN AdapterScansDown;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOLEAN CommandQueueing;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOLEAN AcceleratedTransfer;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BOOLEAN BusType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync USHORT BusMajorVersion;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync USHORT BusMinorVersion;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifdef __cplusplus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif /* _NTDDSTOR_H_ */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync