다음을 통해 공유


큐 상태 및 작업

각 큐에 대해 네트워크 어댑터는 다음 작업 상태 집합을 지원해야 합니다.

정의
큐가 할당되지 않았습니다. 큐를 할당하기 위해 오버리싱 드라이버는 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 있음)를 발급하면 드라이버가 해제 상태로 들어갑니다. 모든 미해결 수신 표시가 완료되고 큐 리소스가 해제되면 큐가 정의되지 않습니다.