PFLT_MESSAGE_NOTIFY fonction de rappel (fltkernel.h)
FltMgr appelle la fonction de rappel MessageNotifyCall back d’un minifilter chaque fois qu’une application en mode utilisateur appelle FilterSendMessage pour envoyer un message au minifilter via le port client.
Syntaxe
PFLT_MESSAGE_NOTIFY PfltMessageNotify;
NTSTATUS PfltMessageNotify(
PVOID PortCookie,
PVOID InputBuffer,
ULONG InputBufferLength,
PVOID OutputBuffer,
ULONG OutputBufferLength,
PULONG ReturnOutputBufferLength
)
{...}
Paramètres
PortCookie
[in] Pointeur vers des informations définies par minifilter qui identifient de façon unique ce port client. Lorsque le port client a été créé, le minifilter a renvoyé ce pointeur de contexte dans le paramètre ConnectionPortCookie de sa routine ConnectNotifyCall back.
InputBuffer
[in] Pointeur vers une mémoire tampon allouée par l’appelant contenant le message à envoyer au minifilter.
InputBuffer est un pointeur vers une mémoire tampon brute en mode utilisateur déverrouillée. Ce pointeur est valide uniquement dans le contexte du processus en mode utilisateur et doit être accessible uniquement à partir d’un try/except block.
fltMgr appelle ProbeForRead pour valider ce pointeur, mais il ne garantit pas que la mémoire tampon est correctement alignée. Si la mémoire tampon contient des structures qui ont des exigences d’alignement, le minifilter est chargé d’effectuer les vérifications d’alignement nécessaires. Pour ce faire, le minifiltre peut utiliser la macro IS_ALIGNED, comme indiqué dans la MiniSpy exemple de mini-filtre.
Ce paramètre est facultatif et peut être NULL.
InputBufferLength
[in] Taille, en octets, de la mémoire tampon vers laquelle InputBuffer pointe. Ce paramètre est ignoré si InputBuffer a la valeur NULL.
OutputBuffer
[out] Pointeur vers une mémoire tampon allouée par l’appelant qui reçoit la réponse, le cas échéant, à partir du minifilter.
OutputBuffer est un pointeur vers une mémoire tampon brute en mode utilisateur déverrouillée. Ce pointeur est valide uniquement dans le contexte du processus en mode utilisateur et doit être accessible uniquement à partir d’un try/except block.
FltMgr appelle ProbeForWrite pour valider ce pointeur, mais il ne garantit pas que la mémoire tampon est correctement alignée. Si la mémoire tampon contient des structures qui ont des exigences d’alignement, le minifilter est chargé d’effectuer les vérifications d’alignement nécessaires. Pour ce faire, le minifiltre peut utiliser la macro IS_ALIGNED, comme indiqué dans la MiniSpy exemple de mini-filtre.
Ce paramètre est facultatif et peut être NULL.
OutputBufferLength
[in] Taille, en octets, de la mémoire tampon vers laquelle OutputBuffer pointe. Ce paramètre est ignoré si OutputBuffer a la valeur NULL.
ReturnOutputBufferLength
[out] Pointeur vers une variable allouée par l’appelant qui reçoit le nombre d’octets retournés dans la mémoire tampon qui OutputBuffer pointe vers.
Valeur de retour
MessageNotifyCallback retourne STATUS_SUCCESS si l’opération réussit. Sinon, elle retourne une valeur NTSTATUS appropriée, par exemple :
Retourner le code | Signification |
---|---|
STATUS_INSUFFICIENT_RESOURCES | Il n’y a pas suffisamment de ressources pour terminer l’opération. |
STATUS_INVALID_PARAMETER | Un ou plusieurs paramètres d’entrée ne sont pas valides. |
Remarques
Les minifilters peuvent éventuellement implémenter MessageNotifyCallback. Si un minifilter n’implémente pas ce rappel, toute demande effectuée à partir du mode utilisateur pour envoyer des données au port reçoit une erreur.
Pour plus d’informations, consultez Communication entre le mode utilisateur et les mini-filtres.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | fltkernel.h |
bibliothèque | FltMgr.lib |
DLL | FltMgr.sys |
IRQL | PASSIVE_LEVEL |