다음을 통해 공유


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는 이 최종 상태를 결정합니다. 이 매개 변수는 ProtocolCoOidRequestCompleteOidRequest정보와 함께 수행하는 작업을 결정합니다.

반환 값

없음

발언

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 다음과 같이 상태 입력 값을 사용합니다.

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

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

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

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

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

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

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