Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
This macro returns a pointer to the out-of-band (OOB) data block associated with a given packet descriptor.
PNDIS_PACKET_OOB_DATA NDIS_OOB_DATA_FROM_PACKET(PNDIS_PACKET_P);
Parameters
- _P
Points to a packet descriptor.
Return Values
The return value is a pointer to the OOB data block associated with the given packet descriptor. The return value is NULL if there is no OOB information for the packet.
Remarks
Lower-level NDIS drivers that supply out-of-band information with the packet descriptors they allocate for indications can use NDIS_OOB_DATA_FROM_PACKET to gain access to the OOB block associated with a driver-allocated packet descriptor. Such a driver would then set up OOB information before indicating a receive packet.
For example, an NDIS intermediate driver might copy the OOB information from a received packet into a fresh packet descriptor with NdisMoveMemory before forwarding the indication up to bound protocols. In this case, the intermediate driver calls NdisMoveMemory with the pointers returned by NDIS_OOB_DATA_FROM_PACKET as the Source and Destination pointers and sizeof(NDIS_PACKET_OOB_DATA) as the Length.
Lower-level NDIS drivers also might use this macro when the Status of an indicated packet is returned from NdisMIndicateReceivePacket with NDIS_STATUS_SUCCESS or when MiniportReturnPacket is called with a packet descriptor to be reinitialized for reuse. In these circumstances, the driver can call NdisZeroMemory with the pointer returned by NDIS_OOB_DATA_FROM_PACKET and sizeof(NDIS_PACKET_OOB_DATA) to clear the OOB data block associated with the packet descriptor. Alternatively, such a driver can use the appropriate NDIS_SET_PACKET_XXX macros to reinitialize specific members in the OOB data block for subsequent indications with the returned packet descriptor.
Higher-level NDIS drivers can use NDIS_OOB_DATA_FROM_PACKET to reinitialize the OOB data block associated with the packet descriptors they allocate to specify sends when such a packet descriptor has been returned to the ProtocolSendComplete function. Consequently, drivers underlying such a protocol might use NDIS_OOB_DATA_FROM_PACKET to read the OOB information for an incoming send packet.
A driver should never pass a packet descriptor to NdisZeroMemory in an attempt to clear the OOB data block associated with a packet descriptor. Doing this destroys the given packet descriptor, renders it useless for subsequent indications or sends, and causes a memory leak. A driver must pass the pointer returned by NDIS_OOB_DATA_FROM_PACKET to reinitialize the OOB data block associated with a driver-allocated packet descriptor.
The NDIS_OOB_DATA_FROM_PACKET macro is defined as follows.
#define NDIS_OOB_DATA_FROM_PACKET(_p) \
(PNDIS_PACKET_OOB_DATA)((PUCHAR)(_p) + \
(_p)->Private.NdisPacketOobOffset)
Requirements
OS Versions: Windows CE .NET 4.0 and later.
Header: Ndis.h.
See Also
MiniportReturnPacket | NDIS_PACKET_OOB_DATA | NdisAllocatePacket | NdisMIndicateReceivePacket | NdisMoveMemory | NdisZeroMemory | ProtocolSendComplete
Send Feedback on this topic to the authors