PROTOCOL_CO_OID_REQUEST_COMPLETE 콜백 함수(ndis.h)

ProtocolCoOidRequestComplete 함수는 비동기 CoNDIS OID 요청 처리를 완료합니다.

참고PROTOCOL_CO_OID_REQUEST_COMPLETE 형식을 사용하여 함수를 선언해야 합니다. 자세한 내용은 다음 예제 섹션을 참조하세요.
 

구문

PROTOCOL_CO_OID_REQUEST_COMPLETE ProtocolCoOidRequestComplete;

void ProtocolCoOidRequestComplete(
  [in]      NDIS_HANDLE ProtocolAfContext,
  [in]      NDIS_HANDLE ProtocolVcContext,
  [in]      NDIS_HANDLE ProtocolPartyContext,
  [in, out] PNDIS_OID_REQUEST OidRequest,
  [in]      NDIS_STATUS Status
)
{...}

매개 변수

[in] ProtocolAfContext

AF(주소 패밀리) 컨텍스트 영역을 식별하는 핸들입니다. 드라이버가 클라이언트인 경우 를 호출할 때 이 핸들을 제공했습니다. NdisClOpenAddressFamilyEx 함수는 호출 관리자에 자신을 연결합니다. 드라이버가 호출 관리자 또는 MCM(미니포트 호출 관리자)인 경우 ProtocolCmOpenAf 함수에서 이 핸들을 제공했습니다.

[in] ProtocolVcContext

요청이 VC별인 경우 드라이버가 요청하거나 정보를 설정한 활성 VC(가상 연결)를 식별하는 핸들입니다. 그렇지 않으면 이 매개 변수는 NULL입니다.

[in] ProtocolPartyContext

요청이 파티별인 경우 드라이버가 요청하거나 정보를 설정한 다중 포인트 VC의 파티를 식별하는 핸들입니다. 그렇지 않으면 이 매개 변수는 NULL입니다.

[in, out] OidRequest

이전에 NdisCoOidRequest 또는 NdisMCmOidRequest 함수에 전달된 드라이버 제공 NDIS_OID_REQUEST 구조에 대한 포인터입니다.

[in] Status

요청의 최종 상태. 대상 드라이버 또는 NDIS는 이 최종 상태 결정합니다. 이 매개 변수는 OidRequest의 정보로 ProtocolCoOidRequestComplete가 수행하는 작업을 결정합니다.

반환 값

없음

설명

NDIS는 ProtocolCoOidRequestComplete 함수를 호출하여 NdisCoOidRequest 함수 또는 NdisMCmOidRequest 함수가 NDIS_STATUS_PENDING 반환한 CoNDIS 클라이언트, 호출 관리자 또는 MCM OID 요청의 처리를 완료합니다.

ProtocolCoOidRequestComplete를 클라이언트로 등록하려면 드라이버가 를 초기화합니다. 구조체를 NDIS_CO_CLIENT_OPTIONAL_HANDLERSNdisSetOptionalHandlers 함수의 OptionalHandlers 매개 변수에 전달합니다. ProtocolCoOidRequestComplete를 호출 관리자로 등록하려면 드라이버가 를 초기화합니다. 구조체를 NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERSNdisSetOptionalHandlersOptionalHandlers 매개 변수에 전달합니다.

대상 드라이버는 OID 정보 요청을 서비스한 드라이버입니다. NdisMCoOidRequestComplete, NdisCoOidRequestComplete 또는 대상 드라이버의 호출 NdisMCmOidRequestComplete 함수로 인해 NDIS에서 ProtocolCoOidRequestComplete 함수를 호출했습니다. NDIS는 이러한 함수에 전달된 Status 매개 변수의 값을 Input Status 매개 변수로 ProtocolCoOidRequestComplete에 전달합니다.

ProtocolCoOidRequestComplete 는 다음과 같이 Status 의 입력 값을 사용합니다.

  • Status가 NDIS_STATUS_SUCCESS 경우 OidRequest 매개 변수가 가리키는 NDIS_OID_REQUEST 구조의 BytesRead 또는 BytesWritten 멤버는 NDIS_OID_REQUEST InformationBuffer 멤버의 버퍼에서 대상 드라이버로 전송된 정보의 양 또는 InformationBuffer에서 반환된 정보의 양을 각각 지정합니다.

    드라이버가 쿼리 요청을 한 경우 ProtocolCoOidRequestCompleteInformationBuffer 에서 반환되는 데이터를 NDIS_OID_REQUEST Oid 멤버에 지정된 값에 적절하게 사용할 수 있습니다.

  • Status가 NDIS_STATUS_INVALID_LENGTH 또는 NDIS_STATUS_BUFFER_TOO_SHORT 경우 OidRequest가 가리키는 NDIS_OID_REQUEST 구조체의 BytesNeeded 멤버는 요청된 작업을 수행하는 데 필요한 NDIS_OID_REQUEST InformationBufferLength 멤버의 OID별 값을 지정합니다.

    이러한 상황에서 ProtocolCoOidRequestComplete는 요청에 충분한 버퍼 공간을 할당하고, InformationBufferLength에 필요한 값으로 다른 NDIS_OID_REQUEST 구조를 설정하고, OID 요청을 다시 시도할 수 있습니다.

  • Status가 복구할 수 없는 오류인 NDIS_STATUS_ XXX 값인 경우 ProtocolCoOidRequestComplete는 NDIS_OID_REQUEST 구조체에 대한 메모리를 해제해야 합니다. ProtocolCoOidRequestComplete 는 드라이버가 바인딩을 닫아야 하는지 또는 바인딩에 대한 지속적인 네트워크 I/O 작업을 처리하도록 바인딩 관련 상태 정보를 조정해야 하는지 결정해야 합니다.
시스템 정의 OID에 대한 자세한 내용은 NDIS OID를 참조하세요.

드라이버가 NdisCoOidRequest 또는 NdisMCmOidRequest가 반환하는 상태 코드를 검사하기 전에 ProtocolCoOidRequestComplete를 호출할 수 있습니다.

NDIS는 IRQL <= DISPATCH_LEVEL ProtocolCoOidRequestComplete를 호출합니다.

ProtocolCoOidRequestComplete 함수를 정의하려면 먼저 정의할 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows는 드라이버에 대한 함수 형식 집합을 제공합니다. 함수 형식을 사용하여 함수를 선언하면 드라이버에 대한 코드 분석, SDV( 정적 드라이버 검증 도구 ) 및 기타 확인 도구에서 오류를 찾는 데 도움이 되며 Windows 운영 체제용 드라이버를 작성하기 위한 요구 사항입니다.

예를 들어 이름이 " MyCoOidRequestComplete"인 ProtocolCoOidRequestComplete 함수를 정의하려면 이 코드 예제와 같이 PROTOCOL_CO_OID_REQUEST_COMPLETE 형식을 사용합니다.

PROTOCOL_CO_OID_REQUEST_COMPLETE MyCoOidRequestComplete;

그런 다음 다음과 같이 함수를 구현합니다.

_Use_decl_annotations_
VOID
 MyCoOidRequestComplete(
    NDIS_HANDLE  ProtocolAfContext,
    NDIS_HANDLE  ProtocolVcContext,
    NDIS_HANDLE  ProtocolPartyContext,
    PNDIS_OID_REQUEST  OidRequest,
    NDIS_STATUS  Status
    )
  {...}

PROTOCOL_CO_OID_REQUEST_COMPLETE 함수 형식은 Ndis.h 헤더 파일에 정의되어 있습니다. 코드 분석 도구를 실행할 때 오류를 보다 정확하게 식별하려면 함수 정의에 Use_decl_annotations 주석을 추가해야 합니다. Use_decl_annotations 주석은 헤더 파일의 PROTOCOL_CO_OID_REQUEST_COMPLETE 함수 형식에 적용되는 주석이 사용되도록 합니다. 함수 선언 요구 사항에 대한 자세한 내용은 NDIS 드라이버에 함수 역할 형식을 사용하여 함수 선언을 참조하세요.

Use_decl_annotations 대한 자세한 내용은 함수 동작에 주석을 추가를 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
대상 플랫폼 Windows
헤더 ndis.h(Ndis.h 포함)
IRQL <= DISPATCH_LEVEL(설명 섹션 참조)

추가 정보

NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS NDIS_CO_CLIENT_OPTIONAL_HANDLERS

NDIS_OID_REQUEST

NdisClOpenAddressFamilyEx

NdisCoOidRequest

NdisCoOidRequestComplete

NdisMCmOidRequest

NdisMCmOidRequestComplete

NdisMCoOidRequestComplete

NdisSetOptionalHandlers

ProtocolCmOpenAf