MINIPORT_CO_OID_REQUEST 콜백 함수(ndis.h)

MiniportCoOidRequest 함수는 CoNDIS 미니포트 드라이버에서 정보를 쿼리하거나 설정하는 OID 요청을 처리합니다.

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

구문

MINIPORT_CO_OID_REQUEST MiniportCoOidRequest;

NDIS_STATUS MiniportCoOidRequest(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] NDIS_HANDLE MiniportVcContext,
       PNDIS_OID_REQUEST NdisRequest
)
{...}

매개 변수

[in] MiniportAdapterContext

Miniport 드라이버가 MiniportInitializeEx 함수에 할당한 컨텍스트 영역에 대한 핸들입니다. 미니포트 드라이버는 이 컨텍스트 영역을 사용하여 미니포트 어댑터에 대한 상태 정보를 유지 관리합니다.

[in] MiniportVcContext

미니포트 드라이버가 VC(가상별 연결) 상태를 유지하는 미니포트 드라이버 할당 컨텍스트 영역에 대한 핸들입니다. 미니포트 드라이버는 MiniportCoCreateVc 함수에서 이 핸들을 NDIS에 제공했습니다. 요청이 VC 관련이 아닌 경우 이 매개 변수는 NULL입니다.

NdisRequest

미니포트 드라이버가 처리할 버퍼와 요청 패킷을 모두 포함하는 NDIS_OID_REQUEST 구조체에 대한 포인터입니다. 요청에 따라 드라이버는 이 매개 변수가 가리키는 구조에서 요청된 정보를 반환합니다.

반환 값

MiniportCoOidRequest는 다음 상태 값 중 하나를 반환할 수 있습니다.

반환 코드 설명
NDIS_STATUS_SUCCESS
미니포트 드라이버는 요청된 대로 데이터를 설정하거나 획득했습니다.
NDIS_STATUS_PENDING
미니포트 드라이버는 요청을 비동기적으로 완료합니다. 미니포트 드라이버가 모든 처리를 완료한 후에는 를 호출해야 합니다. NdisMCoOidRequestComplete 함수는 요청이 완료되었다는 것을 NDIS에 알릴 수 있습니다.
NDIS_STATUS_INVALID_OID
OidRequest 매개 변수가 지정한 요청이 잘못되었거나 인식되지 않았습니다.
NDIS_STATUS_NOT_SUPPORTED
OidRequest 매개 변수가 지정한 요청이 인식되었지만 미니포트 드라이버에서 지원되지 않았습니다.
NDIS_STATUS_BUFFER_TOO_SHORT
OidRequest 매개 변수가 제공한 버퍼가 너무 작아서 요청된 데이터를 저장할 수 없습니다.
NDIS_STATUS_INVALID_LENGTH
OidRequest에서 NDIS_OID_REQUEST 구조체의 InformationBufferLength 멤버에 지정된 값이 지정된 OID_XXX 코드에 대해 잘못되었습니다.
NDIS_STATUS_INVALID_DATA
OidRequest iwas에서 요청에 대해 지정된 하나 이상의 매개 변수가 잘못되었습니다.
NDIS_STATUS_NOT_ACCEPTED
NDIS가 를 호출한 후 MiniportDevicePnPEventNotify 함수는 기습 제거를 나타내며 NDIS는 드라이버의 MiniportHaltEx 함수를 호출합니다. NDIS가 MiniportHaltEx를 호출하기 전에 드라이버가 OID 요청을 수신하는 경우 상태 값이 NDIS_STATUS_NOT_ACCEPTED 이러한 요청을 즉시 완료해야 합니다.
NDIS_STATUS_REQUEST_ABORTED
미니포트 드라이버가 요청 처리를 중지했습니다. 예를 들어 NDIS는 MiniportResetEx 또는 MiniportCancelOidRequest 함수입니다.

설명

NDIS는 MiniportCoOidRequest 함수를 호출하여 CoNDIS 미니포트 드라이버에서 정보를 쿼리하거나 설정하는 OID 요청을 처리합니다.

MiniportCoOidRequest를 등록하기 위해 미니포트 드라이버는 MiniportSetOptions 함수에서 NdisSetOptionalHandlers 함수를 호출합니다. MiniportSetOptions에서 미니포트 드라이버는 를 초기화합니다. 구조체를 NDIS_MINIPORT_CO_CHARACTERISTICSNdisSetOptionalHandlersOptionalHandlers 매개 변수에 전달합니다.

NDIS는 자체적으로 또는 NdisCoOidRequest 함수를 호출하는 바인딩된 프로토콜 드라이버를 대신하여 MiniportCoOidRequest 함수를 호출합니다. 미니포트 드라이버는 OidRequest 에서 제공된 요청을 검토하고 요청된 작업을 수행해야 합니다. 드라이버가 처리하는 OID에 대한 자세한 내용은 NDIS OID를 참조하세요.

NDIS는 OidRequest 에서 OID 관련 콘텐츠의 유효성을 검사하지 않습니다. 따라서 드라이버 자체는 이러한 콘텐츠의 유효성을 검사해야 합니다. 드라이버가 설정할 값이 범위를 벗어나는 것으로 판단되면 요청에 실패하고 NDIS_STATUS_INVALID_DATA 반환해야 합니다.

MiniportCoOidRequest가 NDIS_STATUS_PENDING 반환하는 경우 NDIS는 보류 중인 요청이 완료되기 전에 MiniportAdapterContext에 지정된 미니포트 어댑터에 대해 다른 요청으로 MiniportCoOidRequest를 호출할 수 있습니다. NDIS는 연결 지향 OID 요청을 직렬화하지 않습니다.

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

예를 들어 " MyCoOidRequest"라는 MiniportCoOidRequest 함수를 정의하려면 이 코드 예제와 같이 MINIPORT_CO_OID_REQUEST 형식을 사용합니다.

MINIPORT_CO_OID_REQUEST MyCoOidRequest;

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

_Use_decl_annotations_
NDIS_STATUS
 MyCoOidRequest(
    NDIS_HANDLE  MiniportAdapterContext,
    NDIS_HANDLE  MiniportVcContext,
    PNDIS_OID_REQUEST  OidRequest
    )
  {...}

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

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

요구 사항

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

추가 정보

MiniportCancelOidRequest

MiniportCoCreateVc

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportResetEx

MiniportSetOptions

NDIS_MINIPORT_CO_CHARACTERISTICS

NDIS_OID_REQUEST

NdisCoOidRequest

NdisMCoOidRequestComplete

NdisSetOptionalHandlers