NdisOpenAdapterEx 函式 (ndis.h)
通訊協定驅動程式會從其 ProtocolBindAdapterEx 函式呼叫 NdisOpenAdapterEx 函式,以設定通訊協定驅動程式與基礎驅動程式之間的系結。
語法
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
所傳回的句柄 NdisRegisterProtocolDriver 函式。
[in] ProtocolBindingContext
呼叫端提供的內容區域的句柄,通訊協定驅動程式會維護此系結的狀態資訊。
[in] OpenParameters
呼叫端所設定 之NDIS_OPEN_PARAMETERS 結構的指標。
[in] BindContext
識別系結作業之 NDIS 內容區域的句柄。 NDIS 已將此句柄傳遞至 ProtocolBindAdapterEx 函式的 BindContext 參數。
[out] NdisBindingHandle
呼叫端提供的變數指標。 NDIS 會在 NdisBindingHandle 寫入句柄,識別呼叫端與 OpenParameters 之 AdapterName 成員中指定的迷你埠配接器之間的系結。 呼叫端會在 後續對 NdisXxx 函式的呼叫中使用這個句柄。
傳回值
NdisOpenAdapterEx 會傳回下列其中一個狀態值:
傳回碼 | Description |
---|---|
|
NdisOpenAdapterEx 成功完成開啟作業。 |
|
NdisOpenAdapterEx 未完成開啟作業。 NDIS 稍後會呼叫通訊協定驅動程式的 ProtocolOpenAdapterCompleteEx 函式,以完成開啟的作業。 |
|
NdisOpenAdapterEx 因為資源不足而失敗。 |
|
NdisOpenAdapterEx 失敗,因為找不到在OpenParameters之AdapterName成員中指定的迷你埠配接器。 |
|
NdisOpenAdapterEx 失敗,因為 OpenParameters 的 MediumArray 成員中指定的數位不包含 NDIS 或基礎驅動程式支援的中型類型。 |
|
NdisOpenAdapterEx 因為上述清單中以外的原因而失敗。 |
備註
通訊協定驅動程序必須從其 ProtocolBindAdapterEx 函式呼叫 NdisOpenAdapterEx。 NDIS 無法嘗試在 ProtocolBindAdapterEx 的內容之外呼叫 NdisOpenAdapterEx。
如果 NdisOpenAdapterEx 傳回NDIS_STATUS_PENDING,呼叫端不得使用 NdisBindingHandle 和 OpenParameters上 SelectedMediumIndex 成員的值,直到 NDIS 呼叫 ProtocolOpenAdapterCompleteEx 函式。
AdapterName 上的字串必須維持有效狀態,直到 NdisOpenAdapterEx 傳回為止。 因此,在 NdisOpenAdapterEx 傳回NDIS_STATUS_PENDING的情況下,驅動程式不需要在 NdisOpenAdapterEx 傳回之後繼續保留此字串。
開啟作業成功完成之後,呼叫端就可以在後續呼叫 NdisXxx 函式中使用 NdisBindingHandle 中傳回的 NDIS 值。 呼叫端可以使用 OpenParameters 參數的 SelectedMediumIndex 成員來判斷它應該如何與基礎驅動程序互動。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平台 | 桌面 |
標頭 | ndis.h (包括 Ndis.h) |
程式庫 | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI 合規性規則 | Irql_Protocol_Driver_Function (ndis) |