| 1 |
#pragma once |
| 2 |
|
| 3 |
#ifndef MAX_PATH |
| 4 |
#define MAX_PATH 260 |
| 5 |
#endif |
| 6 |
|
| 7 |
typedef struct tagACT_AUTHZ_STATE { |
| 8 |
UCHAR ACT; |
| 9 |
BOOLEAN fAuthorized; |
| 10 |
} ACT_AUTHZ_STATE, *PACT_AUTHZ_STATE; |
| 11 |
|
| 12 |
typedef struct tagSILO_COMMAND { |
| 13 |
UCHAR SiloIndex; |
| 14 |
UCHAR Command; |
| 15 |
ULONG cbCommandBuffer; |
| 16 |
UCHAR rgbCommandBuffer[ANYSIZE_ARRAY]; |
| 17 |
} SILO_COMMAND, *PSILO_COMMAND; |
| 18 |
|
| 19 |
typedef enum _PDO_TYPE { |
| 20 |
PDO_TYPE_UNDEFINED = 0, |
| 21 |
PDO_TYPE_DISK, |
| 22 |
PDO_TYPE_CONTROL, |
| 23 |
PDO_TYPE_SILO, |
| 24 |
PDO_TYPE_THIS = 256 |
| 25 |
} PDO_TYPE; |
| 26 |
|
| 27 |
typedef enum _PDO_STATE { |
| 28 |
PDO_STATE_UNDEFINED = 0, |
| 29 |
PDO_STATE_STARTED, |
| 30 |
PDO_STATE_NOT_STARTED |
| 31 |
} PDO_STATE; |
| 32 |
|
| 33 |
typedef enum _PDO_CAPS { |
| 34 |
PDO_CAPABILITY_UNDEFINED = 0, |
| 35 |
PDO_CAPABILITY_INC512_SET = 1, |
| 36 |
PDO_CAPABILITY_INC512_CLEAR = 2 |
| 37 |
} PDO_CAPS; |
| 38 |
|
| 39 |
typedef struct _ENUM_PDO_ENTRY { |
| 40 |
UCHAR type; |
| 41 |
UCHAR state; |
| 42 |
UCHAR capabilities; |
| 43 |
ULONG ulSTID; |
| 44 |
UCHAR bSpecificationMajor; |
| 45 |
UCHAR bSpecificationMinor; |
| 46 |
UCHAR bImplementationMajor; |
| 47 |
UCHAR bImplementationMinor; |
| 48 |
WCHAR wszDeviceInstancePath[(2 * MAX_PATH) + 1]; |
| 49 |
} ENUM_PDO_ENTRY, *PENUM_PDO_ENTRY; |
| 50 |
|
| 51 |
typedef struct _ENUM_PDO_RESULTS { |
| 52 |
ULONG cEntries; |
| 53 |
ENUM_PDO_ENTRY rgEntries[ANYSIZE_ARRAY]; |
| 54 |
} ENUM_PDO_RESULTS, *PENUM_PDO_RESULTS; |
| 55 |
|
| 56 |
#define SIZE_ENUM_PDO_RESULTS_HEADER (sizeof(ENUM_PDO_RESULTS) - sizeof(ENUM_PDO_ENTRY)) |
| 57 |
|
| 58 |
#define IOCTL_EHSTOR_DEVICE_SET_AUTHZ_STATE CTL_CODE(IOCTL_STORAGE_BASE, 0x501, METHOD_BUFFERED, FILE_ANY_ACCESS) |
| 59 |
#define IOCTL_EHSTOR_DEVICE_GET_AUTHZ_STATE CTL_CODE(IOCTL_STORAGE_BASE, 0x502, METHOD_BUFFERED, FILE_ANY_ACCESS) |
| 60 |
#define IOCTL_EHSTOR_DEVICE_SILO_COMMAND CTL_CODE(IOCTL_STORAGE_BASE, 0x503, METHOD_BUFFERED, FILE_ANY_ACCESS) |
| 61 |
#define IOCTL_EHSTOR_DEVICE_ENUMERATE_PDOS CTL_CODE(IOCTL_STORAGE_BASE, 0x504, METHOD_BUFFERED, FILE_ANY_ACCESS) |
| 62 |
|
| 63 |
DEFINE_GUID(GUID_USBSTOR_EHSTOR_SILO_INTERFACE, 0x7c2bcf57, 0x2bea, 0x46da, 0xad, 0x26, 0x78, 0xfd, 0xc8, 0x3c, 0xee, 0x46); |
| 64 |
DEFINE_GUID(GUID_USBSTOR_EHSTOR_CONTROL_INTERFACE, 0x4f40006f, 0xb933, 0x4550, 0xb5, 0x32, 0x2b, 0x58, 0xce, 0xe6, 0x14, 0xd3); |
| 65 |
|