MINIPORT_OID_REQUEST 콜백 함수(ndis.h)

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

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

구문

MINIPORT_OID_REQUEST MiniportOidRequest;

NDIS_STATUS MiniportOidRequest(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNDIS_OID_REQUEST OidRequest
)
{...}

매개 변수

[in] MiniportAdapterContext

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

[in] OidRequest

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

반환 값

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

반환 코드 설명
NDIS_STATUS_SUCCESS
미니포트 드라이버가 요청된 대로 데이터를 설정하거나 가져옵니다.
NDIS_STATUS_PENDING
미니포트 드라이버는 요청을 비동기적으로 완료합니다. 미니포트 드라이버가 모든 처리를 완료한 후에는 를 호출해야 합니다. NdisMOidRequestComplete 함수는 요청이 완료되었다는 것을 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에서 요청에 지정된 하나 이상의 매개 변수가 잘못되었습니다.
NDIS_STATUS_NOT_ACCEPTED
를 호출한 후 MiniportDevicePnPEventNotify 함수는 기습 제거를 나타내며 NDIS는 드라이버의 MiniportHaltEx 함수를 호출합니다. NDIS가 MiniportHaltEx를 호출하기 전에 드라이버가 OID 요청을 수신하는 경우 상태 값이 NDIS_STATUS_NOT_ACCEPTED 이러한 요청을 즉시 완료해야 합니다.
NDIS_STATUS_REQUEST_ABORTED
미니포트 드라이버가 요청 처리를 중지했습니다. 예를 들어 NDIS는 MiniportResetEx 함수를 호출했습니다.
NDIS_STATUS_INDICATION_REQUIRED
미니포트 드라이버는 후속 상태 표시와 함께 OID 완성 상태 제공합니다. 미니포트 드라이버는 특정 OID에서 허용하지 않는 한 NDIS_STATUS_INDICATION_REQUIRED 반환할 수 없습니다. 이 상태 허용되는지 확인하려면 OID 참조 페이지를 참조하세요. NDIS_STATUS_INDICATION_REQUIRED 대한 자세한 내용은 NDIS_OID_REQUESTNDIS_STATUS_INDICATION 참조하세요.

설명

드라이버는 를 호출할 때 MiniportOidRequest 진입점을 지정합니다. NdisMRegisterMiniportDriver 함수.

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

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

MiniportOidRequest가 NDIS_STATUS_PENDING 반환하는 경우 NDIS는 보류 중인 요청이 완료될 때까지 MiniportAdapterContext에 지정된 미니포트 어댑터에 대해 다른 요청으로 MiniportOidRequest를 호출하지 않습니다.

참고 미니포트 드라이버가 MiniportOidRequest 호출의 컨텍스트에서 대기하는 경우 NDIS 검사-for-hang 논리는 응답하지 않는 미니포트 드라이버를 다시 설정하지 않습니다. 따라서 미니포트 드라이버는 MiniportOidRequest 호출의 컨텍스트 내에서 하드웨어 작업이 완료되기를 기다리지 않아야 합니다. 대신 드라이버는 NDIS_STATUS_PENDING 반환하고 작업 항목을 큐에 대기할 수 있습니다.
 
NDIS는 IRQL == PASSIVE_LEVEL MiniportOidRequest 를 호출합니다.

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

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

MINIPORT_OID_REQUEST MyOidRequest;

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

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

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

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

요구 사항

요구 사항
지원되는 최소 클라이언트 NDIS 6.0 이상에서 지원됩니다.
대상 플랫폼 Windows
헤더 ndis.h(Ndis.h 포함)
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 NdisOidComplete, NdisOidDoubleComplete, NdisOidDoubleRequest, NdisTimedOidComplete, WlanAssociation, WlanDisassociation, WlanTimedAssociation, WlanTimedConnectionRoaming, WlanTimedConnectRequest, WlanTimedLinkQuality, WlanTimedScan

추가 정보

MiniportDevicePnPEventNotify

MiniportHaltEx

MiniportInitializeEx

MiniportOidRequest

MiniportResetEx

NDIS_OID_REQUEST

NDIS_STATUS_INDICATION

NdisMOidRequestComplete

NdisMRegisterMiniportDriver

NdisOidRequest