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 Bus I/O 요청의 FunctionNumber 값 아래에 설명되어 있습니다.
Flags
예약되어 있습니다. 드라이버는 한 가지 예외를 제외하고 이 멤버를 0으로 설정해야 합니다. REQUEST_ISOCH_ALLOCATE_BANDWIDTH 요청을 수행할 때 호출자는 Flags에서 IRB_FLAG_ALLOW_REMOTE_FREE 플래그를 설정하여 시스템이 IsochAllocateBandwidth.hBandwidth로 가리키는 대역폭 핸들 메모리를 해제해야 함을 나타낼 수 있습니다. 호출자가 이 플래그를 설정하지 않으면 호출자는 대역폭 핸들을 해제해야 합니다.
BusReserved[IRB_BUS_RESERVED_SZ]
예약되어 있습니다.
PortReserved[IRB_PORT_RESERVED_SZ]
예약되어 있습니다.
u
FunctionNumber의 각 값에 대해 하나씩 구조체의 결합을 지정합니다. 각 요청에 해당하는 u 하위 구성원은 IEEE 1394 Bus 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 Bus I/O 요청을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | 1394.h(1394.h 포함) |