windows-nt/Source/XPSP1/NT/public/sdk/inc/1394wmi.h
2020-09-26 16:20:57 +08:00

625 lines
22 KiB
C

#ifndef _1394wmi_w_
#define _1394wmi_w_
// MS1394_BusDriverInformation - BUS1394_WMI_STD_DATA
// IEEE1394 Standard Bus Driver Information
#define GUID_BUS1394_WMI_STD_DATA \
{ 0x099132c8,0x68d9,0x4f94, { 0xb5,0xa6,0xa7,0xa7,0xe3,0x49,0x0e,0xc8 } }
DEFINE_GUID(MS1394_BusDriverInformationGuid, \
0x099132c8,0x68d9,0x4f94,0xb5,0xa6,0xa7,0xa7,0xe3,0x49,0x0e,0xc8);
typedef struct _BUS1394_WMI_STD_DATA
{
// Bus Driver DDI Version.
ULONG BusDDIVersion;
#define BUS1394_WMI_DDI_VERSION_SIZE sizeof(ULONG)
#define BUS1394_WMI_DDI_VERSION_ID 1
// Maximum phy speed bus driver can handle.
ULONG MaxPhySpeed;
#define BUS1394_WMI_MAX_PHY_SPEED_SUPPORTED_SIZE sizeof(ULONG)
#define BUS1394_WMI_MAX_PHY_SPEED_SUPPORTED_ID 2
// EUI-64 for Local Host COntroller of this bus.
ULONGLONG LocalHostControllerEUI;
#define BUS1394_WMI_CONTROLLER_EUI_64_SIZE sizeof(ULONGLONG)
#define BUS1394_WMI_CONTROLLER_EUI_64_ID 3
// Configuration Rom Size.
ULONG ConfigRomSize;
#define BUS1394_WMI_CONFIG_ROM_SIZE_SIZE sizeof(ULONG)
#define BUS1394_WMI_CONFIG_ROM_SIZE_ID 4
// Congiguration Rom Bus driver exposes on the bus.
UCHAR ConfigRom[1024];
#define BUS1394_WMI_CONFIG_ROM_SIZE sizeof(UCHAR[1024])
#define BUS1394_WMI_CONFIG_ROM_ID 5
// Reserved for future use
BOOLEAN Reserved1;
#define BUS1394_WMI_STD_DATA_Reserved1_SIZE sizeof(BOOLEAN)
#define BUS1394_WMI_STD_DATA_Reserved1_ID 6
} BUS1394_WMI_STD_DATA, *PBUS1394_WMI_STD_DATA;
// MS1394_BusInformation - BUS1394_WMI_BUS_DATA
// IEEE1394 Bus Information
#define GUID_BUS1394_WMI_BUS_DATA \
{ 0x21dab3c0,0x1452,0x49d0, { 0xbf,0x25,0xc9,0x77,0xe1,0x1e,0xe7,0xe9 } }
DEFINE_GUID(MS1394_BusInformationGuid, \
0x21dab3c0,0x1452,0x49d0,0xbf,0x25,0xc9,0x77,0xe1,0x1e,0xe7,0xe9);
typedef struct _BUS1394_WMI_BUS_DATA
{
// Bus Generation.
ULONG Generation;
#define BUS1394_WMI_GENERATION_COUNT_SIZE sizeof(ULONG)
#define BUS1394_WMI_GENERATION_COUNT_ID 1
// Local Host Self ID packet
ULONG LocalHostSelfId[4];
#define BUS1394_WMI_LOCAL_HOST_SELF_ID_SIZE sizeof(ULONG[4])
#define BUS1394_WMI_LOCAL_HOST_SELF_ID_ID 2
// Bus Topology Map.
ULONG TopologyMap[256];
#define BUS1394_WMI_TOPOLOGY_MAP_SIZE sizeof(ULONG[256])
#define BUS1394_WMI_TOPOLOGY_MAP_ID 3
// Bus Tree Topology Map.
ULONG TreeTopologyMap[64];
#define BUS1394_WMI_TREE_TOPOLOGY_MAP_SIZE sizeof(ULONG[64])
#define BUS1394_WMI_TREE_TOPOLOGY_MAP_ID 4
// Reserved for future use
BOOLEAN Reserved1;
#define BUS1394_WMI_BUS_DATA_Reserved1_SIZE sizeof(BOOLEAN)
#define BUS1394_WMI_BUS_DATA_Reserved1_ID 5
} BUS1394_WMI_BUS_DATA, *PBUS1394_WMI_BUS_DATA;
// MS1394_BusErrorInformation - BUS1394_WMI_ERROR_DATA
// IEEE1394 Bus Error Information
#define GUID_BUS1394_WMI_ERROR_DATA \
{ 0x2c9d0f26,0x5e24,0x4369, { 0xba,0x8e,0x32,0x98,0xb5,0x5f,0x3d,0x71 } }
DEFINE_GUID(MS1394_BusErrorInformationGuid, \
0x2c9d0f26,0x5e24,0x4369,0xba,0x8e,0x32,0x98,0xb5,0x5f,0x3d,0x71);
typedef struct _BUS1394_WMI_ERROR_DATA
{
// Bus Generation.
ULONG Generation;
#define BUS1394_WMI_ERROR_DATA_GENERATION_COUNT_SIZE sizeof(ULONG)
#define BUS1394_WMI_ERROR_DATA_GENERATION_COUNT_ID 1
// Number of Devices we didnt have enough power budget to power.
ULONG NumberOfUnpoweredDevices;
#define BUS1394_WMI_NUMBER_OF_UNPOWERED_DEVICES_SIZE sizeof(ULONG)
#define BUS1394_WMI_NUMBER_OF_UNPOWERED_DEVICES_ID 2
// SelfIds of Devices we didnt have enough power budget to power.
ULONG UnpoweredDevices[63];
#define BUS1394_WMI_SELF_ID_PACKETS_OF_UNPOWERED_DEVICES_SIZE sizeof(ULONG[63])
#define BUS1394_WMI_SELF_ID_PACKETS_OF_UNPOWERED_DEVICES_ID 3
// Number of Devices we couldnt enumerate.
ULONG NumberOfNonEnumeratedDevices;
#define BUS1394_WMI_NUMBER_OF_NONENUMERATED_DEVICES_SIZE sizeof(ULONG)
#define BUS1394_WMI_NUMBER_OF_NONENUMERATED_DEVICES_ID 4
// SelfIds of Devices we couldnt enumerate
ULONG NonEnumeratedDevices[63];
#define BUS1394_WMI_SELF_ID_PACKETS_OF_NON_ENUMERATED_DEVICES_SIZE sizeof(ULONG[63])
#define BUS1394_WMI_SELF_ID_PACKETS_OF_NON_ENUMERATED_DEVICES_ID 5
// Reserved for future use
BOOLEAN Reserved1;
#define BUS1394_WMI_ERROR_DATA_Reserved1_SIZE sizeof(BOOLEAN)
#define BUS1394_WMI_ERROR_DATA_Reserved1_ID 6
} BUS1394_WMI_ERROR_DATA, *PBUS1394_WMI_ERROR_DATA;
// MS1394_BusDeviceEnumerationControl - BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA
// IEEE1394 Bus Device Enumeration Control
#define GUID_BUS1394_WMI_ENUMERATION_CONTROL \
{ 0xfb7f2114,0xd577,0x45b6, { 0x9c,0x71,0xbb,0x12,0x37,0xce,0x00,0xbc } }
DEFINE_GUID(MS1394_BusDeviceEnumerationControlGuid, \
0xfb7f2114,0xd577,0x45b6,0x9c,0x71,0xbb,0x12,0x37,0xce,0x00,0xbc);
typedef struct _BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA
{
// Disable All Enumeration
#define BUS1394_WMI_ENUM_CONTROL_FLAG_DISABLE_ALL_ENUMERATION 0x1
// Enable All Enumeration
#define BUS1394_WMI_ENUM_CONTROL_FLAG_ENABLE_ALL_ENUMERATION 0x2
// Enumeration Control Flags
ULONG Flags;
#define BUS1394_WMI_ENUM_CONTROL_FLAGS_SIZE sizeof(ULONG)
#define BUS1394_WMI_ENUM_CONTROL_FLAGS_ID 1
// Number Of Elements
ULONG NumberOfElements;
#define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_NumberOfElements_SIZE sizeof(ULONG)
#define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_NumberOfElements_ID 2
// Unit Spec Keys
#define BUS1394_WMI_ENUM_CONTROL_TYPE_UNIT_KEYS 0
// EUI 64
#define BUS1394_WMI_ENUM_CONTROL_TYPE_EUI_64 1
// Physical Port Number
#define BUS1394_WMI_ENUM_CONTROL_TYPE_PHYSICAL_PORT_NUMBER 2
// Element Type.
ULONG ExclusionElementType[63];
#define BUS1394_WMI_ENUM_CONTROL_EXCLUSION_ELEMENT_TYPE_SIZE sizeof(ULONG[63])
#define BUS1394_WMI_ENUM_CONTROL_EXCLUSION_ELEMENT_TYPE_ID 3
// Exclusion Element Flags
ULONG ExclusionElementFlags[63];
#define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_ExclusionElementFlags_SIZE sizeof(ULONG[63])
#define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_ExclusionElementFlags_ID 4
// Exclusion Element List
ULONGLONG ExclusionElementList[63];
#define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_ExclusionElementList_SIZE sizeof(ULONGLONG[63])
#define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_ExclusionElementList_ID 5
// Reserved for future use
BOOLEAN Reserved1;
#define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_Reserved1_SIZE sizeof(BOOLEAN)
#define BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA_Reserved1_ID 6
} BUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA, *PBUS1394_WMI_DEVICE_ENUMERATION_CONTROL_DATA;
// MS1394_BusEventNotification - BUS1394_WMI_EVENT_NOTIFICATION
// IEEE1394 Bus Event Notification
#define GUID_BUS1394_WMI_EVENT_NOTIFICATION \
{ 0x247e7c4a,0x8dc0,0x441f, { 0x8e,0x04,0x0f,0x1a,0x07,0xb7,0x3e,0x5e } }
DEFINE_GUID(MS1394_BusEventNotificationGuid, \
0x247e7c4a,0x8dc0,0x441f,0x8e,0x04,0x0f,0x1a,0x07,0xb7,0x3e,0x5e);
typedef struct _BUS1394_WMI_EVENT_NOTIFICATION
{
// Bus Generation.
ULONG BusGeneration;
#define DEVICE1394_WMI_NOTIFICATION_BUS_GENERATION_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_NOTIFICATION_BUS_GENERATION_ID 1
// Bus Reset Event
#define BUS1394_EVENT_NOTIFICATION_TYPE_BUS_RESET 0
// Bus Reset Storm Error Event
#define BUS1394_EVENT_NOTIFICATION_TYPE_BUS_RESET_STORM 1
// Notification Type.
ULONG Type;
#define BUS1394_WMI_NOTIFICATION_TYPE_SIZE sizeof(ULONG)
#define BUS1394_WMI_NOTIFICATION_TYPE_ID 2
} BUS1394_WMI_EVENT_NOTIFICATION, *PBUS1394_WMI_EVENT_NOTIFICATION;
// MS1394_PortDriverInformation - PORT1394_WMI_STD_DATA
// IEEE1394 Standard Host Controller Driver Information
#define GUID_PORT1394_WMI_STD_DATA \
{ 0xfae13270,0xf0e0,0x47c2, { 0xb1,0xf1,0x0a,0xc2,0xe4,0xb9,0x0d,0xfe } }
DEFINE_GUID(MS1394_PortDriverInformationGuid, \
0xfae13270,0xf0e0,0x47c2,0xb1,0xf1,0x0a,0xc2,0xe4,0xb9,0x0d,0xfe);
typedef struct _PORT1394_WMI_STD_DATA
{
// Link Speed.
ULONG LinkSpeed;
#define PORT1394_WMI_LINK_SPEED_SIZE sizeof(ULONG)
#define PORT1394_WMI_LINK_SPEED_ID 1
// Phy Speed.
ULONG PhySpeed;
#define PORT1394_WMI_PHY_SPEED_SIZE sizeof(ULONG)
#define PORT1394_WMI_PHY_SPEED_ID 2
// Number of phy ports present
ULONG NumberOfPhysicalPorts;
#define PORT1394_WMI_NUMBER_OF_PORTS_SIZE sizeof(ULONG)
#define PORT1394_WMI_NUMBER_OF_PORTS_ID 3
// Maximum Write Asynchronous packet size.
ULONG MaxAsyncWritePacket;
#define PORT1394_WMI_MAX_ASYNC_WRITE_PACKET_SIZE sizeof(ULONG)
#define PORT1394_WMI_MAX_ASYNC_WRITE_PACKET_ID 4
// Maximum Read Asynchronous packet size.
ULONG MaxAsyncReadPacket;
#define PORT1394_WMI_MAX_ASYNC_READ_PACKET_SIZE sizeof(ULONG)
#define PORT1394_WMI_MAX_ASYNC_READ_PACKET_ID 5
// Number of Isochronous Transmit DMA engines.
ULONG NumberOfIsochTxDmaContexts;
#define PORT1394_WMI_NUMBER_OF_ISOCH_TX_DMA_CONTEXTS_SIZE sizeof(ULONG)
#define PORT1394_WMI_NUMBER_OF_ISOCH_TX_DMA_CONTEXTS_ID 6
// Number of Isochronous Receive DMA engines.
ULONG NumberOfIsochRxDmaContexts;
#define PORT1394_WMI_NUMBER_OF_ISOCH_RX_DMA_CONTEXTS_SIZE sizeof(ULONG)
#define PORT1394_WMI_NUMBER_OF_ISOCH_RX_DMA_CONTEXTS_ID 7
// Number of Outstanding Response Transmit packets we can handle.
ULONG NumberOfResponseWorkers;
#define PORT1394_WMI_NUMBER_OF_RESPONSE_WORKERS_SIZE sizeof(ULONG)
#define PORT1394_WMI_NUMBER_OF_RESPONSE_WORKERS_ID 8
// Maximum Number of Outstanding Transmit requests.
ULONG NumberOfTransmitWorkers;
#define PORT1394_WMI_NUMBER_OF_TRANSMIT_WORKERS_SIZE sizeof(ULONG)
#define PORT1394_WMI_NUMBER_OF_TRANSMIT_WORKERS_ID 9
// General receive request buffer size.
ULONG GeneralAsyncReceiveRequestBufferSize;
#define PORT1394_WMI_RECEIVE_BUFFER_SIZE_SIZE sizeof(ULONG)
#define PORT1394_WMI_RECEIVE_BUFFER_SIZE_ID 10
// General receive response buffer size.
ULONG GeneralAsyncReceiveResponseBufferSize;
#define PORT1394_WMI_RESPONSE_BUFFER_SIZE_SIZE sizeof(ULONG)
#define PORT1394_WMI_RESPONSE_BUFFER_SIZE_ID 11
// Number of deciWatts supplied to the bus.
ULONG DeciWattsSupplied;
#define PORT1394_WMI_POWER_DECIWATTS_SUPPLIED_SIZE sizeof(ULONG)
#define PORT1394_WMI_POWER_DECIWATTS_SUPPLIED_ID 12
// Number of deciVolts supplied to the bus.
ULONG DeciVoltsSupplied;
#define PORT1394_WMI_POWER_DECIVOLTS_SUPPLIED_SIZE sizeof(ULONG)
#define PORT1394_WMI_POWER_DECIVOLTS_SUPPLIED_ID 13
// Supports Packet ISOCH
#define SUPPORTS_PACKET_ISOCH 0x1
// Supports Stream ISOCH
#define SUPPORTS_STREAM_ISOCH 0x2
// Supports Iso Header Insertion
#define SUPPORTS_ISO_HEADER_INSERTION 0x4
// Supports Fixed Packet Iso Stripping
#define SUPPORTS_FIXED_PACKET_ISO_STRIPPING 0x8
// Supports Variable Packet Iso Stripping
#define SUPPORTS_VARIABLE_PACKET_ISO_STRIPPING 0x10
// Supports Bus Csr In Hardware
#define SUPPORTS_BUS_CSR_IN_HARDWARE 0x20
// Features this host controller supports.
ULONG Capabilities;
#define PORT1394_WMI_CONTROLLER_CAPABILITIES_SIZE sizeof(ULONG)
#define PORT1394_WMI_CONTROLLER_CAPABILITIES_ID 14
// Globally unique 64 bit identifier for this host controller.
ULONGLONG ControllerEUI;
#define PORT1394_WMI_EUI_64_SIZE sizeof(ULONGLONG)
#define PORT1394_WMI_EUI_64_ID 15
// Reserved for future use
BOOLEAN Reserved1;
#define PORT1394_WMI_STD_DATA_Reserved1_SIZE sizeof(BOOLEAN)
#define PORT1394_WMI_STD_DATA_Reserved1_ID 16
} PORT1394_WMI_STD_DATA, *PPORT1394_WMI_STD_DATA;
// MS1394_PortErrorInformation - PORT1394_WMI_ERROR_DATA
// IEEE1394 Host Controller Error Information
#define GUID_PORT1394_WMI_ERROR_DATA \
{ 0x09ee6a0d,0xc0e4,0x43b1, { 0x8e,0x25,0x7c,0x0f,0xe3,0xd2,0x8f,0xc0 } }
DEFINE_GUID(MS1394_PortErrorInformationGuid, \
0x09ee6a0d,0xc0e4,0x43b1,0x8e,0x25,0x7c,0x0f,0xe3,0xd2,0x8f,0xc0);
typedef struct _PORT1394_WMI_ERROR_DATA
{
// Bus Reset Storm
#define PORT1394_ERROR_BUS_RESET_STORM 0x1
// Physical Chip Access Error
#define PORT1394_ERROR_PHYSICAL_CHIP_NOT_ACCESSIBLE 0x2
// Controller Error Flags
ULONG ErrorFlags;
#define PORT1394_ERROR_FLAGS_SIZE sizeof(ULONG)
#define PORT1394_ERROR_FLAGS_ID 1
// Reserved for future use
BOOLEAN Reserved1;
#define PORT1394_WMI_ERROR_DATA_Reserved1_SIZE sizeof(BOOLEAN)
#define PORT1394_WMI_ERROR_DATA_Reserved1_ID 2
} PORT1394_WMI_ERROR_DATA, *PPORT1394_WMI_ERROR_DATA;
// MS1394_PortVendorRegisterAccess - PORT1394_WMI_VENDOR_REGISTER_ACCESS
// IEEE1394 Host Controller Vendor Register Access
#define GUID_PORT1394_WMI_VENDOR_REGISTER_ACCESS \
{ 0x0211cbd9,0x6a7a,0x4464, { 0x88,0xf6,0x1c,0xf8,0x14,0x63,0xb1,0xfc } }
DEFINE_GUID(MS1394_PortVendorRegisterAccessGuid, \
0x0211cbd9,0x6a7a,0x4464,0x88,0xf6,0x1c,0xf8,0x14,0x63,0xb1,0xfc);
typedef struct _PORT1394_WMI_VENDOR_REGISTER_ACCESS
{
// Register to operate on.
ULONG NumberOfRegisters;
#define PORT1394_WMI_NUMBER_OF_VENDOR_REGISTERS_SIZE sizeof(ULONG)
#define PORT1394_WMI_NUMBER_OF_VENDOR_REGISTERS_ID 1
// Register sizes.
ULONG RegisterSize[10];
#define PORT1394_WMI_VENDOR_REGISTER_SIZE_SIZE sizeof(ULONG[10])
#define PORT1394_WMI_VENDOR_REGISTER_SIZE_ID 2
// Register Read
#define PORT1394_WMI_READ_VENDOR_REGISTER 0
// Register Write
#define PORT1394_WMI_WRITE_VENDOR_REGISTER 1
// Register operation.
ULONG RegisterOperation[10];
#define PORT1394_WMI_VENDOR_REGISTER_OPERATION_SIZE sizeof(ULONG[10])
#define PORT1394_WMI_VENDOR_REGISTER_OPERATION_ID 3
// Register base offset.
ULONG RegisterBase[10];
#define PORT1394_WMI_VENDOR_REGISTER_BASE_SIZE sizeof(ULONG[10])
#define PORT1394_WMI_VENDOR_REGISTER_BASE_ID 4
// Register data.
ULONGLONG RegisterData[10];
#define PORT1394_WMI_VENDOR_REGISTER_DATA_SIZE sizeof(ULONGLONG[10])
#define PORT1394_WMI_VENDOR_REGISTER_DATA_ID 5
// Reserved for future use
BOOLEAN Reserved1;
#define PORT1394_WMI_VENDOR_REGISTER_ACCESS_Reserved1_SIZE sizeof(BOOLEAN)
#define PORT1394_WMI_VENDOR_REGISTER_ACCESS_Reserved1_ID 6
} PORT1394_WMI_VENDOR_REGISTER_ACCESS, *PPORT1394_WMI_VENDOR_REGISTER_ACCESS;
// MS1394_PortVendorRegisterAccessMethods - MS1394_PortVendorRegisterAccessMethods
// IEEE1394 Host Controller Vendor Register Access
#define MS1394_PortVendorRegisterAccessMethodsGuid \
{ 0x0211cbd9,0x6a7a,0x4464, { 0x88,0xf6,0x1c,0xf8,0x14,0x63,0xb1,0xfc } }
DEFINE_GUID(MS1394_PortVendorRegisterAccessMethods_GUID, \
0x0211cbd9,0x6a7a,0x4464,0x88,0xf6,0x1c,0xf8,0x14,0x63,0xb1,0xfc);
//
// Method id definitions for MS1394_PortVendorRegisterAccessMethods
#define AccessVendorSpace 1
typedef struct _AccessVendorSpace_IN
{
//
PORT1394_WMI_VENDOR_REGISTER_ACCESS RegisterData;
#define AccessVendorSpace_IN_RegisterData_SIZE sizeof(PORT1394_WMI_VENDOR_REGISTER_ACCESS)
#define AccessVendorSpace_IN_RegisterData_ID 1
} AccessVendorSpace_IN, *PAccessVendorSpace_IN;
typedef struct _AccessVendorSpace_OUT
{
//
PORT1394_WMI_VENDOR_REGISTER_ACCESS RegisterData;
#define AccessVendorSpace_OUT_RegisterData_SIZE sizeof(PORT1394_WMI_VENDOR_REGISTER_ACCESS)
#define AccessVendorSpace_OUT_RegisterData_ID 1
} AccessVendorSpace_OUT, *PAccessVendorSpace_OUT;
// MS1394_DeviceInformation - DEVICE1394_WMI_STD_DATA
// IEEE1394 Standard Device Information
#define GUID_DEVICE1394_WMI_STD_DATA \
{ 0xc9299396,0x3553,0x4d48, { 0xab,0x3a,0x8b,0xfc,0x83,0x30,0x67,0xfc } }
DEFINE_GUID(MS1394_DeviceInformationGuid, \
0xc9299396,0x3553,0x4d48,0xab,0x3a,0x8b,0xfc,0x83,0x30,0x67,0xfc);
typedef struct _DEVICE1394_WMI_STD_DATA
{
// Current Generation.
ULONG Generation;
#define DEVICE1394_WMI_CURRENT_GENERATION_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_CURRENT_GENERATION_ID 1
// Physical Device
#define DEVICE_TYPE_PHYSICAL 0
// Virtual Device
#define DEVICE_TYPE_VIRTUAL 1
// Device Type
ULONG DeviceType;
#define DEVICE1394_WMI_TYPE_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_TYPE_ID 2
// Phy Speed.
ULONG PhySpeed;
#define DEVICE1394_WMI_PHY_SPEED_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_PHY_SPEED_ID 3
// Node Address.
USHORT NodeAddress;
#define DEVICE1394_WMI_NODE_ADDRESS_SIZE sizeof(USHORT)
#define DEVICE1394_WMI_NODE_ADDRESS_ID 4
// Power Class Not Need Not Repeat
#define POWER_CLASS_NOT_NEED_NOT_REPEAT 0
// Power Class Self Power Provide 15W
#define POWER_CLASS_SELF_POWER_PROVIDE_15W 1
// Power Class Self Power Provide 30W
#define POWER_CLASS_SELF_POWER_PROVIDE_30W 2
// Power Class Self Power Provide 45W
#define POWER_CLASS_SELF_POWER_PROVIDE_45W 3
// Power Class Maybe Powered Upto 1W
#define POWER_CLASS_MAYBE_POWERED_UPTO_1W 4
// Power Class Is Powered Upto 1W Needs 2W
#define POWER_CLASS_IS_POWERED_UPTO_1W_NEEDS_2W 5
// Power Class Is Powered Upto 1W Needs 5W
#define POWER_CLASS_IS_POWERED_UPTO_1W_NEEDS_5W 6
// Power Class Is Powered Upto 1W Needs_9W
#define POWER_CLASS_IS_POWERED_UPTO_1W_NEEDS_9W 7
// Device Power Class
ULONG PowerClass;
#define DEVICE1394_WMI_POWERCLASS_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_POWERCLASS_ID 5
// Physical two way delay to the device, in micro seconds.
ULONG PhyDelay;
#define DEVICE1394_WMI_PHYSICAL_DELAY_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_PHYSICAL_DELAY_ID 6
// Self Id Packet for this Device.
ULONG SelfId[4];
#define DEVICE1394_WMI_SELF_ID_PACKET_SIZE sizeof(ULONG[4])
#define DEVICE1394_WMI_SELF_ID_PACKET_ID 7
// Globally unique 64 bit identifier for this Device.
ULONGLONG DeviceEUI;
#define DEVICE1394_WMI_EUI_64_SIZE sizeof(ULONGLONG)
#define DEVICE1394_WMI_EUI_64_ID 8
// Configuration Rom BusInfoBlock and Root Directory
ULONG ConfigRomHeader[32];
#define DEVICE1394_WMI_CONFIG_ROM_SIZE sizeof(ULONG[32])
#define DEVICE1394_WMI_CONFIG_ROM_ID 9
// Unit Directory
ULONG UnitDirectory[32];
#define DEVICE1394_WMI_UNIT_DIRECTORY_SIZE sizeof(ULONG[32])
#define DEVICE1394_WMI_UNIT_DIRECTORY_ID 10
// Reserved for future use
BOOLEAN Reserved1;
#define DEVICE1394_WMI_STD_DATA_Reserved1_SIZE sizeof(BOOLEAN)
#define DEVICE1394_WMI_STD_DATA_Reserved1_ID 11
} DEVICE1394_WMI_STD_DATA, *PDEVICE1394_WMI_STD_DATA;
// MS1394_DeviceAccessInformation - DEVICE1394_WMI_ACCESS_DATA
// IEEE1394 Device Access Properties
#define GUID_DEVICE1394_WMI_ACCESS_DATA \
{ 0xa6fd3242,0x960c,0x4d9e, { 0x93,0x79,0x43,0xa8,0xb3,0x58,0x22,0x4a } }
DEFINE_GUID(MS1394_DeviceAccessInformationGuid, \
0xa6fd3242,0x960c,0x4d9e,0x93,0x79,0x43,0xa8,0xb3,0x58,0x22,0x4a);
typedef struct _DEVICE1394_WMI_ACCESS_DATA
{
// API Version.
ULONG Version;
#define DEVICE1394_WMI_ACCESS_VERSION_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_ACCESS_VERSION_ID 1
// Ownership Local Node
#define DEVICE1394_OWNERSHIP_LOCAL 0x1
// Ownership Remote Node
#define DEVICE1394_OWNERSHIP_REMOTE 0x2
// Access shared for read
#define DEVICE1394_ACCESS_SHARED_READ 0x4
// Access shared for write
#define DEVICE1394_ACCESS_SHARED_WRITE 0x8
// Access exclusive
#define DEVICE1394_ACCESS_EXCLUSIVE 0x10
// Ownership and Access Flags
ULONG OwnershipAccessFlags;
#define DEVICE1394_WMI_ACCESS_FLAGS_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_ACCESS_FLAGS_ID 2
// Notify on access change
#define DEVICE1394_NOTIFY_ON_ACCESS_CHANGE 0x1
// Notification Flags
ULONG NotificationFlags;
#define DEVICE1394_WMI_ACCESS_NOTIFICATION_FLAGS_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_ACCESS_NOTIFICATION_FLAGS_ID 3
// EUI-64 of remote device
ULONGLONG RemoteOwnerEUI;
#define DEVICE1394_WMI_ACCESS_REMOTE_OWNER_EUI64_SIZE sizeof(ULONGLONG)
#define DEVICE1394_WMI_ACCESS_REMOTE_OWNER_EUI64_ID 4
// Reserved for future use
BOOLEAN Reserved1;
#define DEVICE1394_WMI_ACCESS_DATA_Reserved1_SIZE sizeof(BOOLEAN)
#define DEVICE1394_WMI_ACCESS_DATA_Reserved1_ID 5
} DEVICE1394_WMI_ACCESS_DATA, *PDEVICE1394_WMI_ACCESS_DATA;
// MS1394_DeviceAccessNotification - DEVICE1394_WMI_ACCESS_NOTIFICATION
// IEEE1394 Device Access Notification
#define GUID_DEVICE1394_WMI_ACCESS_NOTIFY \
{ 0x321c7c45,0x8676,0x44a8, { 0x91,0x09,0x89,0xce,0x35,0x8e,0xe8,0x3f } }
DEFINE_GUID(MS1394_DeviceAccessNotificationGuid, \
0x321c7c45,0x8676,0x44a8,0x91,0x09,0x89,0xce,0x35,0x8e,0xe8,0x3f);
typedef struct _DEVICE1394_WMI_ACCESS_NOTIFICATION
{
// API Version.
ULONG Version;
#define DEVICE1394_WMI_ACCESS_NOTIFY_VERSION_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_ACCESS_NOTIFY_VERSION_ID 1
// Bus Generation.
ULONG BusGeneration;
#define DEVICE1394_WMI_ACCESS_NOTIFY_GENERATION_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_ACCESS_NOTIFY_GENERATION_ID 2
// Remote Node Access Request
#define DEVICE1394_ACCESS_NOTIFICATION_TYPE_REMOTE 0
// Local Node Access Change
#define DEVICE1394_ACCESS_NOTIFICATION_TYPE_LOCAL 1
// Notification Type.
ULONG Type;
#define DEVICE1394_WMI_ACCESS_NOTIFY_TYPE_SIZE sizeof(ULONG)
#define DEVICE1394_WMI_ACCESS_NOTIFY_TYPE_ID 3
// Current Ownership Flags
ULONGLONG OwnerShipAccessFlags;
#define DEVICE1394_WMI_ACCESS_NOTIFY_FLAGS_SIZE sizeof(ULONGLONG)
#define DEVICE1394_WMI_ACCESS_NOTIFY_FLAGS_ID 4
// EUI-64 of remote device
ULONGLONG RemoteOwnerEUI;
#define DEVICE1394_WMI_ACCESS_NOTIFY_REMOTE_OWNER_EUI64_SIZE sizeof(ULONGLONG)
#define DEVICE1394_WMI_ACCESS_NOTIFY_REMOTE_OWNER_EUI64_ID 5
// Reserved for future use
BOOLEAN Reserved1;
#define DEVICE1394_WMI_ACCESS_NOTIFICATION_Reserved1_SIZE sizeof(BOOLEAN)
#define DEVICE1394_WMI_ACCESS_NOTIFICATION_Reserved1_ID 6
} DEVICE1394_WMI_ACCESS_NOTIFICATION, *PDEVICE1394_WMI_ACCESS_NOTIFICATION;
#endif