NDIS_MINIPORT_DRIVER_CHARACTERISTICS structure

An NDIS driver initializes an NDIS_MINIPORT_DRIVER_CHARACTERISTICS structure to define its miniport driver characteristics, including the entry points for its MiniportXxx functions.

Syntax

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;

Members

        `Header`

        The 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ntddndis/ns-ntddndis-_ndis_object_header">NDIS_OBJECT_HEADER</a> structure for the
 <b>NDIS_MINIPORT_DRIVER_CHARACTERISTICS</b> structure. Set the 
 <b>Type</b> member of the structure that 
 <b>Header</b> 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:

NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_3

Added the SynchronousOidRequestHandler member for NDIS 6.80.

Set the Size member to NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_3.

NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2

Added the DirectOidRequestHandler, and CancelDirectOidRequestHandler members for NDIS 6.1.

Set the Size member to NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_2.

NDIS_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_1

Original version for NDIS 6.0.

Set the Size member to NDIS_SIZEOF_MINIPORT_DRIVER_CHARACTERISTICS_REVISION_1.

        `MajorNdisVersion`

        The major version of the NDIS library the driver is using. The current value is 0x06.
    
    
        `MinorNdisVersion`

        The 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
`MajorDriverVersion`
        Reserved for the major version number of the driver. Miniport drivers can specify any value that
 they require.
    
    
        `MinorDriverVersion`

        Reserved for the minor version number of the driver. Miniport drivers can specify any value that
 they require.
    
    
        `Flags`

        A bitmask that can be set to zero or any of the following flags, combined with bitwise OR: 
 

NDIS_INTERMEDIATE_DRIVER

Set if the caller is an NDIS intermediate driver.

NDIS_WDM_DRIVER

Set if the caller is an NDIS-WDM miniport driver.

        `SetOptionsHandler`

        The entry point for the caller's 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-set_options">MiniportSetOptions</a> function.

Required for Co-NDIS. Suggested for Ethernet miniport drivers that support RSS using MSI-C over PCI.

        `InitializeHandlerEx`

        Required. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_initialize">
 MiniportInitializeEx</a> function.
    
    
        `HaltHandlerEx`

        Required. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_halt">MiniportHaltEx</a> function.
    
    
        `UnloadHandler`

        Required. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_unload">
 MiniportDriverUnload</a> function.
    
    
        `PauseHandler`

        Required. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_pause">MiniportPause</a> function.
    
    
        `RestartHandler`

        Required. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_restart">MiniportRestart</a> function.
    
    
        `OidRequestHandler`

        The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_oid_request">MiniportOidRequest</a> function. Required for all connection-less miniport drivers, including all Ethernet, WLAN, and IM drivers. Optional for some CoNDIS miniport drivers.
    
    
        `SendNetBufferListsHandler`

        Required. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_send_net_buffer_lists">
 MiniportSendNetBufferLists</a> function.
    
    
        `ReturnNetBufferListsHandler`

        Required. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_return_net_buffer_lists">
 MiniportReturnNetBufferLists</a> function.
    
    
        `CancelSendHandler`

        Required. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_cancel_send">MiniportCancelSend</a> function.
    
    
        `CheckForHangHandlerEx`

        Optional. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_check_for_hang">
 MiniportCheckForHangEx</a> 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.

        `ResetHandlerEx`

        Optional (required if you provide <b>CheckForHangHandlerEx</b>). The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_reset">MiniportResetEx</a> function. 
 <i>MiniportResetEx</i> is not required for intermediate drivers, so they should set this entry point to
 <b>NULL</b>.
    
    
        `DevicePnPEventNotifyHandler`

        Required. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_device_pnp_event_notify">
 MiniportDevicePnPEventNotify</a> function.
    
    
        `ShutdownHandlerEx`

        Required. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_shutdown">MiniportShutdownEx</a> function.
    
    
        `CancelOidRequestHandler`

        Required. The entry point for the 
 <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_cancel_oid_request">
 MiniportCancelOidRequest</a> function.
    
    
        `DirectOidRequestHandler`

        The entry point for the 
  <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_direct_oid_request">
  MiniportDirectOidRequest</a> function. This is an optional entry point. Set this member to <b>NULL</b> 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.

        `CancelDirectOidRequestHandler`

        The entry point for the 
  <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nc-ndis-miniport_cancel_direct_oid_request">
  MiniportCancelDirectOidRequest</a> function. This is an optional entry point. Set this member to <b>NULL</b>
  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.

        `SynchronousOidRequestHandler`

        The entry point for the 
  <a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nf-ndis-miniport_synchronous_oid_request">
  MiniportSynchronousOidRequest</a> function. This is an optional entry point. Set this member to <b>NULL</b> if
  the miniport driver does not handle Synchronous OID requests. 

Required for WLAN and Ethernet miniports that implement RSSv2.

## Remarks
    An NDIS driver passes a pointer to its <b>NDIS_MINIPORT_DRIVER_CHARACTERISTICS</b> structure in the 
<i>MiniportDriverCharacteristics</i> parameter of the 
<a href="https://docs.microsoft.com/windows-hardware/drivers/ddi/ndis/nf-ndis-ndismregisterminiportdriver">
NdisMRegisterMiniportDriver</a> function. A miniport driver calls 
<b>NdisMRegisterMiniportDriver</b> from its 
<a href="https://docs.microsoft.com/windows-hardware/drivers/storage/driverentry-of-ide-controller-minidriver">DriverEntry</a> routine (see also 
<a href="https://docs.microsoft.com/windows-hardware/drivers/network/initializing-a-miniport-driver">DriverEntry of NDIS
Miniport Drivers</a>).

Requirements

   
Minimum supported client Supported in NDIS 6.0 and later.
Header ndis.h (include Ndis.h)
## See Also

    <a href="https://docs.microsoft.com/windows-hardware/drivers/storage/driverentry-of-ide-controller-minidriver">DriverEntry</a>
MiniportCancelDirectOidRequest

MiniportCancelOidRequest

MiniportCancelSend

MiniportCheckForHangEx

MiniportDevicePnPEventNotify

MiniportDirectOidRequest

MiniportDriverUnload

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportPause

MiniportResetEx

MiniportRestart

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

MiniportSetOptions

MiniportShutdownEx

NdisMRegisterMiniportDriver