функция обратного вызова PFLT_MESSAGE_NOTIFY (fltkernel.h)
функция обратного вызова FltMgr вызывает функцию обратного вызова MessageNotifyCallback, когда приложение в режиме пользователя вызывает FilterSendMessage, чтобы отправить сообщение минифильтру через клиентский порт.
Синтаксис
PFLT_MESSAGE_NOTIFY PfltMessageNotify;
NTSTATUS PfltMessageNotify(
PVOID PortCookie,
PVOID InputBuffer,
ULONG InputBufferLength,
PVOID OutputBuffer,
ULONG OutputBufferLength,
PULONG ReturnOutputBufferLength
)
{...}
Параметры
PortCookie
[in] Указатель на сведения, определяемые минифильтром, которые однозначно идентифицируют этот клиентский порт. При создании клиентского порта мини-фильтр вернул этот указатель контекста в параметре ConnectionPortCookie параметра
InputBuffer
[in] Указатель на выделенный вызывающим буфером, содержащим сообщение, которое будет отправлено мини-фильтру.
InputBuffer — это указатель на необработанный буфер пользовательского режима. Этот указатель действителен только в контексте процесса пользовательского режима и должен быть доступен только в пределах блокировки.
FltMgr вызывает ProbeForRead для проверки этого указателя, но не гарантирует правильность выравнивания буфера. Если буфер содержит структуры, имеющие требования к выравниванию, минифильтр отвечает за выполнение любых необходимых проверок выравнивания. Для этого минифильтр может использовать макрос
Этот параметр является необязательным и может иметь значение NULL.
InputBufferLength
[in] Размер в байтах буфера, на который InputBuffer указывает. Этот параметр игнорируется, если inputBuffer имеет значение NULL.
OutputBuffer
[out] Указатель на выделенный вызывающим буфером, который получает ответ(если таковой) из мини-фильтра.
OutputBuffer — это указатель на необработанный, разблокированный буфер пользовательского режима. Этот указатель действителен только в контексте процесса пользовательского режима и должен быть доступен только в пределах блокировки.
FltMgr вызывает ProbeForWrite для проверки этого указателя, но не гарантирует правильность выравнивания буфера. Если буфер содержит структуры, имеющие требования к выравниванию, минифильтр отвечает за выполнение любых необходимых проверок выравнивания. Для этого минифильтр может использовать макрос
Этот параметр является необязательным и может иметь значение NULL.
OutputBufferLength
[in] Размер в байтах буфера, на который OutputBuffer указывает. Этот параметр игнорируется, если OutputBuffer имеет значение NULL.
ReturnOutputBufferLength
[out] Указатель на выделенную вызывающим переменную, которая получает количество байтов, возвращаемых в буфере, на который OutputBuffer указывает.
Возвращаемое значение
MessageNotifyCallback возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае возвращает соответствующее значение NTSTATUS, например:
Возвращаемый код | Значение |
---|---|
STATUS_INSUFFICIENT_RESOURCES | Для завершения операции недостаточно ресурсов. |
STATUS_INVALID_PARAMETER | Один или несколько входных параметров недопустимы. |
Замечания
Минифильтры могут при необходимости реализовать MessageNotifyCallback. Если минифильтр не реализует этот обратный вызов, любой запрос, сделанный в пользовательском режиме для отправки данных в порт, получит ошибку.
Дополнительные сведения см. в разделе Обмен данными между пользовательским режимом и минифильтрами.
Требования
Требование | Ценность |
---|---|
заголовка | fltkernel.h |
библиотеки |
FltMgr.lib |
DLL | FltMgr.sys |
IRQL | PASSIVE_LEVEL |