// ndis.h
typedef struct _NDIS_MINIPORT_DRIVER_CHARACTERISTICS {
NDIS_OBJECT_HEADER Header;
UCHAR MajorNdisVersion;
UCHAR MinorNdisVersion;
UCHAR MajorDriverVersion;
UCHAR MinorDriverVersion;
ULONG Flags;
SET_OPTIONS_HANDLER SetOptionsHandler;
MINIPORT_INITIALIZE_HANDLER InitializeHandlerEx;
MINIPORT_HALT_HANDLER HaltHandlerEx;
MINIPORT_DRIVER_UNLOAD UnloadHandler;
MINIPORT_PAUSE_HANDLER PauseHandler;
MINIPORT_RESTART_HANDLER RestartHandler;
MINIPORT_OID_REQUEST_HANDLER OidRequestHandler;
MINIPORT_SEND_NET_BUFFER_LISTS_HANDLER SendNetBufferListsHandler;
MINIPORT_RETURN_NET_BUFFER_LISTS_HANDLER ReturnNetBufferListsHandler;
MINIPORT_CANCEL_SEND_HANDLER CancelSendHandler;
MINIPORT_CHECK_FOR_HANG_HANDLER CheckForHangHandlerEx;
MINIPORT_RESET_HANDLER ResetHandlerEx;
MINIPORT_DEVICE_PNP_EVENT_NOTIFY_HANDLER DevicePnPEventNotifyHandler;
MINIPORT_SHUTDOWN_HANDLER ShutdownHandlerEx;
MINIPORT_CANCEL_OID_REQUEST_HANDLER CancelOidRequestHandler;
MINIPORT_DIRECT_OID_REQUEST_HANDLER DirectOidRequestHandler;
MINIPORT_CANCEL_DIRECT_OID_REQUEST_HANDLER CancelDirectOidRequestHandler;
MINIPORT_SYNCHRONOUS_OID_REQUEST_HANDLER SynchronousOidRequestHandler;
} NDIS_MINIPORT_DRIVER_CHARACTERISTICS, *PNDIS_MINIPORT_DRIVER_CHARACTERISTICS;
View the official Windows Driver Kit DDI referenceNo description available.
An NDIS driver initializes an NDIS_MINIPORT_DRIVER_CHARACTERISTICS structure to define its miniport driver characteristics, including the entry points for its MiniportXxx functions.
HeaderThe NDIS_OBJECT_HEADER structure for the NDIS_MINIPORT_DRIVER_CHARACTERISTICS structure. Set the Type member of the structure that Header specifies to NDIS_OBJECT_TYPE_MINIPORT_DRIVER_CHARACTERISTICS.
To indicate the version of the NDIS_MINIPORT_DRIVER_CHARACTERISTICS structure, set the Revision member to one of the following values:
Added the SynchronousOidRequestHandler member for NDIS 6.80.
Set the Size member to NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_3.
Added the DirectOidRequestHandler, and CancelDirectOidRequestHandler members for NDIS 6.1.
Set the Size member to NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2.
Original version for NDIS 6.0.
Set the Size member to NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_1.
MajorNdisVersionThe major version of the NDIS library the driver is using. The current value is 0x06.
MinorNdisVersionThe minor NDIS version. The following are the available minor version value settings.
| Value | Meaning |
|---|---|
| 0 | NDIS 6 |
| 20 | NDIS 6.20 |
| 30 | NDIS 6.30 |
| 40 | NDIS 6.40 |
| 50 | NDIS 6.50 |
| 51 | NDIS 6.51 |
| 60 | NDIS 6.60 |
| 70 | NDIS 6.70 |
| 80 | NDIS 6.80 |
| 81 | NDIS 6.81 |
| 82 | NDIS 6.82 |
| 83 | NDIS 6.83 |
| 84 | NDIS 6.84 |
| 85 | NDIS 6.85 |
| 86 | NDIS 6.86 |
| 87 | NDIS 6.87 |
| 88 | NDIS 6.88 |
| 89 | NDIS 6.89 |
MajorDriverVersionReserved for the major version number of the driver. Miniport drivers can specify any value that they require.
MinorDriverVersionReserved for the minor version number of the driver. Miniport drivers can specify any value that they require.
FlagsA bitmask that can be set to zero or any of the following flags, combined with bitwise OR:
Set if the caller is an NDIS intermediate driver.
Set if the caller is an NDIS-WDM miniport driver.
SetOptionsHandlerThe entry point for the caller's MiniportSetOptions function.
Required for Co-NDIS. Suggested for Ethernet miniport drivers that support RSS using MSI-C over PCI.
InitializeHandlerExRequired. The entry point for the MiniportInitializeEx function.
HaltHandlerExRequired. The entry point for the MiniportHaltEx function.
UnloadHandlerRequired. The entry point for the MiniportDriverUnload function.
PauseHandlerRequired. The entry point for the MiniportPause function.
RestartHandlerRequired. The entry point for the MiniportRestart function.
OidRequestHandlerThe entry point for the MiniportOidRequest function. Required for all connection-less miniport drivers, including all Ethernet, WLAN, and IM drivers. Optional for some CoNDIS miniport drivers.
SendNetBufferListsHandlerRequired. The entry point for the MiniportSendNetBufferLists function.
ReturnNetBufferListsHandlerRequired. The entry point for the MiniportReturnNetBufferLists function.
CancelSendHandlerRequired. The entry point for the MiniportCancelSend function.
CheckForHangHandlerExOptional. The entry point for the MiniportCheckForHangEx function.
MiniportCheckForHangEx is not required for intermediate drivers or virtual miniports because they are not physical devices that can hang, so they must set this entry point to NULL.
MiniportCheckForHangEx is forbidden on any AOAC device due to the impact on battery life, so miniport drivers for these devices must set this entry point to NULL.
MiniportCheckForHangEx is discouraged for miniport drivers intended to be installed on non-AOAC, battery-powered devices due to the impact on battery life, so they should set this entry point to NULL.
MiniportCheckForHangEx is permitted but not required for miniport drivers that are intended to be installed in line-powered (mains-powered) devices. For drivers targeting NDIS 6.30 and later, consider using NdisMResetMiniport instead.
ResetHandlerExOptional (required if you provide CheckForHangHandlerEx). The entry point for the MiniportResetEx function. MiniportResetEx is not required for intermediate drivers, so they should set this entry point to NULL.
DevicePnPEventNotifyHandlerRequired. The entry point for the MiniportDevicePnPEventNotify function.
ShutdownHandlerExRequired. The entry point for the MiniportShutdownEx function.
CancelOidRequestHandlerRequired. The entry point for the MiniportCancelOidRequest function.
DirectOidRequestHandlerThe entry point for the MiniportDirectOidRequest function. This is an optional entry point. Set this member to NULL if the miniport driver does not handle direct OID requests.
Optional for Ethernet; however, if one is provided, then both must be provided.
Required for WLAN and Ethernet miniports that implement RDMA or IPSec offload.
CancelDirectOidRequestHandlerThe entry point for the MiniportCancelDirectOidRequest function. This is an optional entry point. Set this member to NULL if the miniport driver does not handle direct OID requests.
Optional for Ethernet; however, if one is provided, then both must be provided.
Required for WLAN and Ethernet miniports that implement RDMA or IPSec offload.
SynchronousOidRequestHandlerThe entry point for the MiniportSynchronousOidRequest function. This is an optional entry point. Set this member to NULL if the miniport driver does not handle Synchronous OID requests.
Required for WLAN and Ethernet miniports that implement RSSv2.
An NDIS driver passes a pointer to its NDIS_MINIPORT_DRIVER_CHARACTERISTICS structure in the MiniportDriverCharacteristics parameter of the NdisMRegisterMiniportDriver function. A miniport driver calls NdisMRegisterMiniportDriver from its DriverEntry routine (see also DriverEntry of NDIS Miniport Drivers).
MiniportCancelDirectOidRequest