큐 상태 및 작업
각 큐에 대해 네트워크 어댑터는 다음 작업 상태 집합을 지원해야 합니다.
정의
큐가 할당되지 않았습니다. 큐를 할당하기 위해 오버리싱 드라이버는 OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID 요청을 보냅니다.
Allocated
할당된 상태는 큐의 초기 상태입니다. 큐가 할당됨 상태인 경우 오버리싱 드라이버는 일반적으로 OID_RECEIVE_FILTER_SET_FILTER OID를 사용하여 큐에서 필터를 설정하거나 OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID 요청을 사용하여 큐 할당을 완료합니다.
설정
설정 상태에서 큐에 하나 이상의 필터가 할당되어 있지만 오버리싱 드라이버가 OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID를 보내지 않았습니다.
실행 중
실행 중 상태에서 큐에는 필터가 설정되어 있고 큐 할당이 완료되었으며 미니포트 어댑터는 큐에 대한 수신 패킷을 나타냅니다.
일시 중지
일시 중지됨 상태에서 네트워크 어댑터는 큐에 대해 수신된 네트워크 데이터를 나타내지 않습니다. OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID 요청 전에 큐에 설정된 필터가 없거나 OID_RECEIVE_FILTER_CLEAR_FILTER OID 요청으로 큐에 설정된 모든 필터를 지웁니다.
DMA 중지됨
DMA 중지됨 상태에서 미니포트 드라이버가 OID_RECEIVE_FILTER_FREE_QUEUE OID 요청을 받았습니다. DMA가 중지되고 드라이버가 DMA 중지 상태 표시(NDIS_STATUS_RECEIVE_QUEUE_STATE 포함)를 실행하면 드라이버는 해제 상태가 됩니다.
자유롭게
해제 상태에서 미니포트 드라이버는 큐에 대한 보내기 및 수신 작업을 중지하는 데 필요한 작업을 완료하고 연결된 리소스를 해제합니다. 미해결 수신 표시가 모두 완료되면 큐가 삭제되고 큐가 정의되지 않습니다.
다음 표에서 제목은 큐 상태입니다. 주 이벤트는 첫 번째 열에 나열됩니다. 테이블의 나머지 항목은 이벤트가 상태 내에서 발생한 후 큐가 들어오는 다음 상태를 지정합니다. 빈 항목은 잘못된 이벤트/상태 조합을 나타냅니다.
이벤트 \ 상태 | 정의되지 않음 | Allocated | 설정 | 실행 중 | 일시 중지됨 | DMA 중지 | 자유롭게 |
---|---|---|---|---|---|---|---|
OID_RECEIVE_FILTER_ALLOCATE_QUEUE - 메서드(집합) |
Allocated |
||||||
OID_RECEIVE_FILTER_QUEUE_PARAMETERS - 메서드(쿼리) 요청 |
Allocated |
설정 |
실행 중 |
일시 중지됨 |
|||
OID_RECEIVE_FILTER_QUEUE_PARAMETERS - 요청 설정 |
Allocated |
설정 |
실행 중 |
일시 중지됨 |
|||
OID_RECEIVE_FILTER_SET_FILTER - 메서드(설정) 요청 |
설정 |
설정 |
실행 중 |
실행 중 |
|||
OID_RECEIVE_FILTER_CLEAR_FILTER - 요청 설정(마지막 필터) |
Allocated |
일시 중지됨 |
|||||
OID_RECEIVE_FILTER_CLEAR_FILTER - 요청 설정(마지막 필터 아님) |
설정 |
실행 중 |
|||||
OID_RECEIVE_FILTER_ENUM_FILTERS - 메서드(쿼리 요청) |
Allocated |
설정 |
실행 중 |
일시 중지됨 |
|||
OID_RECEIVE_FILTER_PARAMETERS - 메서드(쿼리) 요청 |
설정 |
실행 중 |
|||||
OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE - 메서드(설정) 요청 |
일시 중지됨 |
실행 중 |
|||||
패킷 받기 |
실행 중 |
||||||
OID_RECEIVE_FILTER_FREE_QUEUE 설정 요청 |
DMA 중지 |
DMA 중지 |
|||||
DMA가 중지되고 표시가 전송된 NDIS_STATUS_RECEIVE_QUEUE_STATE 상태(참고: DMA가 할당됨 또는 일시 중지됨 상태에서 이미 중지되었을 수 있습니다). |
자유롭게 |
||||||
모든 수신 표시가 완료되고 큐 리소스가 해제됩니다. |
정의되지 않음 |
참고 앞의 표에 나열된 이벤트에는 상태 변경을 초래하지 않는 일부 보조 이벤트가 포함됩니다. 이러한 보조 이벤트는 테이블에 포함되어 이러한 이벤트가 유효한 상태를 지정합니다.
기본 큐 이벤트는 다음과 같이 정의됩니다.
OID_RECEIVE_FILTER_ALLOCATE_QUEUE - 메서드(설정) 요청
지나치게 많은 드라이버가 큐를 할당했습니다. 큐 할당에 대한 자세한 내용은 VM 큐 할당 및 해제를 참조하세요.
OID_RECEIVE_FILTER_SET_FILTER - 메서드(설정) 요청
오버리싱 드라이버는 큐에 필터를 설정합니다. 오버리싱 드라이버가 OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE OID를 보내지 않은 경우 큐는 Set 상태입니다. 그렇지 않으면 큐가 실행 중 상태입니다. 큐에 필터를 설정하는 방법에 대한 자세한 내용은 VMQ 필터 설정 및 지우기 를 참조하세요.
OID_RECEIVE_FILTER_CLEAR_FILTER - 요청 설정
지나치게 많은 드라이버가 큐에서 필터를 지웁니다. 실행 중인 큐에서 마지막 필터가 지워진 경우 DMA를 중지할 수 있습니다. 수신 표시가 중지되고 수신된 데이터가 있는 경우 큐를 지워야 합니다. 큐에서 필터를 지우는 방법에 대한 자세한 내용은 VMQ 필터 설정 및 지우기 를 참조하세요.
OID_RECEIVE_FILTER_QUEUE_ALLOCATION_COMPLETE - 메서드(설정) 요청
지나치게 많은 드라이버가 큐 할당을 완료했습니다. 큐에 설정된 필터가 있는 경우 실행 중 상태이며 수신 표시가 시작될 수 있습니다. 큐 할당을 완료하는 방법에 대한 자세한 내용은 VM 큐 할당 및 해제를 참조하세요.
패킷 받기
미니포트 드라이버는 실행 중 상태인 큐에 대한 수신 패킷만 나타낼 수 있습니다. 큐에 대해 수신된 데이터를 나타내는 방법에 대한 자세한 내용은 VMQ 보내기 및 수신 작업을 참조하세요.
요청을 설정할 OID_RECEIVE_FILTER_FREE_QUEUE 있습니다.
지나치게 많은 드라이버가 큐를 해제했습니다. 드라이버가 DMA 중지 상태 표시(NDIS_STATUS_RECEIVE_QUEUE_STATE 있음)를 발급하면 드라이버가 해제 상태로 들어갑니다. 모든 미해결 수신 표시가 완료되고 큐 리소스가 해제되면 큐가 정의되지 않습니다.