共用方式為


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

另請參閱