NOTIFICATION_INFO_W2K structure (1394.h)
The bus driver passes NOTIFICATION_INFO to pass information to the driver-provided notification routine for a driver-allocated address range in the computer's IEEE 1394 address space. The bus driver calls the notification routine when it receives an asynchronous I/O request packet for that address.
Syntax
typedef struct _NOTIFICATION_INFO_W2K {
PMDL Mdl;
ULONG ulOffset;
ULONG nLength;
ULONG fulNotificationOptions;
PVOID Context;
PADDRESS_FIFO Fifo;
PVOID RequestPacket;
PMDL ResponseMdl;
PVOID *ResponsePacket;
PULONG ResponseLength;
PKEVENT *ResponseEvent;
} NOTIFICATION_INFO_W2K, *PNOTIFICATION_INFO_W2K;
Members
Mdl
If non-NULL, Mdl specifies the memory descriptor list (MDL) for the allocated address range.
ulOffset
Specifies the byte offset with the MDL that corresponds to the address that received a request packet. Only used when Mdl is non-NULL.
nLength
Specifies the number of bytes affected by the request packet. Only used when Mdl is non-NULL.
fulNotificationOptions
Specifies which type of event triggered the bus driver to call the notification routine. The possible events the bus driver can return are the following:
- NOTIFY_FLAGS_AFTER_READ
- NOTIFY_FLAGS_AFTER_WRITE
- NOTIFY_FLAGS_AFTER_LOCK
This member is only used when Mdl is non-NULL.
Context
Pointer to specific context data for this allocated address range. The driver supplies this data through the u.AllocateAddressRange.Context member of the IRB for the original REQUEST_ALLOCATE_ADDRESS_RANGE request.
Fifo
Pointer to the ADDRESS_FIFO structure that contains the FIFO element just completed. Only used if the driver submitted an ADDRESS_FIFO list in the original REQUEST_ALLOCATE_ADDRESS_RANGE request.
RequestPacket
If non-NULL, RequestPacket points to the original request packet. The bus driver only supplies this if the device driver did not supply an MDL or an ADDRESS_FIFO list in the original REQUEST_ALLOCATE_ADDRESS_RANGE request.
ResponseMdl
If non-NULL, ResponseMdl points to an uninitialized MDL. The driver must initialize this MDL for a nonpageable buffer, and fill the buffer with the response packet. The bus driver only supplies this if the device driver did not supply an MDL or an ADDRESS_FIFO list in the original REQUEST_ALLOCATE_ADDRESS_RANGE request.
ResponsePacket
If non-NULL, ResponsePacket points to a memory location that the driver fills in with a pointer to the data (quadlet or block) to be returned in the response packet. The bus driver only supplies this if the device driver did not supply an MDL or an ADDRESS_FIFO list in the original REQUEST_ALLOCATE_ADDRESS_RANGE request.
ResponseLength
If non-NULL, ResponseLength points to a memory location that the driver fills in with the length of its response packet. The bus driver only supplies this if the device driver did not supply an MDL or an ADDRESS_FIFO list in the original REQUEST_ALLOCATE_ADDRESS_RANGE request.
ResponseEvent
If non-NULL, ResponseEvent points to a memory location that the driver fills in with the kernel event the bus driver should use to signal that it has completed sending the response packet. The bus driver only supplies this if the device driver did not supply an MDL or an ADDRESS_FIFO list in the original REQUEST_ALLOCATE_ADDRESS_RANGE request.
Remarks
When a driver allocates an address range on the computer's IEEE 1394 address space, it may require that the bus driver notify it for some or all request packets sent to the allocated addresses. As part of the original allocate request, the driver may either require that the bus driver forward each packet for handling, or it may require that the bus driver handle the packet and notify the device driver when it has finished. For more information, see REQUEST_ALLOCATE_ADDRESS_RANGE.
If the device driver provides no backing store, the bus driver forwards each packet to the device driver for handling. The bus driver passes NULL for Mdl, and passes the packet in RequestPacket. The bus driver also passes pointers to memory locations that the device driver must fill in with the buffer for the response packet (in ResponsePacket), the buffer length (in ResponseLength), and an MDL for the buffer (in ResponseMdl). The bus driver also supplies a memory location that the driver can use to pass a kernel event object in ResponseEvent. If the device driver provides an event object, the bus driver uses it to signal the driver when it has finished sending the response packet.
If the driver provides the backing store in the original allocate address range request, the bus driver uses the driver's notification routine to signal that it has completed reading or writing data from the backing store. It passes the MDL of the backing store in the Mdl member, and the starting location and size within the associated buffer in ulOffset and nLength. The bus driver also passes the type of event that led to notification in fulNotificationOptions.
If the device driver is using a linked list of ADDRESS_FIFO's as the backing store, the bus driver returns the list element it popped off in Fifo.
Requirements
Requirement | Value |
---|---|
Header | 1394.h (include 1394.h) |