Leaked source code of windows server 2003
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.

698 lines
25 KiB

  1. #ifndef _1394wmi_w_
  2. #define _1394wmi_w_
  3. // MS1394_BusDriverInformation - BUS1394_WMI_STD_DATA
  4. // IEEE1394 Standard Bus Driver Information
  5. #define GUID_BUS1394_WMI_STD_DATA \
  6. { 0x099132c8,0x68d9,0x4f94, { 0xb5,0xa6,0xa7,0xa7,0xe3,0x49,0x0e,0xc8 } }
  7. #if ! (defined(MIDL_PASS))
  8. DEFINE_GUID(MS1394_BusDriverInformationGuid, \
  9. 0x099132c8,0x68d9,0x4f94,0xb5,0xa6,0xa7,0xa7,0xe3,0x49,0x0e,0xc8);
  10. #endif
  11. typedef struct _BUS1394_WMI_STD_DATA
  12. {
  13. // Bus Driver DDI Version.
  14. ULONG BusDDIVersion;
  15. #define BUS1394_WMI_DDI_VERSION_SIZE sizeof(ULONG)
  16. #define BUS1394_WMI_DDI_VERSION_ID 1
  17. // Maximum phy speed bus driver can handle.
  18. ULONG MaxPhySpeed;
  19. #define BUS1394_WMI_MAX_PHY_SPEED_SUPPORTED_SIZE sizeof(ULONG)
  20. #define BUS1394_WMI_MAX_PHY_SPEED_SUPPORTED_ID 2
  21. // EUI-64 for Local Host COntroller of this bus.
  22. ULONGLONG LocalHostControllerEUI;
  23. #define BUS1394_WMI_CONTROLLER_EUI_64_SIZE sizeof(ULONGLONG)
  24. #define BUS1394_WMI_CONTROLLER_EUI_64_ID 3
  25. // Configuration Rom Size.
  26. ULONG ConfigRomSize;
  27. #define BUS1394_WMI_CONFIG_ROM_SIZE_SIZE sizeof(ULONG)
  28. #define BUS1394_WMI_CONFIG_ROM_SIZE_ID 4
  29. // Congiguration Rom Bus driver exposes on the bus.
  30. UCHAR ConfigRom[1024];
  31. #define BUS1394_WMI_CONFIG_ROM_SIZE sizeof(UCHAR[1024])
  32. #define BUS1394_WMI_CONFIG_ROM_ID 5
  33. // Reserved for future use
  34. BOOLEAN Reserved1;
  35. #define BUS1394_WMI_STD_DATA_Reserved1_SIZE sizeof(BOOLEAN)
  36. #define BUS1394_WMI_STD_DATA_Reserved1_ID 6
  37. } BUS1394_WMI_STD_DATA, *PBUS1394_WMI_STD_DATA;
  38. #define BUS1394_WMI_STD_DATA_SIZE (FIELD_OFFSET(BUS1394_WMI_STD_DATA, Reserved1) + BUS1394_WMI_STD_DATA_Reserved1_SIZE)
  39. // MS1394_BusInformation - BUS1394_WMI_BUS_DATA
  40. // IEEE1394 Bus Information
  41. #define GUID_BUS1394_WMI_BUS_DATA \
  42. { 0x21dab3c0,0x1452,0x49d0, { 0xbf,0x25,0xc9,0x77,0xe1,0x1e,0xe7,0xe9 } }
  43. #if ! (defined(MIDL_PASS))
  44. DEFINE_GUID(MS1394_BusInformationGuid, \
  45. 0x21dab3c0,0x1452,0x49d0,0xbf,0x25,0xc9,0x77,0xe1,0x1e,0xe7,0xe9);
  46. #endif
  47. typedef struct _BUS1394_WMI_BUS_DATA
  48. {
  49. // Bus Generation.
  50. ULONG Generation;
  51. #define BUS1394_WMI_GENERATION_COUNT_SIZE sizeof(ULONG)
  52. #define BUS1394_WMI_GENERATION_COUNT_ID 1
  53. // Local Host Self ID packet
  54. ULONG LocalHostSelfId[4];
  55. #define BUS1394_WMI_LOCAL_HOST_SELF_ID_SIZE sizeof(ULONG[4])
  56. #define BUS1394_WMI_LOCAL_HOST_SELF_ID_ID 2
  57. // Bus Topology Map.
  58. ULONG TopologyMap[256];
  59. #define BUS1394_WMI_TOPOLOGY_MAP_SIZE sizeof(ULONG[256])
  60. #define BUS1394_WMI_TOPOLOGY_MAP_ID 3
  61. // Bus Tree Topology Map.
  62. ULONG TreeTopologyMap[64];
  63. #define BUS1394_WMI_TREE_TOPOLOGY_MAP_SIZE sizeof(ULONG[64])
  64. #define BUS1394_WMI_TREE_TOPOLOGY_MAP_ID 4
  65. // Reserved for future use
  66. BOOLEAN Reserved1;
  67. #define BUS1394_WMI_BUS_DATA_Reserved1_SIZE sizeof(BOOLEAN)
  68. #define BUS1394_WMI_BUS_DATA_Reserved1_ID 5
  69. } BUS1394_WMI_BUS_DATA, *PBUS1394_WMI_BUS_DATA;
  70. #define BUS1394_WMI_BUS_DATA_SIZE (FIELD_OFFSET(BUS1394_WMI_BUS_DATA, Reserved1) + BUS1394_WMI_BUS_DATA_Reserved1_SIZE)
  71. // MS1394_BusErrorInformation - BUS1394_WMI_ERROR_DATA
  72. // IEEE1394 Bus Error Information
  73. #define GUID_BUS1394_WMI_ERROR_DATA \
  74. { 0x2c9d0f26,0x5e24,0x4369, { 0xba,0x8e,0x32,0x98,0xb5,0x5f,0x3d,0x71 } }
  75. #if ! (defined(MIDL_PASS))
  76. DEFINE_GUID(MS1394_BusErrorInformationGuid, \
  77. 0x2c9d0f26,0x5e24,0x4369,0xba,0x8e,0x32,0x98,0xb5,0x5f,0x3d,0x71);
  78. #endif
  79. typedef struct _BUS1394_WMI_ERROR_DATA
  80. {
  81. // Bus Generation.
  82. ULONG Generation;
  83. #define BUS1394_WMI_ERROR_DATA_GENERATION_COUNT_SIZE sizeof(ULONG)
  84. #define BUS1394_WMI_ERROR_DATA_GENERATION_COUNT_ID 1
  85. // Number of Devices we didnt have enough power budget to power.
  86. ULONG NumberOfUnpoweredDevices;
  87. #define BUS1394_WMI_NUMBER_OF_UNPOWERED_DEVICES_SIZE sizeof(ULONG)
  88. #define BUS1394_WMI_NUMBER_OF_UNPOWERED_DEVICES_ID 2
  89. // SelfIds of Devices we didnt have enough power budget to power.
  90. ULONG UnpoweredDevices[63];
  91. #define BUS1394_WMI_SELF_ID_PACKETS_OF_UNPOWERED_DEVICES_SIZE sizeof(ULONG[63])
  92. #define BUS1394_WMI_SELF_ID_PACKETS_OF_UNPOWERED_DEVICES_ID 3
  93. // Number of Devices we couldnt enumerate.
  94. ULONG NumberOfNonEnumeratedDevices;
  95. #define BUS1394_WMI_NUMBER_OF_NONENUMERATED_DEVICES_SIZE sizeof(ULONG)
  96. #define BUS1394_WMI_NUMBER_OF_NONENUMERATED_DEVICES_ID 4
  97. // SelfIds of Devices we couldnt enumerate
  98. ULONG NonEnumeratedDevices[63];
  99. #define BUS1394_WMI_SELF_ID_PACKETS_OF_NON_ENUMERATED_DEVICES_SIZE sizeof(ULONG[63])
  100. #define BUS1394_WMI_SELF_ID_PACKETS_OF_NON_ENUMERATED_DEVICES_ID 5
  101. // Reserved for future use
  102. BOOLEAN Reserved1;
  103. #define BUS1394_WMI_ERROR_DATA_Reserved1_SIZE sizeof(BOOLEAN)
  104. #define BUS1394_WMI_ERROR_DATA_Reserved1_ID 6
  105. } BUS1394_WMI_ERROR_DATA, *PBUS1394_WMI_ERROR_DATA;
  106. #define BUS1394_WMI_ERROR_DATA_SIZE (FIELD_OFFSET(BUS1394_WMI_ERROR_DATA, Reserved1) + BUS1394_WMI_ERROR_DATA_Reserved1_SIZE)
  107. // MS1394_BusDeviceEnumerationControl - BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA
  108. // IEEE1394 Bus Device Enumeration Control
  109. #define GUID_BUS1394_WMI_ENUMERATION_CONTROL \
  110. { 0xfb7f2114,0xd577,0x45b6, { 0x9c,0x71,0xbb,0x12,0x37,0xce,0x00,0xbc } }
  111. #if ! (defined(MIDL_PASS))
  112. DEFINE_GUID(MS1394_BusDeviceEnumerationControlGuid, \
  113. 0xfb7f2114,0xd577,0x45b6,0x9c,0x71,0xbb,0x12,0x37,0xce,0x00,0xbc);
  114. #endif
  115. typedef struct _BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA
  116. {
  117. // Disable All Enumeration
  118. #define BUS1394_WMI_ENUM_CONTROL_FLAG_DISABLE_ALL_ENUMERATION 0x1
  119. // Enable All Enumeration
  120. #define BUS1394_WMI_ENUM_CONTROL_FLAG_ENABLE_ALL_ENUMERATION 0x2
  121. // Enumeration Control Flags
  122. ULONG Flags;
  123. #define BUS1394_WMI_ENUM_CONTROL_FLAGS_SIZE sizeof(ULONG)
  124. #define BUS1394_WMI_ENUM_CONTROL_FLAGS_ID 1
  125. // Number Of Elements
  126. ULONG NumberOfElements;
  127. #define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_NumberOfElements_SIZE sizeof(ULONG)
  128. #define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_NumberOfElements_ID 2
  129. // Unit Spec Keys
  130. #define BUS1394_WMI_ENUM_CONTROL_TYPE_UNIT_KEYS 0
  131. // EUI 64
  132. #define BUS1394_WMI_ENUM_CONTROL_TYPE_EUI_64 1
  133. // Physical Port Number
  134. #define BUS1394_WMI_ENUM_CONTROL_TYPE_PHYSICAL_PORT_NUMBER 2
  135. // Element Type.
  136. ULONG ExclusionElementType[63];
  137. #define BUS1394_WMI_ENUM_CONTROL_EXCLUSION_ELEMENT_TYPE_SIZE sizeof(ULONG[63])
  138. #define BUS1394_WMI_ENUM_CONTROL_EXCLUSION_ELEMENT_TYPE_ID 3
  139. // Exclusion Element Flags
  140. ULONG ExclusionElementFlags[63];
  141. #define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_ExclusionElementFlags_SIZE sizeof(ULONG[63])
  142. #define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_ExclusionElementFlags_ID 4
  143. // Exclusion Element List
  144. ULONGLONG ExclusionElementList[63];
  145. #define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_ExclusionElementList_SIZE sizeof(ULONGLONG[63])
  146. #define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_ExclusionElementList_ID 5
  147. // Reserved for future use
  148. BOOLEAN Reserved1;
  149. #define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_Reserved1_SIZE sizeof(BOOLEAN)
  150. #define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_Reserved1_ID 6
  151. } BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA, *PBUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA;
  152. #define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_SIZE (FIELD_OFFSET(BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA, Reserved1) + BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_Reserved1_SIZE)
  153. // MS1394_BusEventNotification - BUS1394_WMI_EVENT_NOTIFICATION
  154. // IEEE1394 Bus Event Notification
  155. #define GUID_BUS1394_WMI_EVENT_NOTIFICATION \
  156. { 0x247e7c4a,0x8dc0,0x441f, { 0x8e,0x04,0x0f,0x1a,0x07,0xb7,0x3e,0x5e } }
  157. #if ! (defined(MIDL_PASS))
  158. DEFINE_GUID(MS1394_BusEventNotificationGuid, \
  159. 0x247e7c4a,0x8dc0,0x441f,0x8e,0x04,0x0f,0x1a,0x07,0xb7,0x3e,0x5e);
  160. #endif
  161. typedef struct _BUS1394_WMI_EVENT_NOTIFICATION
  162. {
  163. // Bus Generation.
  164. ULONG BusGeneration;
  165. #define DEVICE1394_WMI_NOTIFICATION_BUS_GENERATION_SIZE sizeof(ULONG)
  166. #define DEVICE1394_WMI_NOTIFICATION_BUS_GENERATION_ID 1
  167. // Bus Reset Event
  168. #define BUS1394_EVENT_NOTIFICATION_TYPE_BUS_RESET 0
  169. // Bus Reset Storm Error Event
  170. #define BUS1394_EVENT_NOTIFICATION_TYPE_BUS_RESET_STORM 1
  171. // Notification Type.
  172. ULONG Type;
  173. #define BUS1394_WMI_NOTIFICATION_TYPE_SIZE sizeof(ULONG)
  174. #define BUS1394_WMI_NOTIFICATION_TYPE_ID 2
  175. } BUS1394_WMI_EVENT_NOTIFICATION, *PBUS1394_WMI_EVENT_NOTIFICATION;
  176. #define BUS1394_WMI_EVENT_NOTIFICATION_SIZE (FIELD_OFFSET(BUS1394_WMI_EVENT_NOTIFICATION, Type) + BUS1394_WMI_EVENT_NOTIFICATION_Type_SIZE)
  177. // MS1394_PortDriverInformation - PORT1394_WMI_STD_DATA
  178. // IEEE1394 Standard Host Controller Driver Information
  179. #define GUID_PORT1394_WMI_STD_DATA \
  180. { 0xfae13270,0xf0e0,0x47c2, { 0xb1,0xf1,0x0a,0xc2,0xe4,0xb9,0x0d,0xfe } }
  181. #if ! (defined(MIDL_PASS))
  182. DEFINE_GUID(MS1394_PortDriverInformationGuid, \
  183. 0xfae13270,0xf0e0,0x47c2,0xb1,0xf1,0x0a,0xc2,0xe4,0xb9,0x0d,0xfe);
  184. #endif
  185. typedef struct _PORT1394_WMI_STD_DATA
  186. {
  187. // Link Speed.
  188. ULONG LinkSpeed;
  189. #define PORT1394_WMI_LINK_SPEED_SIZE sizeof(ULONG)
  190. #define PORT1394_WMI_LINK_SPEED_ID 1
  191. // Phy Speed.
  192. ULONG PhySpeed;
  193. #define PORT1394_WMI_PHY_SPEED_SIZE sizeof(ULONG)
  194. #define PORT1394_WMI_PHY_SPEED_ID 2
  195. // Number of phy ports present
  196. ULONG NumberOfPhysicalPorts;
  197. #define PORT1394_WMI_NUMBER_OF_PORTS_SIZE sizeof(ULONG)
  198. #define PORT1394_WMI_NUMBER_OF_PORTS_ID 3
  199. // Maximum Write Asynchronous packet size.
  200. ULONG MaxAsyncWritePacket;
  201. #define PORT1394_WMI_MAX_ASYNC_WRITE_PACKET_SIZE sizeof(ULONG)
  202. #define PORT1394_WMI_MAX_ASYNC_WRITE_PACKET_ID 4
  203. // Maximum Read Asynchronous packet size.
  204. ULONG MaxAsyncReadPacket;
  205. #define PORT1394_WMI_MAX_ASYNC_READ_PACKET_SIZE sizeof(ULONG)
  206. #define PORT1394_WMI_MAX_ASYNC_READ_PACKET_ID 5
  207. // Number of Isochronous Transmit DMA engines.
  208. ULONG NumberOfIsochTxDmaContexts;
  209. #define PORT1394_WMI_NUMBER_OF_ISOCH_TX_DMA_CONTEXTS_SIZE sizeof(ULONG)
  210. #define PORT1394_WMI_NUMBER_OF_ISOCH_TX_DMA_CONTEXTS_ID 6
  211. // Number of Isochronous Receive DMA engines.
  212. ULONG NumberOfIsochRxDmaContexts;
  213. #define PORT1394_WMI_NUMBER_OF_ISOCH_RX_DMA_CONTEXTS_SIZE sizeof(ULONG)
  214. #define PORT1394_WMI_NUMBER_OF_ISOCH_RX_DMA_CONTEXTS_ID 7
  215. // Number of Outstanding Response Transmit packets we can handle.
  216. ULONG NumberOfResponseWorkers;
  217. #define PORT1394_WMI_NUMBER_OF_RESPONSE_WORKERS_SIZE sizeof(ULONG)
  218. #define PORT1394_WMI_NUMBER_OF_RESPONSE_WORKERS_ID 8
  219. // Maximum Number of Outstanding Transmit requests.
  220. ULONG NumberOfTransmitWorkers;
  221. #define PORT1394_WMI_NUMBER_OF_TRANSMIT_WORKERS_SIZE sizeof(ULONG)
  222. #define PORT1394_WMI_NUMBER_OF_TRANSMIT_WORKERS_ID 9
  223. // General receive request buffer size.
  224. ULONG GeneralAsyncReceiveRequestBufferSize;
  225. #define PORT1394_WMI_RECEIVE_BUFFER_SIZE_SIZE sizeof(ULONG)
  226. #define PORT1394_WMI_RECEIVE_BUFFER_SIZE_ID 10
  227. // General receive response buffer size.
  228. ULONG GeneralAsyncReceiveResponseBufferSize;
  229. #define PORT1394_WMI_RESPONSE_BUFFER_SIZE_SIZE sizeof(ULONG)
  230. #define PORT1394_WMI_RESPONSE_BUFFER_SIZE_ID 11
  231. // Number of deciWatts supplied to the bus.
  232. ULONG DeciWattsSupplied;
  233. #define PORT1394_WMI_POWER_DECIWATTS_SUPPLIED_SIZE sizeof(ULONG)
  234. #define PORT1394_WMI_POWER_DECIWATTS_SUPPLIED_ID 12
  235. // Number of deciVolts supplied to the bus.
  236. ULONG DeciVoltsSupplied;
  237. #define PORT1394_WMI_POWER_DECIVOLTS_SUPPLIED_SIZE sizeof(ULONG)
  238. #define PORT1394_WMI_POWER_DECIVOLTS_SUPPLIED_ID 13
  239. // Supports Packet ISOCH
  240. #define SUPPORTS_PACKET_ISOCH 0x1
  241. // Supports Stream ISOCH
  242. #define SUPPORTS_STREAM_ISOCH 0x2
  243. // Supports Iso Header Insertion
  244. #define SUPPORTS_ISO_HEADER_INSERTION 0x4
  245. // Supports Fixed Packet Iso Stripping
  246. #define SUPPORTS_FIXED_PACKET_ISO_STRIPPING 0x8
  247. // Supports Variable Packet Iso Stripping
  248. #define SUPPORTS_VARIABLE_PACKET_ISO_STRIPPING 0x10
  249. // Supports Bus Csr In Hardware
  250. #define SUPPORTS_BUS_CSR_IN_HARDWARE 0x20
  251. // Features this host controller supports.
  252. ULONG Capabilities;
  253. #define PORT1394_WMI_CONTROLLER_CAPABILITIES_SIZE sizeof(ULONG)
  254. #define PORT1394_WMI_CONTROLLER_CAPABILITIES_ID 14
  255. // Globally unique 64 bit identifier for this host controller.
  256. ULONGLONG ControllerEUI;
  257. #define PORT1394_WMI_EUI_64_SIZE sizeof(ULONGLONG)
  258. #define PORT1394_WMI_EUI_64_ID 15
  259. // OHCI Version 1.0
  260. #define HW_OHCI_VERSION_1_0 0x1
  261. // OHCI Version 1.1
  262. #define HW_OHCI_VERSION_1_1 0x2
  263. // OHCI HW_Version 1.2
  264. #define HW_OHCI_VERSION_1_2 0x3
  265. // OHCI Revision
  266. ULONG HwOhciVersion;
  267. #define PORT1394_WMI_HW_OHCI_VERSION_SIZE sizeof(ULONG)
  268. #define PORT1394_WMI_HW_OHCI_VERSION_ID 16
  269. // Phy Version 1394-1995
  270. #define HW_PHY_VERSION_1394_1995 0x1
  271. // Phy Version 1394a-2000
  272. #define HW_PHY_VERSION_1394A 0x2
  273. // PHY Revision
  274. ULONG HwPhyVersion;
  275. #define PORT1394_WMI_HW_PHY_VERSION_SIZE sizeof(ULONG)
  276. #define PORT1394_WMI_HW_PHY_VERSION_ID 17
  277. // Reserved for future use
  278. BOOLEAN Reserved1;
  279. #define PORT1394_WMI_STD_DATA_Reserved1_SIZE sizeof(BOOLEAN)
  280. #define PORT1394_WMI_STD_DATA_Reserved1_ID 18
  281. } PORT1394_WMI_STD_DATA, *PPORT1394_WMI_STD_DATA;
  282. #define PORT1394_WMI_STD_DATA_SIZE (FIELD_OFFSET(PORT1394_WMI_STD_DATA, Reserved1) + PORT1394_WMI_STD_DATA_Reserved1_SIZE)
  283. // MS1394_PortErrorInformation - PORT1394_WMI_ERROR_DATA
  284. // IEEE1394 Host Controller Error Information
  285. #define GUID_PORT1394_WMI_ERROR_DATA \
  286. { 0x09ee6a0d,0xc0e4,0x43b1, { 0x8e,0x25,0x7c,0x0f,0xe3,0xd2,0x8f,0xc0 } }
  287. #if ! (defined(MIDL_PASS))
  288. DEFINE_GUID(MS1394_PortErrorInformationGuid, \
  289. 0x09ee6a0d,0xc0e4,0x43b1,0x8e,0x25,0x7c,0x0f,0xe3,0xd2,0x8f,0xc0);
  290. #endif
  291. typedef struct _PORT1394_WMI_ERROR_DATA
  292. {
  293. // Bus Reset Storm
  294. #define PORT1394_ERROR_BUS_RESET_STORM 0x1
  295. // Physical Chip Access Error
  296. #define PORT1394_ERROR_PHYSICAL_CHIP_NOT_ACCESSIBLE 0x2
  297. // Controller Error Flags
  298. ULONG ErrorFlags;
  299. #define PORT1394_ERROR_FLAGS_SIZE sizeof(ULONG)
  300. #define PORT1394_ERROR_FLAGS_ID 1
  301. // Reserved for future use
  302. BOOLEAN Reserved1;
  303. #define PORT1394_WMI_ERROR_DATA_Reserved1_SIZE sizeof(BOOLEAN)
  304. #define PORT1394_WMI_ERROR_DATA_Reserved1_ID 2
  305. } PORT1394_WMI_ERROR_DATA, *PPORT1394_WMI_ERROR_DATA;
  306. #define PORT1394_WMI_ERROR_DATA_SIZE (FIELD_OFFSET(PORT1394_WMI_ERROR_DATA, Reserved1) + PORT1394_WMI_ERROR_DATA_Reserved1_SIZE)
  307. // MS1394_PortVendorRegisterAccess - PORT1394_WMI_VENDOR_REGISTER_ACCESS
  308. // IEEE1394 Host Controller Vendor Register Access
  309. #define GUID_PORT1394_WMI_VENDOR_REGISTER_ACCESS \
  310. { 0x0211cbd9,0x6a7a,0x4464, { 0x88,0xf6,0x1c,0xf8,0x14,0x63,0xb1,0xfc } }
  311. #if ! (defined(MIDL_PASS))
  312. DEFINE_GUID(MS1394_PortVendorRegisterAccessGuid, \
  313. 0x0211cbd9,0x6a7a,0x4464,0x88,0xf6,0x1c,0xf8,0x14,0x63,0xb1,0xfc);
  314. #endif
  315. typedef struct _PORT1394_WMI_VENDOR_REGISTER_ACCESS
  316. {
  317. // Register to operate on.
  318. ULONG NumberOfRegisters;
  319. #define PORT1394_WMI_NUMBER_OF_VENDOR_REGISTERS_SIZE sizeof(ULONG)
  320. #define PORT1394_WMI_NUMBER_OF_VENDOR_REGISTERS_ID 1
  321. // Register sizes.
  322. ULONG RegisterSize[10];
  323. #define PORT1394_WMI_VENDOR_REGISTER_SIZE_SIZE sizeof(ULONG[10])
  324. #define PORT1394_WMI_VENDOR_REGISTER_SIZE_ID 2
  325. // Register Read
  326. #define PORT1394_WMI_READ_VENDOR_REGISTER 0
  327. // Register Write
  328. #define PORT1394_WMI_WRITE_VENDOR_REGISTER 1
  329. // Register operation.
  330. ULONG RegisterOperation[10];
  331. #define PORT1394_WMI_VENDOR_REGISTER_OPERATION_SIZE sizeof(ULONG[10])
  332. #define PORT1394_WMI_VENDOR_REGISTER_OPERATION_ID 3
  333. // Register base offset.
  334. ULONG RegisterBase[10];
  335. #define PORT1394_WMI_VENDOR_REGISTER_BASE_SIZE sizeof(ULONG[10])
  336. #define PORT1394_WMI_VENDOR_REGISTER_BASE_ID 4
  337. // Register data.
  338. ULONGLONG RegisterData[10];
  339. #define PORT1394_WMI_VENDOR_REGISTER_DATA_SIZE sizeof(ULONGLONG[10])
  340. #define PORT1394_WMI_VENDOR_REGISTER_DATA_ID 5
  341. // Reserved for future use
  342. BOOLEAN Reserved1;
  343. #define PORT1394_WMI_VENDOR_REGISTER_ACCESS_Reserved1_SIZE sizeof(BOOLEAN)
  344. #define PORT1394_WMI_VENDOR_REGISTER_ACCESS_Reserved1_ID 6
  345. } PORT1394_WMI_VENDOR_REGISTER_ACCESS, *PPORT1394_WMI_VENDOR_REGISTER_ACCESS;
  346. #define PORT1394_WMI_VENDOR_REGISTER_ACCESS_SIZE (FIELD_OFFSET(PORT1394_WMI_VENDOR_REGISTER_ACCESS, Reserved1) + PORT1394_WMI_VENDOR_REGISTER_ACCESS_Reserved1_SIZE)
  347. // MS1394_PortVendorRegisterAccessMethods - MS1394_PortVendorRegisterAccessMethods
  348. // IEEE1394 Host Controller Vendor Register Access
  349. #define MS1394_PortVendorRegisterAccessMethodsGuid \
  350. { 0x0211cbd9,0x6a7a,0x4464, { 0x88,0xf6,0x1c,0xf8,0x14,0x63,0xb1,0xfc } }
  351. #if ! (defined(MIDL_PASS))
  352. DEFINE_GUID(MS1394_PortVendorRegisterAccessMethods_GUID, \
  353. 0x0211cbd9,0x6a7a,0x4464,0x88,0xf6,0x1c,0xf8,0x14,0x63,0xb1,0xfc);
  354. #endif
  355. //
  356. // Method id definitions for MS1394_PortVendorRegisterAccessMethods
  357. #define AccessVendorSpace 1
  358. typedef struct _AccessVendorSpace_IN
  359. {
  360. //
  361. PORT1394_WMI_VENDOR_REGISTER_ACCESS RegisterData;
  362. #define AccessVendorSpace_IN_RegisterData_SIZE sizeof(PORT1394_WMI_VENDOR_REGISTER_ACCESS)
  363. #define AccessVendorSpace_IN_RegisterData_ID 1
  364. } AccessVendorSpace_IN, *PAccessVendorSpace_IN;
  365. #define AccessVendorSpace_IN_SIZE (FIELD_OFFSET(AccessVendorSpace_IN, RegisterData) + AccessVendorSpace_IN_RegisterData_SIZE)
  366. typedef struct _AccessVendorSpace_OUT
  367. {
  368. //
  369. PORT1394_WMI_VENDOR_REGISTER_ACCESS RegisterData;
  370. #define AccessVendorSpace_OUT_RegisterData_SIZE sizeof(PORT1394_WMI_VENDOR_REGISTER_ACCESS)
  371. #define AccessVendorSpace_OUT_RegisterData_ID 1
  372. } AccessVendorSpace_OUT, *PAccessVendorSpace_OUT;
  373. #define AccessVendorSpace_OUT_SIZE (FIELD_OFFSET(AccessVendorSpace_OUT, RegisterData) + AccessVendorSpace_OUT_RegisterData_SIZE)
  374. // MS1394_DeviceInformation - DEVICE1394_WMI_STD_DATA
  375. // IEEE1394 Standard Device Information
  376. #define GUID_DEVICE1394_WMI_STD_DATA \
  377. { 0xc9299396,0x3553,0x4d48, { 0xab,0x3a,0x8b,0xfc,0x83,0x30,0x67,0xfc } }
  378. #if ! (defined(MIDL_PASS))
  379. DEFINE_GUID(MS1394_DeviceInformationGuid, \
  380. 0xc9299396,0x3553,0x4d48,0xab,0x3a,0x8b,0xfc,0x83,0x30,0x67,0xfc);
  381. #endif
  382. typedef struct _DEVICE1394_WMI_STD_DATA
  383. {
  384. // Current Generation.
  385. ULONG Generation;
  386. #define DEVICE1394_WMI_CURRENT_GENERATION_SIZE sizeof(ULONG)
  387. #define DEVICE1394_WMI_CURRENT_GENERATION_ID 1
  388. // Physical Device
  389. #define DEVICE_TYPE_PHYSICAL 0
  390. // Virtual Device
  391. #define DEVICE_TYPE_VIRTUAL 1
  392. // Device Type
  393. ULONG DeviceType;
  394. #define DEVICE1394_WMI_TYPE_SIZE sizeof(ULONG)
  395. #define DEVICE1394_WMI_TYPE_ID 2
  396. // Phy Speed.
  397. ULONG PhySpeed;
  398. #define DEVICE1394_WMI_PHY_SPEED_SIZE sizeof(ULONG)
  399. #define DEVICE1394_WMI_PHY_SPEED_ID 3
  400. // Node Address.
  401. USHORT NodeAddress;
  402. #define DEVICE1394_WMI_NODE_ADDRESS_SIZE sizeof(USHORT)
  403. #define DEVICE1394_WMI_NODE_ADDRESS_ID 4
  404. // Power Class Not Need Not Repeat
  405. #define POWER_CLASS_NOT_NEED_NOT_REPEAT 0
  406. // Power Class Self Power Provide 15W
  407. #define POWER_CLASS_SELF_POWER_PROVIDE_15W 1
  408. // Power Class Self Power Provide 30W
  409. #define POWER_CLASS_SELF_POWER_PROVIDE_30W 2
  410. // Power Class Self Power Provide 45W
  411. #define POWER_CLASS_SELF_POWER_PROVIDE_45W 3
  412. // Power Class Maybe Powered Upto 1W
  413. #define POWER_CLASS_MAYBE_POWERED_UPTO_1W 4
  414. // Power Class Is Powered Upto 1W Needs 2W
  415. #define POWER_CLASS_IS_POWERED_UPTO_1W_NEEDS_2W 5
  416. // Power Class Is Powered Upto 1W Needs 5W
  417. #define POWER_CLASS_IS_POWERED_UPTO_1W_NEEDS_5W 6
  418. // Power Class Is Powered Upto 1W Needs_9W
  419. #define POWER_CLASS_IS_POWERED_UPTO_1W_NEEDS_9W 7
  420. // Device Power Class
  421. ULONG PowerClass;
  422. #define DEVICE1394_WMI_POWERCLASS_SIZE sizeof(ULONG)
  423. #define DEVICE1394_WMI_POWERCLASS_ID 5
  424. // Physical two way delay to the device, in micro seconds.
  425. ULONG PhyDelay;
  426. #define DEVICE1394_WMI_PHYSICAL_DELAY_SIZE sizeof(ULONG)
  427. #define DEVICE1394_WMI_PHYSICAL_DELAY_ID 6
  428. // Self Id Packet for this Device.
  429. ULONG SelfId[4];
  430. #define DEVICE1394_WMI_SELF_ID_PACKET_SIZE sizeof(ULONG[4])
  431. #define DEVICE1394_WMI_SELF_ID_PACKET_ID 7
  432. // Globally unique 64 bit identifier for this Device.
  433. ULONGLONG DeviceEUI;
  434. #define DEVICE1394_WMI_EUI_64_SIZE sizeof(ULONGLONG)
  435. #define DEVICE1394_WMI_EUI_64_ID 8
  436. // Configuration Rom BusInfoBlock and Root Directory
  437. ULONG ConfigRomHeader[32];
  438. #define DEVICE1394_WMI_CONFIG_ROM_SIZE sizeof(ULONG[32])
  439. #define DEVICE1394_WMI_CONFIG_ROM_ID 9
  440. // Unit Directory
  441. ULONG UnitDirectory[32];
  442. #define DEVICE1394_WMI_UNIT_DIRECTORY_SIZE sizeof(ULONG[32])
  443. #define DEVICE1394_WMI_UNIT_DIRECTORY_ID 10
  444. // Reserved for future use
  445. BOOLEAN Reserved1;
  446. #define DEVICE1394_WMI_STD_DATA_Reserved1_SIZE sizeof(BOOLEAN)
  447. #define DEVICE1394_WMI_STD_DATA_Reserved1_ID 11
  448. } DEVICE1394_WMI_STD_DATA, *PDEVICE1394_WMI_STD_DATA;
  449. #define DEVICE1394_WMI_STD_DATA_SIZE (FIELD_OFFSET(DEVICE1394_WMI_STD_DATA, Reserved1) + DEVICE1394_WMI_STD_DATA_Reserved1_SIZE)
  450. // MS1394_DeviceAccessInformation - DEVICE1394_WMI_ACCESS_DATA
  451. // IEEE1394 Device Access Properties
  452. #define GUID_DEVICE1394_WMI_ACCESS_DATA \
  453. { 0xa6fd3242,0x960c,0x4d9e, { 0x93,0x79,0x43,0xa8,0xb3,0x58,0x22,0x4a } }
  454. #if ! (defined(MIDL_PASS))
  455. DEFINE_GUID(MS1394_DeviceAccessInformationGuid, \
  456. 0xa6fd3242,0x960c,0x4d9e,0x93,0x79,0x43,0xa8,0xb3,0x58,0x22,0x4a);
  457. #endif
  458. typedef struct _DEVICE1394_WMI_ACCESS_DATA
  459. {
  460. // API Version.
  461. ULONG Version;
  462. #define DEVICE1394_WMI_ACCESS_VERSION_SIZE sizeof(ULONG)
  463. #define DEVICE1394_WMI_ACCESS_VERSION_ID 1
  464. // Ownership Local Node
  465. #define DEVICE1394_OWNERSHIP_LOCAL 0x1
  466. // Ownership Remote Node
  467. #define DEVICE1394_OWNERSHIP_REMOTE 0x2
  468. // Access shared for read
  469. #define DEVICE1394_ACCESS_SHARED_READ 0x4
  470. // Access shared for write
  471. #define DEVICE1394_ACCESS_SHARED_WRITE 0x8
  472. // Access exclusive
  473. #define DEVICE1394_ACCESS_EXCLUSIVE 0x10
  474. // Ownership and Access Flags
  475. ULONG OwnershipAccessFlags;
  476. #define DEVICE1394_WMI_ACCESS_FLAGS_SIZE sizeof(ULONG)
  477. #define DEVICE1394_WMI_ACCESS_FLAGS_ID 2
  478. // Notify on access change
  479. #define DEVICE1394_NOTIFY_ON_ACCESS_CHANGE 0x1
  480. // Notification Flags
  481. ULONG NotificationFlags;
  482. #define DEVICE1394_WMI_ACCESS_NOTIFICATION_FLAGS_SIZE sizeof(ULONG)
  483. #define DEVICE1394_WMI_ACCESS_NOTIFICATION_FLAGS_ID 3
  484. // EUI-64 of remote device
  485. ULONGLONG RemoteOwnerEUI;
  486. #define DEVICE1394_WMI_ACCESS_REMOTE_OWNER_EUI64_SIZE sizeof(ULONGLONG)
  487. #define DEVICE1394_WMI_ACCESS_REMOTE_OWNER_EUI64_ID 4
  488. // Reserved for future use
  489. BOOLEAN Reserved1;
  490. #define DEVICE1394_WMI_ACCESS_DATA_Reserved1_SIZE sizeof(BOOLEAN)
  491. #define DEVICE1394_WMI_ACCESS_DATA_Reserved1_ID 5
  492. } DEVICE1394_WMI_ACCESS_DATA, *PDEVICE1394_WMI_ACCESS_DATA;
  493. #define DEVICE1394_WMI_ACCESS_DATA_SIZE (FIELD_OFFSET(DEVICE1394_WMI_ACCESS_DATA, Reserved1) + DEVICE1394_WMI_ACCESS_DATA_Reserved1_SIZE)
  494. // MS1394_DeviceAccessNotification - DEVICE1394_WMI_ACCESS_NOTIFICATION
  495. // IEEE1394 Device Access Notification
  496. #define GUID_DEVICE1394_WMI_ACCESS_NOTIFY \
  497. { 0x321c7c45,0x8676,0x44a8, { 0x91,0x09,0x89,0xce,0x35,0x8e,0xe8,0x3f } }
  498. #if ! (defined(MIDL_PASS))
  499. DEFINE_GUID(MS1394_DeviceAccessNotificationGuid, \
  500. 0x321c7c45,0x8676,0x44a8,0x91,0x09,0x89,0xce,0x35,0x8e,0xe8,0x3f);
  501. #endif
  502. typedef struct _DEVICE1394_WMI_ACCESS_NOTIFICATION
  503. {
  504. // API Version.
  505. ULONG Version;
  506. #define DEVICE1394_WMI_ACCESS_NOTIFY_VERSION_SIZE sizeof(ULONG)
  507. #define DEVICE1394_WMI_ACCESS_NOTIFY_VERSION_ID 1
  508. // Bus Generation.
  509. ULONG BusGeneration;
  510. #define DEVICE1394_WMI_ACCESS_NOTIFY_GENERATION_SIZE sizeof(ULONG)
  511. #define DEVICE1394_WMI_ACCESS_NOTIFY_GENERATION_ID 2
  512. // Remote Node Access Request
  513. #define DEVICE1394_ACCESS_NOTIFICATION_TYPE_REMOTE 0
  514. // Local Node Access Change
  515. #define DEVICE1394_ACCESS_NOTIFICATION_TYPE_LOCAL 1
  516. // Notification Type.
  517. ULONG Type;
  518. #define DEVICE1394_WMI_ACCESS_NOTIFY_TYPE_SIZE sizeof(ULONG)
  519. #define DEVICE1394_WMI_ACCESS_NOTIFY_TYPE_ID 3
  520. // Current Ownership Flags
  521. ULONGLONG OwnerShipAccessFlags;
  522. #define DEVICE1394_WMI_ACCESS_NOTIFY_FLAGS_SIZE sizeof(ULONGLONG)
  523. #define DEVICE1394_WMI_ACCESS_NOTIFY_FLAGS_ID 4
  524. // EUI-64 of remote device
  525. ULONGLONG RemoteOwnerEUI;
  526. #define DEVICE1394_WMI_ACCESS_NOTIFY_REMOTE_OWNER_EUI64_SIZE sizeof(ULONGLONG)
  527. #define DEVICE1394_WMI_ACCESS_NOTIFY_REMOTE_OWNER_EUI64_ID 5
  528. // Reserved for future use
  529. BOOLEAN Reserved1;
  530. #define DEVICE1394_WMI_ACCESS_NOTIFICATION_Reserved1_SIZE sizeof(BOOLEAN)
  531. #define DEVICE1394_WMI_ACCESS_NOTIFICATION_Reserved1_ID 6
  532. } DEVICE1394_WMI_ACCESS_NOTIFICATION, *PDEVICE1394_WMI_ACCESS_NOTIFICATION;
  533. #define DEVICE1394_WMI_ACCESS_NOTIFICATION_SIZE (FIELD_OFFSET(DEVICE1394_WMI_ACCESS_NOTIFICATION, Reserved1) + DEVICE1394_WMI_ACCESS_NOTIFICATION_Reserved1_SIZE)
  534. #endif