다음을 통해 공유


OID_RECEIVE_FILTER_ALLOCATE_QUEUE

오버리싱 드라이버는 초기 구성 매개 변수 집합이 있는 큐를 할당하기 위해 OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID(개체 식별자) 메서드 요청을 실행합니다.

NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버는 NDIS_RECEIVE_QUEUE_PARAMETERS 구조체에 대한 포인터를 포함합니다. OID 메서드 요청에서 성공적으로 반환된 후 NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버에는 새 큐 식별자가 있는 NDIS_RECEIVE_QUEUE_PARAMETERS 구조체에 대한 포인터가 포함됩니다.

설명

OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID 메서드 요청은 NDIS 6.20 이상 미니포트 드라이버에 대해 선택 사항입니다. VMQ(가상 머신 큐) 인터페이스를 지원하는 미니포트 드라이버의 경우 필수입니다.

오버리싱 드라이버는 요청된 큐 구성을 사용하여 NDIS_RECEIVE_QUEUE_PARAMETERS 구조를 초기화합니다. NDIS는 NDIS_RECEIVE_QUEUE_PARAMETERS 구조체의 QueueId 멤버에 큐 식별자를 할당하고 메서드 요청을 미니포트 드라이버에 전달합니다.

참고 오버리싱 드라이버는 NDIS_RECEIVE_QUEUE_PARAMETERS 구조체의 Flags 멤버에서 NDIS_RECEIVE_QUEUE_PARAMETERS_PER_QUEUE_RECEIVE_INDICATIONNDIS_RECEIVE_QUEUE_PARAMETERS_LOOKAHEAD_SPLIT_REQUIRED플래그를 설정할 수 있습니다. 다른 플래그는 큐 할당에 사용되지 않습니다.

미니포트 드라이버가 OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID 요청을 실행하고 성공적으로 처리하면 큐가 일시 중지됨 상태가 됩니다.

오버리싱 드라이버는 큐 매개 변수를 수정하거나 큐를 해제하기 위해 NDIS가 후속 OID 요청에서 제공하는 큐 식별자를 사용해야 합니다. 큐 식별자는 큐와 연결된 모든 NET_BUFFER_LIST 구조의 OOB(out-of-band) 데이터에도 포함됩니다. 드라이버는 NET_BUFFER_LIST_RECEIVE_QUEUE_ID 매크로를 사용하여 NET_BUFFER_LIST 구조에서 큐 식별자를 검색합니다.

NDIS가 수신 큐를 할당하는 OID 요청을 받으면 큐 매개 변수를 확인합니다. NDIS는 필요한 리소스 및 큐 식별자를 할당한 후 기본 미니포트 드라이버에 OID 요청을 제출합니다. 큐 식별자는 연결된 네트워크 어댑터에 고유합니다.

미니포트 드라이버가 수신 큐에 필요한 소프트웨어 및 하드웨어 리소스를 성공적으로 할당할 수 있는 경우 NDIS_STATUS_SUCCESS 반환하여 OID 요청을 완료합니다.

미니포트 드라이버는 할당된 수신 큐에 대한 큐 식별자를 유지해야 합니다. NDIS는 수신 큐에서 수신 필터를 설정하거나, 수신 큐 매개 변수를 변경하거나, 수신 큐를 해제하기 위해 미니포트 드라이버에 대한 후속 호출에 수신 큐의 큐 식별자를 사용합니다.

오버리싱 드라이버가 하나 이상의 수신 큐를 할당하고 선택적으로 초기 필터를 설정한 후에는 OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE 집합 OID 요청을 실행하여 미니포트 드라이버에 수신 큐의 현재 일괄 처리에 대한 할당이 완료되었음을 알려야 합니다.

미니포트 드라이버는 해당 큐에 설정된 필터가 없는 경우 수신 큐에 패킷을 유지해서는 안 됩니다. 큐에 필터가 설정되지 않았거나 모든 필터가 지워진 경우 큐는 비어 있어야 하며 모든 패킷은 삭제되어야 합니다. 즉, 패킷이 드라이버 스택에 표시되거나 큐에 유지되지 않습니다.

지나치게 많은 드라이버는 OID_RECEIVE_FILTER_FREE_QUEUE OID 요청을 사용하여 할당한 큐를 해제합니다.

반환 상태 코드

NDIS 또는 미니포트 드라이버는 OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID 메서드 요청에 대해 다음 상태 코드 중 하나를 반환합니다.

상태 코드 Description

NDIS_STATUS_SUCCESS

큐가 성공적으로 할당되었습니다. 정보 버퍼에는 업데이트된 NDIS_RECEIVE_QUEUE_PARAMETERS 구조가 포함됩니다.

NDIS_STATUS_PENDING

요청이 완료될 때까지 보류 중입니다. 최종 상태 코드 및 결과는 호출자의 OID 요청 완료 처리기에 전달됩니다.

NDIS_STATUS_INVALID_PARAMETER

오버리싱 드라이버가 제공한 매개 변수 중 하나 이상이 잘못되었습니다.

NDIS_STATUS_INVALID_LENGTH

정보 버퍼가 너무 짧습니다. NDIS는 데이터를 설정합니다. METHOD_INFORMATION. 필요한 최소 버퍼 크기에 대한 NDIS_OID_REQUEST 구조체의 BytesNeeded 멤버입니다.

NDIS_STATUS_NOT_SUPPORTED

미니포트 드라이버의 NDIS 버전은 버전 6.20보다 이전 버전입니다.

NDIS_STATUS_FAILURE

다른 이유로 인해 요청이 실패했습니다.

요구 사항

Version

NDIS 6.20 이상에서 지원됩니다.

헤더

Ntddndis.h(Ndis.h 포함)

추가 정보

NDIS_OID_REQUEST

NET_BUFFER_LIST

NET_BUFFER_LIST_RECEIVE_QUEUE_ID

OID_RECEIVE_FILTER_FREE_QUEUE

OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE

NDIS_RECEIVE_QUEUE_PARAMETERS