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