Freigeben über


PFLT_MESSAGE_NOTIFY Rückruffunktion (fltkernel.h)

FltMgr ruft die MessageNotifyCallback Rückruffunktion eines Minifilters auf, wenn eine Anwendung im Benutzermodus FilterSendMessage- aufruft, um eine Nachricht über den Clientport an den Minifilter zu senden.

Syntax

PFLT_MESSAGE_NOTIFY PfltMessageNotify;

NTSTATUS PfltMessageNotify(
  PVOID PortCookie,
  PVOID InputBuffer,
  ULONG InputBufferLength,
  PVOID OutputBuffer,
  ULONG OutputBufferLength,
  PULONG ReturnOutputBufferLength
)
{...}

Parameter

PortCookie

[in] Zeiger auf minifilterdefinierte Informationen, die diesen Clientport eindeutig identifizieren. Beim Erstellen des Clientports hat der Minifilter diesen Kontextzeiger im ConnectionPortCookie- Parameter seiner ConnectNotifyCallback-Routine zurückgegeben.

InputBuffer

[in] Zeigen Sie auf einen vom Aufrufer zugewiesenen Puffer, der die Nachricht enthält, die an den Minifilter gesendet werden soll.

InputBuffer- ist ein Zeiger auf einen unformatierten, entsperrten Benutzermoduspuffer. Dieser Zeiger ist nur im Kontext des Benutzermodusprozesses gültig und darf nur innerhalb eines try/except-Block aufgerufen werden.

FltMgr ruftProbeForRead- auf, um diesen Zeiger zu überprüfen, stellt jedoch nicht sicher, dass der Puffer ordnungsgemäß ausgerichtet ist. Wenn der Puffer Strukturen mit Ausrichtungsanforderungen enthält, ist der Minifilter für die Durchführung aller erforderlichen Ausrichtungsprüfungen verantwortlich. Dazu kann der Minifilter das IS_ALIGNED Makro verwenden, wie im MiniSpy Beispiel-Minifilter gezeigt.

Dieser Parameter ist optional und kann NULL sein.

InputBufferLength

[in] Größe des Puffers in Bytes, auf den InputBuffer verweist. Dieser Parameter wird ignoriert, wenn InputBuffer- NULL ist.

OutputBuffer

[out] Zeigen Sie auf einen vom Aufrufer zugewiesenen Puffer, der die Antwort (falls vorhanden) vom Minifilter empfängt.

OutputBuffer- ein Zeiger auf einen unformatierten, entsperrten Benutzermoduspuffer ist. Dieser Zeiger ist nur im Kontext des Benutzermodusprozesses gültig und darf nur innerhalb eines try/except-Block aufgerufen werden.

FltMgr ruft ProbeForWrite- auf, um diesen Zeiger zu überprüfen, stellt jedoch nicht sicher, dass der Puffer ordnungsgemäß ausgerichtet ist. Wenn der Puffer Strukturen mit Ausrichtungsanforderungen enthält, ist der Minifilter für die Durchführung aller erforderlichen Ausrichtungsprüfungen verantwortlich. Dazu kann der Minifilter das IS_ALIGNED Makro verwenden, wie im MiniSpy Beispiel-Minifilter gezeigt.

Dieser Parameter ist optional und kann NULL sein.

OutputBufferLength

[in] Größe des Puffers in Bytes, auf den OutputBuffer verweist. Dieser Parameter wird ignoriert, wenn OutputBuffer- NULL ist.

ReturnOutputBufferLength

[out] Zeiger auf eine vom Aufrufer zugewiesene Variable, die die Anzahl der im Puffer zurückgegebenen Bytes empfängt, auf die OutputBuffer verweist.

Rückgabewert

MessageNotifyCallback- gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls wird ein entsprechender NTSTATUS-Wert zurückgegeben, z. B.:

Rückgabecode Bedeutung
STATUS_INSUFFICIENT_RESOURCES Es gibt nicht genügend Ressourcen, um den Vorgang abzuschließen.
STATUS_INVALID_PARAMETER Mindestens ein Eingabeparameter ist ungültig.

Bemerkungen

Minifilter können optional MessageNotifyCallbackimplementieren. Wenn ein Minifilter diesen Rückruf nicht implementiert, erhält jede Anforderung vom Benutzermodus zum Senden von Daten an den Port eine Fehlermeldung.

Weitere Informationen finden Sie unter Kommunikation zwischen Benutzermodus und Minifiltern.

Anforderungen

Anforderung Wert
Header- fltkernel.h
Library FltMgr.lib
DLL- FltMgr.sys
IRQL- PASSIVE_LEVEL

Siehe auch

ConnectNotifyCallback-

FilterSendMessage-

FltCreateCommunicationPort