You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
4.2 KiB
166 lines
4.2 KiB
//////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) 2000-2001 Microsoft Corporation
|
|
//
|
|
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Imports
|
|
//
|
|
|
|
|
|
import "oaidl.idl";
|
|
import "ocidl.idl";
|
|
|
|
|
|
|
|
// mode page 83 data types from ntddstor.h
|
|
typedef enum _VDS_STORAGE_IDENTIFIER_CODE_SET
|
|
{
|
|
VDSStorageIdCodeSetReserved = 0,
|
|
VDSStorageIdCodeSetBinary = 1,
|
|
VDSStorageIdCodeSetAscii = 2
|
|
} VDS_STORAGE_IDENTIFIER_CODE_SET;
|
|
|
|
|
|
// mode page 83 identifier types from ntddstor.h
|
|
typedef enum _VDS_STORAGE_IDENTIFIER_TYPE
|
|
{
|
|
VDSStorageIdTypeVendorSpecific = 0,
|
|
VDSStorageIdTypeVendorId = 1,
|
|
VDSStorageIdTypeEUI64 = 2,
|
|
VDSStorageIdTypeFCPHName = 3
|
|
} VDS_STORAGE_IDENTIFIER_TYPE;
|
|
|
|
|
|
// bus types from ntddstor.h
|
|
typedef enum _VDS_STORAGE_BUS_TYPE
|
|
{
|
|
VDSBusTypeUnknown = 0x00,
|
|
VDSBusTypeScsi,
|
|
VDSBusTypeAtapi,
|
|
VDSBusTypeAta,
|
|
VDSBusType1394,
|
|
VDSBusTypeSsa,
|
|
VDSBusTypeFibre,
|
|
VDSBusTypeUsb,
|
|
VDSBusTypeRAID,
|
|
VDSBusTypeMaxReserved = 0x7F
|
|
} VDS_STORAGE_BUS_TYPE;
|
|
|
|
|
|
// midlized STORAGE_IDENTIFIER from ntddstor.h
|
|
typedef struct _VDS_STORAGE_IDENTIFIER
|
|
{
|
|
// whether ascii or binary data
|
|
VDS_STORAGE_IDENTIFIER_CODE_SET m_CodeSet;
|
|
|
|
// type of identifier
|
|
VDS_STORAGE_IDENTIFIER_TYPE m_Type;
|
|
|
|
// length of identifier in bytes
|
|
ULONG m_cbIdentifier;
|
|
|
|
// actual identintifier
|
|
[size_is(m_cbIdentifier)] BYTE *m_rgbIdentifier;
|
|
} VDS_STORAGE_IDENTIFIER;
|
|
|
|
// mode page 83 (STORAGE_DEVICE_ID_DESCRIPTOR from ntddstor.h)
|
|
typedef struct _VDS_STORAGE_DEVICE_ID_DESCRIPTOR
|
|
{
|
|
// version of structure
|
|
ULONG m_version;
|
|
|
|
// number of identifiers
|
|
ULONG m_cIdentifiers;
|
|
|
|
[size_is(m_cIdentifiers)] VDS_STORAGE_IDENTIFIER *m_rgIdentifiers;
|
|
} VDS_STORAGE_DEVICE_ID_DESCRIPTOR;
|
|
|
|
// interconnect address types
|
|
typedef enum _VDS_INTERCONNECT_ADDRESS_TYPE
|
|
{
|
|
VDS_IA_UNKNOWN = 0,
|
|
VDS_IA_FCFS,
|
|
VDS_IA_FCPH,
|
|
VDS_IA_FCPH3,
|
|
VDS_IA_MAC,
|
|
VDS_IA_SCSI
|
|
} VDS_INTERCONNECT_ADDRESS_TYPE;
|
|
|
|
typedef struct _VDS_INTERCONNECT
|
|
{
|
|
// address type
|
|
VDS_INTERCONNECT_ADDRESS_TYPE m_addressType;
|
|
|
|
// port that address refers to
|
|
ULONG m_cbPort;
|
|
|
|
// actual address of port
|
|
[size_is(m_cbPort)] BYTE *m_pbPort;
|
|
|
|
// size of address
|
|
ULONG m_cbAddress;
|
|
|
|
// address relative to the port
|
|
[size_is(m_cbAddress)] BYTE *m_pbAddress;
|
|
} VDS_INTERCONNECT;
|
|
|
|
|
|
|
|
// information about a lun. Includes STORAGE_DEVICE_DESCRIPTOR
|
|
// (from ntddstor.h) STORAGE_DEVICE_ID_DESCRIPTOR, interconnect address type,
|
|
// and interconnect address.
|
|
typedef struct _VDS_LUN_INFORMATION
|
|
{
|
|
// version of structure
|
|
ULONG m_version;
|
|
|
|
// The SCSI-2 device type
|
|
BYTE m_DeviceType;
|
|
|
|
// The SCSI-2 device type modifier (if any) - this may be zero
|
|
BYTE m_DeviceTypeModifier;
|
|
|
|
// Flag indicating whether the device can support mulitple outstanding
|
|
// commands. The actual synchronization in this case is the responsibility
|
|
// of the port driver.
|
|
BOOL m_bCommandQueueing;
|
|
|
|
// Contains the bus type (as defined above) of the device. It should be
|
|
// used to interpret the raw device properties at the end of this structure
|
|
// (if any)
|
|
VDS_STORAGE_BUS_TYPE m_BusType;
|
|
|
|
|
|
// vendor id string. For devices with no such ID this will be zero
|
|
[string] char *m_szVendorId;
|
|
|
|
// device's product id string. For devices with no such ID this will be zero
|
|
[string] char *m_szProductId;
|
|
|
|
// zero-terminated ascii string containing the device's
|
|
// product revision string. For devices with no such string this will be
|
|
// zero
|
|
[string] char *m_szProductRevision;
|
|
|
|
// zero-terminated ascii string containing the device's
|
|
// serial number. For devices with no serial number this will be zero
|
|
[string] char *m_szSerialNumber;
|
|
|
|
// disk signature
|
|
GUID m_diskSignature;
|
|
|
|
// device id descriptor
|
|
VDS_STORAGE_DEVICE_ID_DESCRIPTOR m_deviceIdDescriptor;
|
|
|
|
// number of interconnects
|
|
ULONG m_cInterconnects;
|
|
|
|
// array of interconnects
|
|
[size_is(m_cInterconnects)] VDS_INTERCONNECT *m_rgInterconnects;
|
|
} VDS_LUN_INFORMATION;
|
|
|
|
const ULONG VER_VDS_LUN_INFORMATION = 1;
|
|
|