функция FILTER_SYNCHRONOUS_OID_REQUEST_COMPLETE (ndis.h)

NDIS вызывает функцию FilterSynchronousOidRequestComplete драйвера фильтра после завершения запроса синхронного идентификатора OID от базового драйвера.

Эта функция поддерживается в NDIS 6.81 и более поздних версиях.

Синтаксис

void FILTER_SYNCHRONOUS_OID_REQUEST_COMPLETE(
  [in]      NDIS_HANDLE      FilterModuleContext,
  [in, out] NDIS_OID_REQUEST *OidRequest,
  [in, out] NDIS_STATUS      *Status,
  [in]      PVOID            CallContext
);

Параметры

[in] FilterModuleContext

Дескриптор области контекста для модуля фильтра, который является целевым объектом этого запроса. Драйвер фильтра создал и инициализировал эту область контекста в функции FilterAttach .

[in, out] OidRequest

Указатель на структуру NDIS_OID_REQUEST , указывающую выполняемую операцию.

[in, out] Status

Указатель на результирующий код состояния завершаемого запроса.

[in] CallContext

Слот хранения размера PVOID для драйвера фильтра для совместного использования состояния между обработчиками FilterSynchronousOidRequest и FilterSynchronousOidRequestComplete . Если драйвер фильтра реализует обработчик FilterSynchronousOidRequest , этот параметр содержит значение контекста, возвращаемое обработчиком FilterSynchronousOidRequest . В противном случае, если драйвер фильтра не реализует обработчик FilterSynchronousOidRequest , это значение равно нулю.

Возвращаемое значение

None

Remarks

FilterSynchronousOidRequestComplete является необязательной функцией. Если драйверу фильтра не нужно наблюдать или изменять синхронные запросы OID, выполненные из драйвера мини-порта, драйвер фильтра должен задать точку входа для этой функции значение NULL при вызове NdisFRegisterFilterDriver.

NDIS вызывает функцию FilterSynchronousOidRequestComplete драйвера фильтра для обработки синхронных запросов OID, которые выполняются базовыми драйверами. Драйверы фильтров могут считывать или изменять некоторые поля в структуре NDIS_OID_REQUEST следующим образом:

Поле Фильтрация доступа
Заголовок Только для чтения
RequestType Чтение/запись
PortNumber Чтение/запись
Время ожидания Не получать доступ
RequestId Не получать доступ
RequestHandle Чтение/запись
DATA Чтение/запись
NdisReserved Не получать доступ
MiniportReserved Не получать доступ
SourceReserved Не получать доступ
SupportedRevision Чтение/запись
Reserved1, Reserved2 Не получать доступ
SwitchId Чтение/запись
VPortId Чтение/запись
Флаги Чтение/запись

Помимо изменения структуры NDIS_OID_REQUEST , драйверы фильтров могут считывать или изменять код состояния, с помощью которого выполнена операция. Драйвер фильтра может записать новое значение в параметр *Status . Драйверы фильтров не должны записывать NDIS_STATUS_PENDING или NDIS_STATUS_ALREADY_COMPLETE в параметр *Status .

Если драйвер фильтра также регистрирует обработчик FilterSynchronousOidRequest , NDIS гарантирует, что обработчик FilterSynchronousOidRequestComplete будет вызван только в том случае, если обработчик FilterSynchronousOidRequest возвращает NDIS_STATUS_SUCCESS.

Ожидается, что драйверы фильтров будут быстро возвращать данные из обработчика FilterSynchronousOidRequestComplete , не блокируя, не ожидая или не переходя в спящий режим. Синхронные запросы OID используются только для операций с низкой задержкой, и драйверы фильтров должны стремиться продолжить или завершить их в течение нескольких миллисекунд.

NDIS не сериализует синхронные запросы OID друг к другу, к другим запросам OID или FilterPause. За реализацию любой необходимой синхронизации отвечает драйвер фильтра.

NDIS сериализует синхронные запросы OID к FilterDetach. NDIS гарантирует, что синхронные запросы OID не будут активны после вызова FilterDetach .

Драйверы фильтров не должны вызывать NdisAllocateCloneOidRequest или NdisCancelOidRequest в синхронном запросе OID. Драйверы фильтров не должны вызывать NdisFSynchronousOidRequest в запросе OID, полученном через обработчик FilterSynchronousOidRequestComplete .

Требования

Требование Значение
Минимальная версия клиента Windows 10 версии 1709
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL <= DISPATCH_LEVEL

См. также раздел

FilterSynchronousOidRequest

NdisFSynchronousOidRequest

Синхронный интерфейс запроса OID в NDIS 6.80