NdisDirectOidRequest 함수(ndis.h)
NdisDirectOidRequest 함수는 기본 드라이버에 직접 OID 요청을 전달하여 어댑터의 기능 또는 상태 쿼리하거나 어댑터의 상태를 설정합니다.
구문
NDIS_STATUS NdisDirectOidRequest(
[in] NDIS_HANDLE NdisBindingHandle,
[in] PNDIS_OID_REQUEST OidRequest
);
매개 변수
[in] NdisBindingHandle
바인딩에서 대상 미니포트 어댑터를 식별하는 NdisOpenAdapterEx 함수가 반환하는 핸들입니다.
[in] OidRequest
어댑터의 상태 쿼리하거나 어댑터의 상태를 설정하기 위해 지정된 OID_Xxx 코드로 요청되는 작업을 지정하는 NDIS_OID_REQUEST 구조체에 대한 포인터입니다.
반환 값
기본 드라이버는 반환하는 NDIS_STATUS_XXX 코드 NdisDirectOidRequest 를 결정하지만 일반적으로 다음 값 중 하나입니다.
반환 코드 | 설명 |
---|---|
|
요청 작업이 성공적으로 완료되었습니다. |
|
요청이 비동기적으로 처리되고 NDIS는 호출자의 를 호출합니다.요청이 완료되면 ProtocolDirectOidRequestComplete 함수입니다. |
|
OidRequest에서 NDIS_OID_REQUEST 구조화된 버퍼의 Oid 멤버에 지정된 OID_Xxx 코드가 기본 드라이버에서 잘못되었거나 지원되지 않습니다. |
|
OidRequest에서 NDIS_OID_REQUEST 구조화된 버퍼의 InformationBufferLength 멤버에 지정된 값이 지정된 OID_Xxx 코드의 요구 사항과 일치하지 않습니다. 정보 버퍼가 너무 작으면 BytesNeeded 멤버는 NdisDirectOidRequest에서 반환할 때 InformationBufferLength에 대한 올바른 값을 포함합니다. |
|
지정된 NDIS_OID_REQUEST 구조의 InformationBuffer 에 제공된 데이터는 지정된 OID_Xxx 코드에 대해 유효하지 않습니다. |
|
기본 드라이버는 요청된 작업을 지원하지 않습니다. NdisDirectOidRequest의 경우 호출 드라이버가 을 등록하지 않은 경우 NDIS는 이 상태 반환할 수도 있습니다. ProtocolDirectOidRequestComplete 함수입니다. |
|
리소스 부족으로 인해 요청을 충족할 수 없습니다. 일반적으로 이 반환 값은 메모리 할당 시도가 실패했음을 나타내지만, 나중에 제출된 동일한 요청이 동일한 이유로 실패했음을 반드시 나타내는 것은 아닙니다. |
|
기본 드라이버는 요청된 작업(일반적으로 NIC의 집합)을 시도했지만 실패했습니다. 예를 들어 너무 많은 멀티캐스트 주소를 설정하려고 하면 이 값이 반환될 수 있습니다. |
|
닫기 작업이 진행 중이므로 기본 드라이버가 요청된 작업에 실패했습니다. |
|
현재 영향을 받는 NIC를 다시 설정하므로 기본 미니포트 드라이버는 현재 요청을 충족할 수 없습니다. 호출자의 ProtocolStatusEx 함수는 다시 설정이 진행 중임을 나타내기 위해 NDIS_STATUS_RESET_START 함께 호출되거나 호출됩니다. 이 반환 값이 반드시 나중에 제출된 동일한 요청이 동일한 이유로 실패함을 나타내는 것은 아닙니다. |
|
이 값은 일반적으로 비특정 기본값으로, 더 구체적인 NDIS_STATUS_Xxx 값 중 어느 것도 기본 드라이버가 요청에 실패하지 않을 때 반환됩니다. |
설명
NdisDirectOidRequest 함수는 일반 OID 요청에 사용할 수 없습니다. 일반적인 OID 요청의 경우 NdisOidRequest 함수를 대신 사용합니다. NdisDirectOidRequest 는 NDIS가 직접 OID 인터페이스와 함께 사용하도록 지원하는 OID에만 사용할 수 있습니다. 예를 들어 다음 OID를 사용할 수 있습니다.
OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA프로토콜 드라이버는 지정된 OID와 연결된 정보 버퍼를 보유할 수 있는 충분한 메모리를 할당해야 합니다. 또한 드라이버는 NdisDirectOidRequest를 호출하기 전에 OidRequest 매개 변수에서 버퍼를 할당하고 설정해야 합니다. 요청을 처리하는 동안 기본 드라이버가 발생한 IRQL에서 실행되므로 두 버퍼는 모두 비페이지 풀에서 할당되어야 합니다.
NdisDirectOidRequest 는 기본 드라이버에 요청을 전달하거나 요청 자체를 처리합니다. 다음 하위 드라이버가 NDIS 중간 드라이버인 경우 중간 드라이버는 상위 수준 드라이버가 원래 제출한 요청을 완료하기 전에 자체의 OID별 요청으로 NdisDirectOidRequest 를 호출할 수 있습니다.
NdisDirectOidRequest를 호출하는 드라이버는 ProtocolDirectOidRequestComplete 함수입니다.
직접 OID 요청 인터페이스는 일반 OID 요청 인터페이스와 유사합니다. 일반 요청 발급에 대한 자세한 내용은 NdisOidRequest를 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | NDIS 6.1 이상에서 지원됩니다. |
대상 플랫폼 | 데스크톱 |
머리글 | ndis.h(Ndis.h 포함) |
라이브러리 | Ndis.lib |
IRQL | <= DISPATCH_LEVEL |