NdisRequest 函式 (ndis.h)
注意 NDIS 5. x 已被取代,並被 NDIS 6 取代。 x。 如需新的 NDIS 驅動程式開發,請參閱 從 Windows Vista 開始的網路驅動程式。 如需移植 NDIS 5 的相關信息。 x 驅動程式至 NDIS 6。 x,請參閱 將 NDIS 5.x 驅動程式移植到 NDIS 6.0。
NdisRequest 會將要求轉送至基礎驅動程式,以查詢其 NIC 的功能或狀態,或設定其 NIC 的狀態。
語法
void NdisRequest(
[out] PNDIS_STATUS Status,
[in] NDIS_HANDLE NdisBindingHandle,
[in] PNDIS_REQUEST NdisRequest
);
參數
[out] Status
從這個函式傳回時設定之呼叫端提供之變數的指標。 基礎驅動程式會決定傳回哪一個NDIS_STATUS_XXX ,但通常是下列其中一個值:
NDIS_STATUS_SUCCESS
要求的作業已順利完成。NDIS_STATUS_PENDING
要求會以異步方式處理,而且呼叫端的 ProtocolRequestComplete 函式會在完成時呼叫。NDIS_STATUS_INVALID_OID
在 NdisRequest 上NDIS_REQUEST結構化緩衝區的 Oid 成員中指定的 OID_XXX 程式代碼無效或不受基礎驅動程序支援。NDIS_STATUS_INVALID_LENGTH或NDIS_STATUS_BUFFER_TOO_SHORT
在 NdisRequest 上NDIS_REQUEST結構化緩衝區之 InformationBufferLength 成員中指定的值不符合指定之 OID_XXX 程式代碼的需求。 如果信息緩衝區太小,BytesNeeded 成員會在從 NdisRequest 傳回時包含 InformationBufferLength 的正確值。NDIS_STATUS_INVALID_DATA
給定NDIS_REQUEST結構中 InformationBuffer 提供的數據對於指定的OID_XXX 程式代碼無效。NDIS_STATUS_NOT_SUPPORTED或NDIS_STATUS_NOT_RECOGNIZED
基礎驅動程式不支援要求的作業。NDIS_STATUS_RESOURCES
因為資源不足,所以無法滿足要求。 通常,此傳回表示嘗試配置記憶體失敗,但不一定表示相同要求稍後提交,將會因為相同原因而失敗。NDIS_STATUS_NOT_ACCEPTED
基礎驅動程式在 NIC 上嘗試要求的作業通常是一個集合,但 netcard 失敗。 例如,嘗試設定太多多播位址可能會導致此值傳回。NDIS_STATUS_CLOSING或NDIS_STATUS_CLOSING_INDICATING
基礎驅動程式因為關閉正在進行中,所以要求作業失敗。NDIS_STATUS_RESET_IN_PROGRESS
基礎 NIC 驅動程式目前無法滿足要求,因為它目前正在重設 netcard。 呼叫端的 ProtocolStatus 函式是或將會使用 NDIS_STATUS_RESET_START 呼叫,以指出重設正在進行中。 此傳回值不一定表示稍後提交的相同要求將會因為相同原因而失敗。NDIS_STATUS_FAILURE
這個值通常是非特定預設值,當沒有更明確的NDIS_STATUS_XXX 導致基礎驅動程序失敗要求時傳回。
[in] NdisBindingHandle
指定 NdisOpenAdapter 所傳回的句柄,識別呼叫端所繫結之下一個較低驅動程式的目標 NIC 或虛擬配接器。
[in] NdisRequest
緩衝結構的指標,指定針對查詢或集合使用指定OID_ XXX 程式代碼要求的作業。
傳回值
無
備註
通訊協定驅動程式必須為它所要求作業OID_XXX 相關聯的信息緩衝區配置足夠的記憶體。 驅動程式也必須在 NdisRequest 配置和設定緩衝區,才能呼叫 NdisRequest。 這兩個緩衝區都必須從非分頁集區配置,因為基礎驅動程式會在處理要求時於引發的 IRQL 執行。
對於分層在中繼 NDIS 驅動程式上方的來電者, NdisRequest 會將要求轉送到下一個較低的驅動程式,以傳回其本身功能的相關信息,或指示該驅動程式以呼叫者決定的方式處理特定功能。 如果下一個較低的驅動程式是 NDIS 中繼驅動程式,它可以先使用自己的 OID 特定要求呼叫 NdisRequest ,再完成先前由較高層級通訊協定提交的要求。
在 [狀態] 傳回的某些錯誤是可復原的,包括下列各項:
NDIS_STATUS_INVALID_OID
NDIS_STATUS_INVALID_LENGTH
NDIS_STATUS_BUFFER_TOO_SHORT
NDIS_STATUS_INVALID_DATA
NDIS_STATUS_RESOURCES
NDIS_STATUS_RESET_IN_PROGRESS
也就是說,驅動程式可以適當地修改 NdisRequest 上的封包,以更正資訊緩衝區的 OID_XXX 程式代碼和/或緩衝區的大小或內容,並將要求封包重新提交至 NdisRequest。 如果原始呼叫指出進行中重設,或資源不足,這可能會在重新提交至 NdisRequest 時滿足相同的封包,以防止該要求執行。
NDIS 連結庫會維護基礎迷你埠驅動程序的系結。 如果指定的 OID 與系統提供篩選連結庫的系統定義媒體類型相關聯,則 NDIS 可以傳回系結特定查詢的資訊。
如需一般和媒體特定 OID 及其個別相關信息緩衝區的詳細資訊,請參閱 NDIS 物件識別符。
- 目標平臺: 通用
- 版本:Windows Vista 中不支援 NDIS 6.0 驅動程式。 請改用 NdisOidRequest。 Windows Vista 和 Windows XP 中支援 NDIS 5.1 驅動程式。
規格需求
需求 | 值 |
---|---|
標頭 | ndis.h (包含 Ndis.h) |
程式庫 | Ndis.lib |
IRQL | IRQL <= DISPATCH_LEVEL |