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 코드의 요구 사항과 일치하지 않습니다. 정보 버퍼가 너무 작으면 NdisDirectOidRequest에서 반환되는 InformationBufferLength에 대한 올바른 값이 BytesNeeded 멤버에 포함됩니다. |
|
지정된 NDIS_OID_REQUEST 구조의 InformationBuffer 에서 제공된 데이터가 지정된 OID_Xxx 코드에 유효하지 않습니다. |
|
기본 드라이버는 요청된 작업을 지원하지 않습니다. NdisDirectOidRequest의 경우 호출 드라이버가 ProtocolDirectOidRequestComplete 함수를 등록하지 않은 경우에도 NDIS에서 이 상태를 반환할 수 있습니다. |
|
리소스 부족으로 인해 요청을 충족할 수 없습니다. 일반적으로 이 반환 값은 메모리 할당 시도가 실패했음을 나타내지만, 나중에 제출된 동일한 요청이 동일한 이유로 실패했음을 반드시 나타내는 것은 아닙니다. |
|
기본 드라이버는 요청된 작업(일반적으로 NIC의 집합)을 시도했지만 실패했습니다. 예를 들어 너무 많은 멀티캐스트 주소를 설정하려고 하면 이 값이 반환될 수 있습니다. |
|
닫기 작업이 진행 중이므로 기본 드라이버가 요청된 작업에 실패했습니다. |
|
현재 영향을 받는 NIC를 다시 설정 중이므로 기본 미니포트 드라이버는 현재 요청을 충족할 수 없습니다. 호출자의 ProtocolStatusEx 함수는 다시 설정이 진행 중임을 나타내기 위해 NDIS_STATUS_RESET_START 호출되었거나 호출됩니다. 이 반환 값이 반드시 나중에 제출된 동일한 요청이 동일한 이유로 실패했음을 나타내는 것은 아닙니다. |
|
이 값은 일반적으로 특정이 아닌 기본값이며, 더 구체적인 NDIS_STATUS_Xxx 값으로 인해 기본 드라이버가 요청에 실패하지 않을 때 반환됩니다. |
설명
일반 OID 요청에는 NdisDirectOidRequest 함수를 사용할 수 없습니다. 일반적인 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 |
참고 항목
OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA
OID_TCP_TASK_IPSEC_OFFLOAD_V2_DELETE_SA
OID_TCP_TASK_IPSEC_OFFLOAD_V2_UPDATE_SA
피드백
다음에 대한 사용자 의견 제출 및 보기