The miniport NIC driver must export some or all of the functions described in the following table. NDIS calls these functions on behalf of other layers of the network software, such as a higher level protocol driver that is bound to a NIC managed by the NIC driver.
Some of the NIC driver functions are inherently synchronous, while others can complete either synchronously or asynchronously. When a miniport function returns the status NDIS_STATUS_PENDING, the miniport must later complete the request by calling the appropriate NdisM...Complete function. NDIS takes care of any further coordination with other layers, calling the completion functions of those layers for asynchronous requests as required.
Names of the miniport driver functions discussed here use Miniport as a generic prefix. Functions written for an actual miniport driver should be named with a more descriptive prefix in place of the Miniport prefix to make debugging easier. Because the addresses of the functions (not the names) are passed to the NDIS library during initialization, function naming is at the discretion of the driver developer.
Function |
Description |
Async Option |
DriverEntry |
Called by the operating system to activate and initialize the NIC driver. |
Not Applicable |
MiniportCheckForHang |
Checks the internal state of the network interface card. |
No |
MiniportDisableInterrupt |
Disables the network interface card from generating interrupts. |
No |
MiniportEnableInterrupt |
Enables the network interface card to generate interrupts. |
No |
MiniportHalt |
Deallocates and deregisters resources used for the NIC, and halts the NIC so it is no longer functioning. |
No |
MiniportHandleInterrupt |
Deferred processing function called to complete interrupt-driven I/O processing. |
No |
MiniportInitialize |
Initializes the network interface card. |
No |
MiniportISR |
Runs at a high priority as the interrupt service function for the network interface card. |
No |
MiniportQueryInformation |
Queries the capabilities and current status of the miniport driver. |
Yes |
MiniportReconfigure |
Not used. |
No |
MiniportReset |
Issues a hardware reset to the network interface card. |
Yes |
MiniportSend |
Transmits a packet through the network interface card onto the network. |
Yes |
MiniportSetInformation |
Changes (sets) information about the miniport driver or its NIC. |
Yes |
MiniportTransferData |
Copies the contents of a packet received by the network interface card into a given packet buffer. |
Yes |
MiniportSendPackets |
Transmits an array of packets through the network interface card onto the network. |
Yes |
MiniportReceivePacket |
Receives a packet from an upper layer that was previously passed up by a call to NdisMIndicateReceivePacket |
No |
MiniportAllocateMemoryComplete |
Called to indicate that a preceding call to NdisMAllocateMemoryAsync is now complete. |
No |
The corresponding NDIS completion function that is associated with each possibly asynchronous upper-edge driver function is listed here.
Function |
Asynchronous Completion Function |
MiniportQueryInformation |
NdisMQueryInformationComplete |
MiniportReset |
NdisMResetComplete |
MiniportSend |
NdisMSendComplete |
MiniportSetInformation |
NdisMSetInformationComplete |
MiniportTransferData |
NdisMTransferDataComplete |