MINIPORT_WDI_RX_GET_MPDUS callback function (dot11wdi.h)
Important
This topic is part of the WDI driver model released in Windows 10. The WDI driver model is in maintenance mode and will only receive high priority fixes. WiFiCx is the Wi-Fi driver model released in Windows 11. We recommend that you use WiFiCx to take advantage of the latest features.
The MiniportWdiRxGetMpdus handler function returns a NET_BUFFER_LIST chain. Each NET_BUFFER_LIST represents one MPDU.
This is a WDI miniport handler inside NDIS_MINIPORT_WDI_DATA_HANDLERS.
MINIPORT_WDI_RX_GET_MPDUS MiniportWdiRxGetMpdus;
void MiniportWdiRxGetMpdus(
[in] TAL_TXRX_HANDLE MiniportTalTxRxContext,
[in] WDI_PEER_ID PeerId,
[in] WDI_EXTENDED_TID ExTid,
[out] PNET_BUFFER_LIST *ppNBL
)
{...}
[in] MiniportTalTxRxContext
TAL device handle returned by the IHV miniport in MiniportWdiTalTxRxInitialize.
[in] PeerId
The peer ID.
[in] ExTid
The extended TID.
[out] ppNBL
Pointer to a pointer to a NET_BUFFER_LIST chain from the IHV miniport.
None
If PeerId and ExTid are not wildcards (for example, PeerId is not equal to 0xFFFF, ExTid is not equal to 31), all MPDUs in the chain are of the same peer ID and TID (in this case, TID is a valid 802.11 TID).
Each NET_BUFFER_LIST points to NET_BUFFER structures. Each NET_BUFFER structure represents one MSDU.
If an MPDU has an MSDU fragment as payload and defragmentation is not offloaded to target/TAL (or host-implemented FIPS mode is enabled), the corresponding NET_BUFFER_LIST has one NET_BUFFER that describes the MSDU fragment.
The data offset of each NET_BUFFER must be set to the start of the MAC header.
To define a MiniportWdiRxGetMpdus function, you must first provide a function declaration that identifies the type of function you're defining. Windows provides a set of function types for drivers. Declaring a function using the function types helps Code Analysis for Drivers, Static Driver Verifier (SDV), and other verification tools find errors, and it's a requirement for writing drivers for the Windows operating system.
For example, to define a MiniportWdiRxGetMpdus function that is named "MyRxGetMpdus", use the MINIPORT_WDI_RX_GET_MPDUS type as shown in this code example:
MINIPORT_WDI_RX_GET_MPDUS MyRxGetMpdus;
Then, implement your function as follows:
_Use_decl_annotations_
VOID
MyRxGetMpdus(
TAL_TXRX_HANDLE MiniportTalTxRxContext,
WDI_PEER_ID PeerId,
WDI_EXTENDED_TID ExTid,
PNET_BUFFER_LIST *ppNBL
)
{...}
The MINIPORT_WDI_RX_GET_MPDUS function type is defined in the dot11wdi.h header file. To more accurately identify errors when you run the code analysis tools, be sure to add the Use_decl_annotations annotation to your function definition. The Use_decl_annotations annotation ensures that the annotations that are applied to the MINIPORT_WDI_RX_GET_MPDUS function type in the header file are used. For more information about the requirements for function declarations, see Declaring Functions by Using Function Role Types for NDIS Drivers.
For information about Use_decl_annotations, see Annotating Function Behavior.
Requirement | Value |
---|---|
Minimum supported client | Windows 10 |
Minimum supported server | Windows Server 2016 |
Target Platform | Windows |
Header | dot11wdi.h |