// ndis.h
typedef struct _NDIS_PROTOCOL_DRIVER_CHARACTERISTICS {
NDIS_OBJECT_HEADER Header;
UCHAR MajorNdisVersion;
UCHAR MinorNdisVersion;
UCHAR MajorDriverVersion;
UCHAR MinorDriverVersion;
ULONG Flags;
NDIS_STRING Name;
SET_OPTIONS_HANDLER SetOptionsHandler;
BIND_HANDLER_EX BindAdapterHandlerEx;
UNBIND_HANDLER_EX UnbindAdapterHandlerEx;
OPEN_ADAPTER_COMPLETE_HANDLER_EX OpenAdapterCompleteHandlerEx;
CLOSE_ADAPTER_COMPLETE_HANDLER_EX CloseAdapterCompleteHandlerEx;
NET_PNP_EVENT_HANDLER NetPnPEventHandler;
UNINSTALL_PROTOCOL_HANDLER UninstallHandler;
OID_REQUEST_COMPLETE_HANDLER OidRequestCompleteHandler;
STATUS_HANDLER_EX StatusHandlerEx;
RECEIVE_NET_BUFFER_LISTS_HANDLER ReceiveNetBufferListsHandler;
SEND_NET_BUFFER_LISTS_COMPLETE_HANDLER SendNetBufferListsCompleteHandler;
DIRECT_OID_REQUEST_COMPLETE_HANDLER DirectOidRequestCompleteHandler;
} NDIS_PROTOCOL_DRIVER_CHARACTERISTICS, *PNDIS_PROTOCOL_DRIVER_CHARACTERISTICS;
View the official Windows Driver Kit DDI referenceNo description available.
To specify its driver characteristics, a protocol driver initializes an NDIS_PROTOCOL_DRIVER_CHARACTERISTICS structure and passes it to NDIS.
HeaderThe NDIS_OBJECT_HEADER structure for the NDIS_PROTOCOL_DRIVER_CHARACTERISTICS structure. Set the Type member of the structure that Header specifies to NDIS_OBJECT_TYPE_PROTOCOL_DRIVER_CHARACTERISTICS.
To indicate the version of the NDIS_PROTOCOL_DRIVER_CHARACTERISTICS structure, set the Revision member to one of the following values:
Added the DirectOidRequestCompleteHandler member for NDIS 6.1.
Set the Size member to NDIS_SIZEOF_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_2.
Original version for NDIS 6.0.
Set the Size member to NDIS_SIZEOF_PROTOCOL_DRIVER_CHARACTERISTICS_REVISION_1.
MajorNdisVersionThe major version of the NDIS library the protocol 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 protocol driver. Protocol drivers can specify any value that they require.
MinorDriverVersionReserved for the minor version number of the protocol driver. Protocol drivers can specify any value that they require.
FlagsThe following flag is supported in NDIS 6.89 and higher:
| Value | Meaning |
|---|---|
| NDIS_PROTOCOL_DRIVER_UDP_RSC_NOT_SUPPORTED 0x00000008 | The driver opt-outs of URO support. |
In NDIS 6.88 and below, Flags is reserved for NDIS. Protocol drivers should set this member to zero.
NameA Unicode string that is the service name of the protocol driver.
SetOptionsHandlerThe entry point for the ProtocolSetOptions function.
BindAdapterHandlerExThe entry point for the ProtocolBindAdapterEx function.
UnbindAdapterHandlerExThe entry point for the ProtocolUnbindAdapterEx function.
OpenAdapterCompleteHandlerExThe entry point for the ProtocolOpenAdapterCompleteEx function.
CloseAdapterCompleteHandlerExThe entry point for the ProtocolCloseAdapterCompleteEx function.
NetPnPEventHandlerThe entry point of the caller's ProtocolNetPnPEvent function.
UninstallHandlerThe entry point of the caller's ProtocolUninstall function, if any, or NULL.
OidRequestCompleteHandlerThe entry point of the caller's ProtocolOidRequestComplete function.
StatusHandlerExThe entry point of the caller's ProtocolStatusEx function, if any, or NULL.
ReceiveNetBufferListsHandlerThe entry point for the ProtocolReceiveNetBufferLists function.
SendNetBufferListsCompleteHandlerThe entry point for the ProtocolSendNetBufferListsComplete function.
DirectOidRequestCompleteHandlerThe entry point of the caller's ProtocolDirectOidRequestComplete function. This is an optional function. Set this entry point to NULL if the protocol driver does not support the direct OID request interface.
A protocol driver calls the NdisRegisterProtocolDriver function to register its characteristics, including the default entry points for its protocol driver functions (ProtocolXxx). The protocol driver initializes an NDIS_PROTOCOL_DRIVER_CHARACTERISTICS structure and passes a pointer to this structure in the ProtocolCharacteristics parameter of NdisRegisterProtocolDriver.
ProtocolCloseAdapterCompleteEx
ProtocolDirectOidRequestComplete
ProtocolSendNetBufferListsComplete