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