다음을 통해 공유


NdisOidRequest 함수(ndis.h)

NdisOidRequest 함수는 어댑터의 기능 또는 상태를 쿼리하거나 어댑터의 상태를 설정하기 위해 기본 드라이버에 요청을 전달합니다.

통사론

NDIS_STATUS NdisOidRequest(
  [in] NDIS_HANDLE       NdisBindingHandle,
  [in] PNDIS_OID_REQUEST OidRequest
);

매개 변수

[in] NdisBindingHandle

바인딩에서 대상 어댑터를 식별하는 NdisOpenAdapterEx 함수에서 반환된 핸들입니다.

[in] OidRequest

어댑터의 상태를 쿼리하거나 어댑터의 상태를 설정하기 위해 지정된 OID_XXX 코드로 요청된 작업을 지정하는 NDIS_OID_REQUEST 구조체에 대한 포인터입니다.

반환 값

기본 드라이버는 NdisOidRequest 반환할 XXX코드를 NDIS_STATUS_ 결정하지만 일반적으로 다음 값 중 하나입니다.

반환 코드 묘사
NDIS_STATUS_SUCCESS
요청 작업이 성공적으로 완료되었습니다.
NDIS_STATUS_PENDING
요청이 비동기적으로 처리되고 있으며 NDIS는 호출자의 요청을 호출합니다. 요청이 완료되면 protocolOidRequestComplete 함수를.
NDIS_STATUS_INVALID_OID
OidRequestNDIS_OID_REQUEST구조적 버퍼의 Oid 멤버에 지정된 OID_XXX 코드가 잘못되었거나 기본 드라이버에서 지원되지 않습니다.
NDIS_STATUS_INVALID_LENGTH 또는 NDIS_STATUS_BUFFER_TOO_SHORT
OidRequest NDIS_OID_REQUEST 구조화된 버퍼의 InformationBufferLength 멤버에 지정된 값이 지정된 OID_XXX 코드에 대한 요구 사항과 일치하지 않습니다. 정보 버퍼가 너무 작으면 BytesNeeded 멤버에 NdisOidRequest반환 시 InformationBufferLength 대한 올바른 값이 포함됩니다.
NDIS_STATUS_INVALID_DATA
지정된 NDIS_OID_REQUEST 구조의 InformationBuffer 제공된 데이터는 지정된 OID_XXX 코드에 유효하지 않습니다.
NDIS_STATUS_NOT_SUPPORTED 또는 NDIS_STATUS_NOT_RECOGNIZED
기본 드라이버는 요청된 작업을 지원하지 않습니다.
NDIS_STATUS_RESOURCES
리소스 부족으로 인해 요청을 충족할 수 없습니다. 일반적으로 이 반환 값은 메모리 할당 시도가 실패했음을 나타내지만, 나중에 제출된 동일한 요청이 동일한 이유로 실패했음을 반드시 나타내는 것은 아닙니다.
NDIS_STATUS_NOT_ACCEPTED
기본 드라이버는 요청된 작업(일반적으로 NIC의 집합)을 시도했지만 실패했습니다. 예를 들어 너무 많은 멀티캐스트 주소를 설정하려고 하면 이 값이 반환될 수 있습니다.
NDIS_STATUS_CLOSING 또는 NDIS_STATUS_CLOSING_INDICATING
닫기 작업이 진행 중이므로 기본 드라이버가 요청된 작업에 실패했습니다.
NDIS_STATUS_RESET_IN_PROGRESS
현재 영향을 받는 NIC를 다시 설정 중이므로 기본 미니포트 드라이버는 현재 요청을 충족할 수 없습니다. 호출자의 ProtocolStatusEx 함수가 NDIS_STATUS_RESET_START 호출되어 다시 설정이 진행 중임을 나타냅니다. 이 반환 값이 나중에 제출된 동일한 요청이 동일한 이유로 실패했음을 반드시 나타내는 것은 아닙니다.
NDIS_STATUS_FAILURE
이 값은 일반적으로 비특이적 기본값으로, 더 구체적인 NDIS_STATUS_XXX 인해 기본 드라이버가 요청에 실패하지 않을 때 반환됩니다.

발언

프로토콜 드라이버는 지정된 OID와 연결된 정보 버퍼를 보유할 수 있는 충분한 메모리를 할당해야 합니다. 또한 드라이버는 NdisOidRequest호출하기 전에 OidRequest 버퍼를 할당하고 설정해야 합니다. 요청을 처리하는 동안 기본 드라이버가 발생한 IRQL에서 실행되므로 두 버퍼는 모두 비페이지 풀에서 할당되어야 합니다.

NdisOidRequest 기본 드라이버에 요청을 전달하거나 요청 자체를 처리합니다. 다음 하위 드라이버가 NDIS 중간 드라이버인 경우 상위 수준 드라이버가 원래 제출한 요청을 완료하기 전에 자체의 OID별 요청으로 NdisOidRequest 호출할 수 있습니다.

반환된 일부 오류는 다음을 포함하여 복구할 수 있습니다.

즉, 드라이버는 OidRequest 패킷을 적절하게 수정하여 OID_XXX 코드 또는 InformationBuffer 버퍼의 크기 또는 내용을 수정하고 요청 패킷을 다시 제출하여 NdisOidRequest 수 있습니다. 원래 호출에서 초기화가 진행 중이거나 일시적일 수 있는 리소스 부족으로 인해 해당 요청이 수행되지 않도록 하는 경우 NdisOidRequest 다시 제출 시 동일한 패킷이 충족될 수 있습니다.

NDIS 라이브러리는 기본 미니포트 드라이버에 대한 바인딩을 유지 관리합니다. 지정된 OID가 시스템에서 필터 라이브러리를 제공하는 시스템 정의 중간 형식과 연결된 경우 NDIS는 바인딩 관련 쿼리에 대한 정보를 반환할 수 있습니다.

일반 및 미디어별 OID 및 관련 정보 버퍼에 대한 자세한 내용은 NDIS OID참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
대상 플랫폼 바탕 화면
헤더 ndis.h(Ndis.h 포함)
라이브러리 Ndis.lib
IRQL <= DISPATCH_LEVEL
DDI 규정 준수 규칙 Irql_OID_Function(ndis)

참고 항목

NDIS_OID_REQUEST

NdisOpenAdapterEx

ProtocolOidRequestComplete

ProtocolStatusEx