PROTOCOL_CO_OID_REQUEST_COMPLETE 콜백 함수(ndis.h)
ProtocolCoOidRequestComplete 함수는 비동기 CoNDIS OID 요청 처리를 완료합니다.
구문
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_HANDLERS 구조를 초기화하고 NdisSetOptionalHandlers 함수의 OptionalHandlers 매개 변수에 전달합니다. ProtocolCoOidRequestComplete를 호출 관리자로 등록하기 위해 드라이버는 NDIS_CO_CALL_MANAGER_OPTIONAL_HANDLERS 구조를 초기화하고 NdisSetOptionalHandlers의 OptionalHandlers 매개 변수에 전달합니다.
대상 드라이버는 OID 정보 요청을 서비스한 드라이버입니다. 대상 드라이버가 NdisMCoOidRequestComplete, NdisCoOidRequestComplete 또는 NdisMCmOidRequestComplete 함수를 호출하면 NDIS가 ProtocolCoOidRequestComplete 함수를 호출하게 되었습니다. NDIS는 이러한 함수에 전달된 Status 매개 변수의 값을 ProtocolCoOidRequestComplete에 입력 상태 매개 변수로 전달합니다.
ProtocolCoOidRequestComplete 는 다음과 같이 상태 의 입력 값을 사용합니다.
-
상태가 NDIS_STATUS_SUCCESS 경우 OidRequest 매개 변수가 가리키는 NDIS_OID_REQUEST 구조체의 BytesRead 또는 BytesWritten 멤버는 NDIS_OID_REQUEST InformationBuffer 멤버의 버퍼에서 대상 드라이버로 전송된 정보의 양 또는 InformationBuffer에서 각각 반환된 정보의 양을 지정합니다.
드라이버가 쿼리를 요청한 경우 ProtocolCoOidRequestComplete 는 InformationBuffer 에서 반환되는 데이터를 NDIS_OID_REQUEST Oid 멤버에 지정된 값에 적절하게 사용할 수 있습니다.
-
상태가 NDIS_STATUS_INVALID_LENGTH 또는 NDIS_STATUS_BUFFER_TOO_SHORT 경우 OidRequest가 요청한 작업을 수행하는 데 필요한 NDIS_OID_REQUEST InformationBufferLength 멤버의 OID별 값을 지정하는 NDIS_OID_REQUEST 구조체의 BytesNeeded 멤버입니다.
이러한 상황에서 ProtocolCoOidRequestComplete는 요청에 충분한 버퍼 공간을 할당하고, InformationBufferLength에 필요한 값으로 다른 NDIS_OID_REQUEST 구조를 설정하고, OID 요청을 다시 시도할 수 있습니다.
- 상태가 복구할 수 없는 오류인 NDIS_STATUS_ XXX 값인 경우 ProtocolCoOidRequestComplete는 NDIS_OID_REQUEST 구조에 대한 메모리를 해제해야 합니다. 또한 ProtocolCoOidRequestComplete 는 드라이버가 바인딩을 닫거나 바인딩에 대한 지속적인 네트워크 I/O 작업을 처리하도록 바인딩 관련 상태 정보를 조정해야 하는지 여부를 결정해야 합니다.
드라이버가 NdisCoOidRequest 또는 NdisMCmOidRequest가 반환하는 상태 코드를 검사할 시간이 되기 전에 ProtocolCoOidRequestComplete를 호출할 수 있습니다.
NDIS는 IRQL <= DISPATCH_LEVEL ProtocolCoOidRequestComplete 를 호출합니다.
예제
ProtocolCoOidRequestComplete 함수를 정의하려면 먼저 정의 중인 함수의 형식을 식별하는 함수 선언을 제공해야 합니다. Windows 드라이버에 대한 함수 형식 집합을 제공합니다. 함수 형식을 사용하여 함수를 선언하면 드라이버, SDV(정적 드라이버 검증 도구) 및 기타 확인 도구에 대한 Code Analysis 오류를 찾는 데 도움이 되며, 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
피드백
다음에 대한 사용자 의견 제출 및 보기