다음을 통해 공유


VMQ에서 필터 열거

수신 큐에 설정된 모든 필터 목록을 가져오려면 드라이버와 애플리케이션이 OID_RECEIVE_FILTER_ENUM_FILTERS 메서드 OID(개체 식별자) 요청을 사용할 수 있습니다.

NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버는 처음에 NDIS_RECEIVE_FILTER_INFO_ARRAY 구조체에 대한 포인터를 포함합니다. NDIS_RECEIVE_FILTER_INFO_ARRAY 구조체의 형식을 지정하는 경우 오버리싱 드라이버 또는 애플리케이션은 QueueId 멤버를 수신 큐의 식별자(ID)로 설정해야 합니다. 수신 큐 ID는 다음과 같은 방법으로 가져옵니다.

  • 오버리싱 드라이버는 OID_RECEIVE_FILTER_ALLOCATE_QUEUE 또는 OID_RECEIVE_FILTER_ENUM_QUEUES 이전 OID 메서드 요청에서 수신 큐 ID 값을 얻었습니다. 드라이버는 기본 수신 큐에 대한 NDIS_DEFAULT_RECEIVE_QUEUE_ID 지정할 수도 있습니다.

  • 애플리케이션은 OID_RECEIVE_FILTER_ENUM_QUEUES 이전 OID 메서드 요청에서 수신 큐 ID 값을 얻었습니다. 애플리케이션은 기본 수신 큐에 대한 NDIS_DEFAULT_RECEIVE_QUEUE_ID 지정할 수도 있습니다.

OID_RECEIVE_FILTER_ENUM_FILTERS OID 메서드 요청에서 성공적으로 반환된 후 NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버는 업데이트된 NDIS_RECEIVE_FILTER_INFO_ARRAY 구조체에 대한 포인터를 포함하고 그 다음에 하나 이상의 NDIS_RECEIVE_FILTER_INFO 구조체를 포함합니다. 각 NDIS_RECEIVE_FILTER_INFO 구조는 지정된 수신 큐에 설정된 필터의 ID를 지정합니다.

드라이버 또는 애플리케이션을 과도하게 사용하면 OID_RECEIVE_FILTER_PARAMETERS OID 메서드 요청을 사용하여 수신 큐에서 특정 필터의 매개 변수를 가져올 수 있습니다.

NDIS_OID_REQUEST 구조체의 InformationBuffer 멤버는 처음에 NDIS_RECEIVE_FILTER_PARAMETERS 구조체에 대한 포인터를 포함합니다. 오버리싱 드라이버 또는 애플리케이션은 FilterId 멤버를 매개 변수가 반환될 필터의 0이 아닌 ID 값으로 설정하여 NDIS_RECEIVE_FILTER_PARAMETERS 구조체의 형식을 지정합니다.

참고 오버리싱 드라이버는 OID_RECEIVE_FILTER_SET_FILTER 또는OID_RECEIVE_FILTER_ENUM_FILTERS 이전 OID 메서드 요청에서 필터 ID를 얻었습니다. 애플리케이션은 OID_RECEIVE_FILTER_ENUM_FILTERS 이전 OID 메서드 요청에서만 필터 ID를 가져올 수 있습니다.

NDIS는 미니포트 드라이버에 대한 OID_RECEIVE_FILTER_ENUM_FILTERSOID_RECEIVE_FILTER_PARAMETERS 메서드 OID 요청을 처리합니다. NDIS는 OID_RECEIVE_FILTER_SET_FILTER OID 요청에서 받은 데이터의 내부 캐시에서 정보를 얻었습니다.