Note NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.
NDIS_GET_PACKET_STATUS returns the Status value from the out-of-band data block associated with a given packet descriptor.
- Packet [in]
Pointer to a packet descriptor.
NDIS_GET_PACKET_STATUS returns the Status value currently set in the NDIS_PACKET_OOB_DATA block associated with the given packet descriptor, usually one of the following:
If this is set on return from a miniport driver's call to NdisMIndicateReceivePacket, the miniport driver regains ownership of the following:
The miniport driver can prepare these descriptors, the out-of-band block, and media-specific information buffer, if any, for reuse in subsequent receive indications, and, if it is a NIC driver, can receive new data in the NIC's receive buffers mapped by the returned buffer descriptors.
If this is set on return from NdisMIndicateReceivePacket, protocols retain ownership of the following:
Until the packet descriptor is returned to the MiniportReturnPacket function of the indicating driver, it should not access any of the buffers specified with the packet descriptor.
If this is set, a connection-oriented protocol driver's ProtocolCoReceivePacket function must copy the packet data immediately rather than retaining the NIC-driver-allocated packet resources.
Serialized drivers (miniport drivers or intermediate drivers) that indicate receives up to higher-level drivers use this macro. Connection-oriented protocols call this macro from ProtocolCoReceivePacket to determine whether they have ownership of an indicated packet's resources or whether they must copy the packet data immediately before the packet is returned to the indicating underlying driver.
Deserialized drivers and connection-oriented drivers do not have to use this macro. When such drivers indicate up a packet whose Status is not set to NDIS_STATUS_RESOURCES, NDIS always returns the packet to the driver's MiniportReturnPacket function. When such drivers indicate up a packet whose Status is set to NDIS_STATUS_RESOURCES, NDIS always returns the packet implicitly on return from NdisMIndicateReceivePacket or NdisMCoIndicateReceivePacket. In short, when NDIS returns a packet to a such driver -- either on the return from NdisMIndicateReceivePacket or NdisMCoIndicateReceivePacket or to the driver's MiniportReturnPacket function -- the returned packet and all its associated resources belong to the driver. The driver should save the Status of each received packet that it indicates up so that it knows, on the return of NdisMIndicateReceivePacket or NdisMCoIndicateReceivePacket whether the packet's Status is NDIS_STATUS_RESOURCES.
Protocol drivers should never test the Status value in an associated out-of-band data block on return from NdisSendPackets or NdisSend. NDIS or the underlying driver retains ownership of the packet descriptor, of the associated out-of-band block and any buffers specified in this block, and of all buffers mapped by buffer descriptors chained to the packet descriptor until the ProtocolSendComplete function is called with the packet descriptor.