Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Драйверы протокола NDIS задают запросы OID_RECEIVE_FILTER_FREE_QUEUE для освобождения очереди получения.
Элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на структуру NDIS_RECEIVE_QUEUE_FREE_PARAMETERS с идентификатором очереди типа NDIS_RECEIVE_QUEUE_ID.
Замечания
Запрос набора OID OID_RECEIVE_FILTER_FREE_QUEUE необязателен для драйверов минипорта NDIS 6.20 и более поздних версий. Это обязательно для мини-портов драйверов, поддерживающих интерфейс очереди виртуальных машин.
После того, как драйвер чрезмерно выдает OID_RECEIVE_FILTER_ALLOCATE_QUEUE OID для выделения очереди получения, он выдает OID_RECEIVE_FILTER_FREE_QUEUE OID, чтобы освободить очередь получения.
Когда NDIS запрашивает мини-драйвер для освобождения очереди получения VMQ, выполните следующие действия:
Сетевой адаптер останавливает передачу данных DMA для получения буферов, связанных с очередью получения, после чего очередь должна ввести остановленное состояние DMA. Сетевой адаптер, вероятно, остановил действие DMA, когда он получил запрос OID_RECEIVE_FILTER_CLEAR_FILTER OID, чтобы очистить последний фильтр набора в очереди получения.
Драйвер минипорта создает указание состояния NDIS_STATUS_RECEIVE_QUEUE_STATE с QueueState элементом структуры NDIS_RECEIVE_QUEUE_STATE, равным NdisReceiveQueueOperationalStateDmaStopped, чтобы уведомить NDIS о том, что передача DMA была остановлена.
Минипорт-драйвер ожидает, пока все указанные пакеты получения этой очереди будут возвращены минипорт-драйверу.
Драйвер минипорта освобождает всю общую память, выделенную для буферов получения сетевого адаптера, связанных с очередью, вызывая NdisFreeSharedMemory.
Драйвер минипорта завершает запрос OID_RECEIVE_FILTER_FREE_QUEUE OID, чтобы освободить очередь получения.
Драйверы минипорта вызывают функцию NdisFreeSharedMemory, чтобы освободить общую память для очереди. Если мини-драйвер выделил общую память для недефесультной очереди, драйвер освобождает общую память в контексте OID_RECEIVE_FILTER_FREE_QUEUE OID при освобождении очереди. Минипорт драйверы свободно используют общую память, выделенную для очереди по умолчанию в контексте функции MiniportHaltEx.
Перед освобождением очереди драйвер должен освободить все фильтры, заданные в очереди. Кроме того, перед вызовом функции NdisCloseAdapterEx необходимо освободить все очереди получения, выделенные на сетевом адаптере. NDIS освобождает все очереди, выделенные на сетевом адаптере, прежде чем вызывать функцию miniport driver MiniportHaltEx.
Коды состояния возврата
Функция miniport driver MiniportOidRequest возвращает одно из следующих значений для этого запроса:
| Срок | Описание |
|---|---|
NDIS_STATUS_SUCCESS |
Минипорт-драйвер успешно завершил запрос. |
NDIS_STATUS_PENDING |
Минипорт-драйвер завершит запрос асинхронно. После завершения всей обработки минипорт-драйвера запрос должен завершиться путем вызова функции NdisMOidRequestComplete, передав NDIS_STATUS_SUCCESS для параметра состояния. |
NDIS_STATUS_NOT_ACCEPTED |
Драйвер минипорта сбрасывается. |
NDIS_STATUS_REQUEST_ABORTED |
Минипорт-драйвер перестал обрабатывать запрос. Например, NDIS называется функцией MiniportResetEx. |
NDIS возвращает один из следующих кодов состояния для этого запроса:
| Код состояния | Описание |
|---|---|
NDIS_STATUS_SUCCESS |
Запрошенная очередь была освобождена успешно. |
NDIS_STATUS_PENDING |
Запрос ожидает завершения. NDIS передает окончательный код состояния и результаты обработчику завершения запроса OID для вызывающего объекта после завершения запроса. |
NDIS_STATUS_INVALID_PARAMETER |
Недопустимый идентификатор очереди. |
NDIS_STATUS_INVALID_LENGTH |
Буфер информации слишком короткий. NDIS задает DATA.METHOD_INFORMATION.элемент BytesNeededed в структуре NDIS_OID_REQUEST до минимального размера буфера, который требуется. |
Требования
Версия |
Поддерживается в NDIS 6.20 и более поздних версиях. |
Заголовок |
Ntddndis.h (include Ndis.h) |
См. также
NDIS_RECEIVE_QUEUE_FREE_PARAMETERS