IRB 結構 (1394.h)
驅動程式會使用此結構,將大部分的要求傳遞至 IEEE 1394 總線驅動程式。
語法
typedef struct _IRB {
ULONG FunctionNumber;
ULONG Flags;
ULONG_PTR BusReserved[IRB_BUS_RESERVED_SZ];
ULONG_PTR PortReserved[IRB_PORT_RESERVED_SZ];
union {
IRB_REQ_ASYNC_READ AsyncRead;
IRB_REQ_ASYNC_WRITE AsyncWrite;
IRB_REQ_ASYNC_LOCK AsyncLock;
IRB_REQ_ISOCH_ALLOCATE_BANDWIDTH IsochAllocateBandwidth;
IRB_REQ_ISOCH_ALLOCATE_CHANNEL IsochAllocateChannel;
IRB_REQ_ISOCH_ALLOCATE_RESOURCES IsochAllocateResources;
IRB_REQ_ISOCH_ATTACH_BUFFERS IsochAttachBuffers;
IRB_REQ_ISOCH_DETACH_BUFFERS IsochDetachBuffers;
IRB_REQ_ISOCH_FREE_BANDWIDTH IsochFreeBandwidth;
IRB_REQ_ISOCH_FREE_CHANNEL IsochFreeChannel;
IRB_REQ_ISOCH_FREE_RESOURCES IsochFreeResources;
IRB_REQ_ISOCH_LISTEN IsochListen;
IRB_REQ_ISOCH_QUERY_CURRENT_CYCLE_TIME IsochQueryCurrentCycleTime;
IRB_REQ_ISOCH_QUERY_RESOURCES IsochQueryResources;
IRB_REQ_ISOCH_SET_CHANNEL_BANDWIDTH IsochSetChannelBandwidth;
IRB_REQ_ISOCH_STOP IsochStop;
IRB_REQ_ISOCH_TALK IsochTalk;
IRB_REQ_ISOCH_MODIFY_STREAM_PROPERTIES IsochModifyStreamProperties;
IRB_REQ_ALLOCATE_ADDRESS_RANGE AllocateAddressRange;
IRB_REQ_FREE_ADDRESS_RANGE FreeAddressRange;
IRB_REQ_GET_LOCAL_HOST_INFORMATION GetLocalHostInformation;
IRB_REQ_GET_1394_ADDRESS_FROM_DEVICE_OBJECT Get1394AddressFromDeviceObject;
IRB_REQ_CONTROL Control;
IRB_REQ_GET_MAX_SPEED_BETWEEN_DEVICES GetMaxSpeedBetweenDevices;
IRB_REQ_SET_DEVICE_XMIT_PROPERTIES SetDeviceXmitProperties;
IRB_REQ_SET_LOCAL_HOST_PROPERTIES SetLocalHostProperties;
IRB_REQ_GET_CONFIGURATION_INFORMATION GetConfigurationInformation;
IRB_REQ_GET_CONFIG_ROM GetConfigRom;
IRB_REQ_BUS_RESET BusReset;
IRB_REQ_GET_GENERATION_COUNT GetGenerationCount;
IRB_REQ_SEND_PHY_CONFIGURATION_PACKET SendPhyConfigurationPacket;
IRB_REQ_SEND_PHY_PACKET SendPhyPacket;
IRB_REQ_RECEIVE_PHY_PACKETS ReceivePhyPackets;
IRB_REQ_GET_SPEED_TOPOLOGY_MAPS GetSpeedTopologyMaps;
IRB_REQ_BUS_RESET_NOTIFICATION BusResetNotification;
IRB_REQ_ASYNC_STREAM AsyncStream;
} u;
} IRB, *PIRB;
成員
FunctionNumber
決定要求的類型。 每個要求類型都會記錄在 IEEE 1394 總線 I/O 要求中的 FunctionNumber 值之下。
Flags
保留的。 驅動程式必須將這個成員設定為零,但有一個例外狀況。 提出 REQUEST_ISOCH_ALLOCATE_BANDWIDTH 要求時,呼叫端可以在 Flags 中設定IRB_FLAG_ALLOW_REMOTE_FREE旗標,以指出系統應該釋放指向 IsochAllocateBandwidth.hBandwidth 的頻寬句柄記憶體。 如果呼叫端未設定此旗標,則呼叫端必須釋放頻寬句柄。
BusReserved[IRB_BUS_RESERVED_SZ]
保留的。
PortReserved[IRB_PORT_RESERVED_SZ]
保留的。
u
指定 結構的聯集,每個 FunctionNumber 值各一個。 每個要求的 適用子 成員都會以 IEEE 1394 總線 I/O 要求中的每個要求類型來描述。
u.AsyncRead
u.AsyncWrite
u.AsyncLock
u.IsochAllocateBandwidth
u.IsochAllocateChannel
u.IsochAllocateResources
u.IsochAttachBuffers
u.IsochDetachBuffers
u.IsochFreeBandwidth
u.IsochFreeChannel
u.IsochFreeResources
u.IsochListen
u.IsochQueryCurrentCycleTime
u.IsochQueryResources
u.IsochSetChannelBandwidth
u.IsochStop
u.IsochTalk
u.IsochModifyStreamProperties
u.AllocateAddressRange
u.FreeAddressRange
u.GetLocalHostInformation
u.Get1394AddressFromDeviceObject
u.Control
u.GetMaxSpeedBetweenDevices
u.SetDeviceXmitProperties
u.SetLocalHostProperties
u.GetConfigurationInformation
u.GetConfigRom
u.BusReset
u.GetGenerationCount
u.SendPhyConfigurationPacket
u.SendPhyPacket
u.ReceivePhyPackets
u.GetSpeedTopologyMaps
u.BusResetNotification
u.AsyncStream
備註
IOCTL_1394_CLASS IRP 的 Parameters-Others.Arguments1> 成員指向 IRB 結構。 總線驅動程式會使用 IRB 來判斷設備驅動器所提出的要求類型,並也會傳回作業的結果。 如需每個要求行為的描述,請參閱 IEEE 1394 總線 I/O 要求 。
規格需求
需求 | 值 |
---|---|
標頭 | 1394.h (包含 1394.h) |