Share via


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에서 요청된 작업(일반적으로 집합)을 시도했지만 넷카드에 의해 실패했습니다. 예를 들어 너무 많은 멀티캐스트 주소를 설정하려고 하면 이 값이 반환될 수 있습니다.

  • NDIS_STATUS_CLOSING 또는 NDIS_STATUS_CLOSING_INDICATING
    닫기 진행 중이므로 기본 드라이버가 요청된 작업에 실패했습니다.

  • NDIS_STATUS_RESET_IN_PROGRESS
    기본 NIC 드라이버는 현재 넷카드를 다시 설정하므로 현재 요청을 충족할 수 없습니다. 호출자의 ProtocolStatus 함수는 다시 설정이 진행 중임을 나타내기 위해 NDIS_STATUS_RESET_START 함께 호출되거나 호출됩니다. 이 반환 값이 반드시 나중에 제출된 동일한 요청이 동일한 이유로 실패함을 나타내는 것은 아닙니다.

  • NDIS_STATUS_FAILURE
    이 값은 일반적으로 비특이적 기본값이며, 더 구체적인 NDIS_STATUS_XXX 로 인해 기본 드라이버가 요청에 실패하지 않을 때 반환됩니다.

[in] NdisBindingHandle

호출자가 바인딩된 다음 하위 드라이버의 대상 NIC 또는 가상 어댑터를 식별하는 NdisOpenAdapter 에서 반환된 핸들을 지정합니다.

[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에서 패킷을 적절하게 수정하여 informationBuffer에서 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

추가 정보