usbstorioctl.h 1.9 KB

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