NdisOidComplete rule (ndis)

The NdisOidComplete rule verifies that an NDIS miniport driver completes an OID correctly.

The miniport driver must complete the OID request operations with the allowable NTSTATUS values.

If the OID is: Can only be completed with the following NTSTATUS values:

OID_PNP_SET_POWER

NDIS_STATUS_NOT_ACCEPTED

NDIS_STATUS_SUCCESS

NDIS_STATUS_PENDING

OID_RECEIVE_FILTER_CLEAR_FILTER

OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA

OID_RECEIVE_FILTER_FREE_QUEUE

OID_NIC_SWITCH_FREE_VF

OID_NIC_SWITCH_DELETE_SWITCH

OID_802_3_DELETE_MULTICAST_ADDRESS

OID_PM_REMOVE_WOL_PATTERN

OID_PM_REMOVE_PROTOCOL_OFFLOAD

OID_TUNNEL_INTERFACE_RELEASE_OID

NDIS_STATUS_NOT_ACCEPTED

NDIS_STATUS_REQUEST_ABORTED

NDIS_STATUS_SUCCESS

NDIS_STATUS_PENDING

A miniport driver must not call the NdisMOidRequestComplete function with the final status of the request operation as NDIS_STATUS_PENDING.

In addition, if the OID is: Can only be completed with the following NTSTATUS values:

OID_PNP_SET_POWER

NDIS_STATUS_NOT_ACCEPTED

NDIS_STATUS_SUCCESS

OID_RECEIVE_FILTER_CLEAR_FILTER

OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA

OID_RECEIVE_FILTER_FREE_QUEUE

OID_NIC_SWITCH_FREE_VF

OID_NIC_SWITCH_DELETE_SWITCH

OID_802_3_DELETE_MULTICAST_ADDRESS

OID_PM_REMOVE_WOL_PATTERN

OID_PM_REMOVE_PROTOCOL_OFFLOAD

OID_TUNNEL_INTERFACE_RELEASE_OID

NDIS_STATUS_NOT_ACCEPTED

NDIS_STATUS_REQUEST_ABORTED

NDIS_STATUS_SUCCESS

Driver model: NDIS

Bug check(s) found with this rule: Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION (0x00091001)

How to test

At run time

Run Driver Verifier and select the NDIS/WIFI verification option. This rule is also tested with the DDI compliance checking option.

Applies to

MiniportDevicePnPEventNotify MiniportOidRequest NdisMOidRequestComplete