Partager via


FilterReplyMessage, fonction (fltuser.h)

La fonction FilterReplyMessage répond à un message provenant d’un minifiltre en mode noyau.

Syntaxe

HRESULT FilterReplyMessage(
  [in] HANDLE               hPort,
  [in] PFILTER_REPLY_HEADER lpReplyBuffer,
  [in] DWORD                dwReplyBufferSize
);

Paramètres

[in] hPort

Handle de port de communication retourné par un appel précédent à FilterConnectCommunicationPort. Ce paramètre est obligatoire et ne peut pas être NULL.

[in] lpReplyBuffer

Pointeur vers une mémoire tampon allouée par l’appelant contenant la réponse à envoyer au minifiltre. La réponse doit contenir une structure FILTER_REPLY_HEADER , mais sinon, son format est défini par l’appelant. Ce paramètre est obligatoire et ne peut pas être NULL.

[in] dwReplyBufferSize

Taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre lpReplyBuffer . Consultez la section Notes.

Valeur retournée

FilterReplyMessage retourne S_OK en cas de réussite. Sinon, elle retourne une valeur d’erreur.

Notes

Une application en mode utilisateur appelle la fonction FilterReplyMessage pour répondre à un message reçu d’un minifiltre en mode noyau.

Pour obtenir un message à partir d’un minifiltre, appelez FilterGetMessage.

Pour envoyer un message à un minifiltre, appelez FilterSendMessage.

Un minifiltre envoie un message à une application en mode utilisateur en appelant FltSendMessage.

Important  

En raison des exigences de remplissage de structure (spécifiques au système), la précision est requise lorsque vous définissez la taille des mémoires tampons associées à FltSendMessage et FilterReplyMessage. Par exemple, supposons que les données doivent être envoyées (via FilterReplyMessage) à un minifiltre. Le composant en mode utilisateur peut déclarer la structure suivante pour ce faire :

typedef struct _REPLY_STRUCT
{
     FILTER_REPLY_HEADER Header;
     MY_STRUCTURE Data;  // The structure to be sent to the minifilter.
} REPLY_STRUCT, *PREPLY_STRUCT;

Compte tenu de cette structure, il peut sembler évident que l’appelant de FilterReplyMessage définirait le paramètre dwReplyBufferSize sur sizeof(REPLY_STRUCT) et le paramètre ReplyLength de FltSendMessage sur la même valeur. Toutefois, en raison des idiosyncrasies de remplissage de structure, sizeof(REPLY_STRUCT) peut être supérieur à sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT). Si tel est le cas, FltSendMessage retourne STATUS_BUFFER_OVERFLOW.

Par conséquent, nous vous recommandons d’appeler FilterReplyMessage et FltSendMessage (en tirant parti de l’exemple ci-dessus) en définissant dwReplyBufferSize et ReplyLength sur sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCT) au lieu de sizeof(REPLY_STRUCT). Cela garantit que tout remplissage supplémentaire à la fin de la structure REPLY_STRUCT est ignoré.

 

Spécifications

   
Client minimal pris en charge Disponible dans microsoft Windows 2000 Update Rollup 1 pour les systèmes d’exploitation SP4, Windows XP SP2, Windows Server 2003 SP1 et ultérieur. Non disponible dans Windows 2000 SP4 et les systèmes d’exploitation antérieurs.
Plateforme cible Universal
En-tête fltuser.h (include FltUser.h)
Bibliothèque FltLib.lib
DLL FltLib.dll

Voir aussi

FILTER_REPLY_HEADER

FilterConnectCommunicationPort

FilterGetMessage

FilterSendMessage

FltSendMessage