функция обратного вызова FILTER_DIRECT_OID_REQUEST_COMPLETE (ndis.h)
NDIS вызывает функцию FilterDirectOidRequestComplete для выполнения прямого запроса OID драйвера фильтра, который запрашивает или задает сведения в базовом драйвере.
Синтаксис
FILTER_DIRECT_OID_REQUEST_COMPLETE FilterDirectOidRequestComplete;
void FilterDirectOidRequestComplete(
[in] NDIS_HANDLE FilterModuleContext,
[in] PNDIS_OID_REQUEST OidRequest,
[in] NDIS_STATUS Status
)
{...}
Параметры
[in] FilterModuleContext
Дескриптор области контекста для модуля фильтра. Драйвер фильтра создал и инициализировал эту область контекста в функции FilterAttach .
[in] OidRequest
Указатель на структуру NDIS_OID_REQUEST , которую драйвер фильтра ранее передал вФункция NdisFDirectOidRequest.
[in] Status
Окончательное состояние запроса, заданного базовым драйвером или NDIS. Этот параметр определяет, что делает FilterDirectOidRequestComplete со сведениями в OidRequest . Список возможных значений состояния см. в разделе Возвращаемые значения NdisFDirectOidRequest.
Возвращаемое значение
None
Remarks
FilterDirectOidRequestComplete является необязательной функцией. Если драйвер фильтра не использует прямые запросы OID, он может задать точку входа для этой функции значение NULL при вызовеФункция NdisFRegisterFilterDriver. Если драйвер фильтра определяет функцию FilterDirectOidRequest , он должен предоставить функцию FilterDirectOidRequestComplete .
Если функция NdisFDirectOidRequest возвращает NDIS_STATUS_PENDING, NDIS должна вызвать функцию FilterDirectOidRequestComplete для выполнения запроса OID.
Если драйвер фильтра переадресовал запрос, полученный в функции FilterDirectOidRequest ,
FilterDirectOidRequestComplete передает состояние завершения в стек драйвера путем вызова
Функция NdisFDirectOidRequestComplete. В этом случае драйвер фильтра должен вызвать NdisFreeCloneOidRequest, чтобы освободить структуру NDIS_OID_REQUEST , прежде чем вызывать
NdisFDirectOidRequestComplete.
Драйвер фильтра должен отслеживать исходящие запросы и следить за тем, чтобы он не вызывал NdisFDirectOidRequestComplete , когда NDIS вызывает FilterDirectOidRequestComplete для таких запросов.
NDIS вызывает FilterDirectOidRequestComplete по адресу IRQL <= DISPATCH_LEVEL.
Примеры
Чтобы определить функцию FilterDirectOidRequestComplete , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.Например, чтобы определить функцию FilterDirectOidRequestComplete с именем MyDirectOidRequestComplete, используйте тип FILTER_DIRECT_OID_REQUEST_COMPLETE , как показано в следующем примере кода:
FILTER_DIRECT_OID_REQUEST_COMPLETE MyDirectOidRequestComplete;
Затем реализуйте функцию следующим образом:
_Use_decl_annotations_
VOID
MyDirectOidRequestComplete(
NDIS_HANDLE FilterModuleContext,
PNDIS_OID_REQUEST OidRequest,
NDIS_STATUS Status
)
{...}
Тип функции FILTER_DIRECT_OID_REQUEST_COMPLETE определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции FILTER_DIRECT_OID_REQUEST_COMPLETE в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.
Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.1 и более поздних версиях. |
Целевая платформа | Windows |
Header | ndis.h (включая Ndis.h) |
IRQL | <= DISPATCH_LEVEL |
См. также раздел
NdisFDirectOidRequestCompleteОбратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по