// 1394.h
typedef struct _IRB_REQ_ASYNC_READ {
IO_ADDRESS DestinationAddress;
ULONG nNumberOfBytesToRead;
ULONG nBlockSize;
ULONG fulFlags;
PMDL Mdl;
ULONG ulGeneration;
UCHAR chPriority;
UCHAR nSpeed;
UCHAR tCode;
UCHAR Reserved;
ULONG ElapsedTime;
} IRB_REQ_ASYNC_READ;
View the official Windows Driver Kit DDI referenceNo description available.
This structure contains the fields necessary for the 1394 stack to carry out an asynchronous read request.
DestinationAddressSpecifies the 1394 64-bit destination address for this read operation. The driver only needs to fill in the IA_Destination_Offset member of DestinationAddress; the bus driver fills in the IA_Destination_ID member. See IO_ADDRESS for the structure description.
nNumberOfBytesToReadSpecifies the number of bytes to be read from the 1394 node.
nBlockSizeSpecifies the size of each individual block within the data stream that is read as a whole from the 1394 node. If this parameter is zero, the maximum packet size for the device and speed selected is used to issue these read requests, unless raw-mode addressing is used.
If raw-mode addressing is used, the client driver should set the nBlockSize member to the maximum asynchronous payload size that is supported by the device at the connected speed.
For more information on raw-mode addressing, see Sending Asynchronous I/O Request Packets on the IEEE 1394 Bus.
Note In Windows 7 and later versions of Windows, you can specify new values higher speed and greater sized payloads. For more information, see New Flags for Speed and Payload Size and IEEE 1394 IOCTL Changes in Device Driver Interface (DDI) Changes in Windows 7.
fulFlagsSpecifies any nondefault settings for this operation. The following flags are provided.
| Flag | Description |
|---|---|
| ASYNC_FLAGS_NONINCREMENTING | When the bus driver splits the request into blocks, begin the operation for each block at the same address, rather than treating each block as consecutive sections of the device's address space. Used only in asynchronous requests larger than u.AsyncRead.nBlockSize or the maximum packet size for the current speed. |
| ASYNC_FLAGS_PING | The bus driver returns the elapsed time of the operation in u.AsyncRead.ElapsedTime. |
MdlPoints to an MDL that describes the device driver's buffer, which receives data from the 1394 node.
ulGenerationSpecifies the bus reset generation as known by the device driver that submits this asynchronous request. If the generation count specified does not match the actual generation of the bus, this request is returned with an error of STATUS_INVALID_GENERATION.
chPriorityReserved. Drivers must set this to zero.
nSpeedReserved. Drivers must set this to zero.
tCodeReserved. Drivers must set this to zero.
ReservedReserved. Drivers must set this to zero.
ElapsedTimeElapsed time in nanoseconds. Only valid for flag ASYNC_FLAGS_PING.