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 |
|
---|