Source code of Windows XP (NT5)
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.

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