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_INDICATION 및 NDIS_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 포함) |
참고 항목
NET_BUFFER_LIST_RECEIVE_QUEUE_ID