NdisOidRequest 函式 (ndis.h)
NdisOidRequest 函式會將要求轉送給基礎驅動程式,以查詢配接器的功能或狀態,或設定適配卡的狀態。
語法
NDIS_STATUS NdisOidRequest(
[in] NDIS_HANDLE NdisBindingHandle,
[in] PNDIS_OID_REQUEST OidRequest
);
參數
[in] NdisBindingHandle
NdisOpenAdapterEx 函式所傳回的句柄,可識別系結上的目標配接器。
[in] OidRequest
NDIS_OID_REQUEST 結構的指標,指定使用指定的 OID_XXX 要求之作業, 程式代碼來查詢配接器的狀態,或設定配接器的狀態。
傳回值
基礎驅動程式會決定NDIS_STATUS_XXX 程式代碼 NdisOidRequest 傳回,但通常是下列其中一個值:
傳回碼 | 描述 |
---|---|
|
要求作業已順利完成。 |
|
要求是以異步方式處理,而NDIS會呼叫呼叫端的當要求完成時, ProtocolOidRequestComplete 函式。 |
|
在 OidRequest OidRequestOid 成員中指定的 NDIS_OID_REQUESTOID_XXX 程式代碼無效或不受基礎驅動程序支援。 |
|
InformationBufferLength OidRequest 中NDIS_OID_REQUEST結構化 緩衝區成員中指定的值不符合指定OID_XXX 程式代碼的需求。 如果信息緩衝區太小,BytesNeeded 成員會包含從 NdisOidRequest傳回 InformationBufferLength 的正確值。 |
|
在指定NDIS_OID_REQUEST結構中,InformationBuffer 提供的數據對於指定的 OID_XXX 程式代碼而言無效。 |
|
基礎驅動程式不支援要求的作業。 |
|
由於資源短缺,無法滿足要求。 通常,這個傳回值表示嘗試配置記憶體失敗,但不一定表示相同要求稍後提交,將會因為相同原因而失敗。 |
|
基礎驅動程式嘗試要求的作業,通常是在 NIC 上設定,但失敗。 例如,嘗試設定太多多播位址可能會導致這個值的傳回。 |
|
基礎驅動程式失敗,因為關閉作業正在進行中。 |
|
基礎迷你埠驅動程式目前無法滿足要求,因為它目前正在重設受影響的 NIC。 呼叫端的 ProtocolStatusEx 函式是或將會使用 NDIS_STATUS_RESET_START 呼叫,表示重設正在進行中。 這個傳回值不一定表示相同的要求會在稍後提交,因為相同的原因而失敗。 |
|
這個值通常是非特定預設值,當沒有更具體的NDIS_STATUS_XXX 導致基礎驅動程序失敗要求時傳回。 |
言論
通訊協定驅動程式必須配置足夠的記憶體,以保存與指定 OID 相關聯的信息緩衝區。 驅動程式也必須在 OidRequest 設定並設定緩衝區,才能呼叫 NdisOidRequest。 這兩個緩衝區都必須從非分頁集區配置,因為基礎驅動程式會在處理要求時於引發的 IRQL 執行。
NdisOidRequest 將要求轉送至基礎驅動程式或處理要求本身。 如果下一個較低的驅動程式是 NDIS 中繼驅動程式,它可以呼叫 NdisOidRequest,並具有自己的 OID 特定要求,再完成較高層級驅動程式最初提交的要求。
傳回的某些錯誤是可復原的,包括下列各項:
也就是說,驅動程式可以在 OidRequest 修改封包, 適當地更正OID_XXX 程式代碼,或 InformationBuffer 緩衝區的大小或內容,並將要求封包重新提交至 NdisOidRequest。 如果原始呼叫指出進行中的重設或資源短缺,則重新提交至 NdisOidReque st 時,可能會滿足相同的封包,或資源短缺,因而無法執行該要求。
NDIS 連結庫會維護基礎迷你埠驅動程序的系結。 如果指定的 OID 與系統提供的篩選連結庫所定義的媒體類型相關聯,NDIS 可以傳回系結特定查詢的資訊。
如需一般和媒體特定 OID 及其各自相關信息緩衝區的詳細資訊,請參閱 NDIS OIDs。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平臺 | 桌面 |
標頭 | ndis.h (包括 Ndis.h) |
連結庫 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | Irql_OID_Function(ndis) |