NdisOpenAdapterEx function (ndis.h)

A protocol driver calls the NdisOpenAdapterEx function from its ProtocolBindAdapterEx function to set up a binding between the protocol driver and an underlying driver.


NDIS_STATUS NdisOpenAdapterEx(
  [in]  NDIS_HANDLE           NdisProtocolHandle,
  [in]  NDIS_HANDLE           ProtocolBindingContext,
  [in]  PNDIS_OPEN_PARAMETERS OpenParameters,
  [in]  NDIS_HANDLE           BindContext,
  [out] PNDIS_HANDLE          NdisBindingHandle


[in] NdisProtocolHandle

The handle returned by the NdisRegisterProtocolDriver function.

[in] ProtocolBindingContext

The handle for a caller-supplied context area in which the protocol driver maintains state information for this binding.

[in] OpenParameters

A pointer to an NDIS_OPEN_PARAMETERS structure that is set up by the caller.

[in] BindContext

The handle that identifies the NDIS context area for the bind operation. NDIS passed this handle to the BindContext parameter of the ProtocolBindAdapterEx function.

[out] NdisBindingHandle

A pointer to a caller-supplied variable. NDIS writes a handle at NdisBindingHandle that identifies the binding between the caller and the miniport adapter specified in the AdapterName member at OpenParameters . The caller uses this handle in subsequent calls to NdisXxx functions.

Return value

NdisOpenAdapterEx returns one of the following status values:

Return code Description
NdisOpenAdapterEx successfully completed the open operation.
NdisOpenAdapterEx did not complete the open operation. NDIS later calls the protocol driver's ProtocolOpenAdapterCompleteEx function to complete the open operation.
NdisOpenAdapterEx failed due to insufficient resources.
NdisOpenAdapterEx failed because a miniport adapter specified in the AdapterName member at OpenParameters could not be found.
NdisOpenAdapterEx failed because the array specified in the MediumArray member at OpenParameters did not include a medium type that NDIS or the underlying driver supports.
NdisOpenAdapterEx failed for reasons other than those in the preceding list.


A protocol driver must call NdisOpenAdapterEx from its ProtocolBindAdapterEx function. NDIS fails any attempt to call NdisOpenAdapterEx outside the context of ProtocolBindAdapterEx.

If NdisOpenAdapterEx returns NDIS_STATUS_PENDING, the caller must not use the values at NdisBindingHandle and the SelectedMediumIndex member at OpenParameters until NDIS calls the ProtocolOpenAdapterCompleteEx function.

The string at AdapterName must remain valid only until NdisOpenAdapterEx returns. Therefore, in the case that NdisOpenAdapterEx returns NDIS_STATUS_PENDING, the driver is not required to continue to retain this string after NdisOpenAdapterEx returns.

After the open operation completes successfully, the caller can use the value that NDIS returned in the NdisBindingHandle in subsequent calls to NdisXxx functions. The caller can use the SelectedMediumIndex member of the OpenParameters parameter to determine how it should interact with the underlying driver.


Minimum supported client Supported in NDIS 6.0 and later.
Target Platform Desktop
Header ndis.h (include Ndis.h)
Library Ndis.lib
DDI compliance rules Irql_Protocol_Driver_Function(ndis)

See also