FwpsPendOperation0, fonction (fwpsk.h)
La fonction FwpsPendOperation0 est appelée par une légende pour suspendre le traitement des paquets en attente d’une autre opération.
Syntaxe
NTSTATUS FwpsPendOperation0(
[in] HANDLE completionHandle,
[out] HANDLE *completionContext
);
Paramètres
[in] completionHandle
Handle d’achèvement requis pour mettre fin à l’opération de filtrage en cours. Ce paramètre est obtenu à partir du membre completionHandle de la structure FWPS_INCOMING_METADATA_VALUES0 passée à la fonction classifyFn du pilote de légende.
[out] completionContext
Handle du contexte d’achèvement de cette opération pend. Lorsque la légende est prête à reprendre le traitement des paquets, elle appelle la fonction FwpsCompleteOperation0 avec la valeur de ce paramètre comme paramètre input completionContext .
Valeur retournée
La fonction FwpsPendOperation0 retourne l’un des codes NTSTATUS suivants.
Code de retour | Description |
---|---|
|
Le traitement des paquets a été suspendu avec succès. |
|
Un appel a été effectué à FwpsPendOperation0 dans une opération de classification de la réautorisation. Pour plus d'informations, consultez la section Notes. |
|
Un ou plusieurs paramètres ne sont pas valides. |
|
La pile réseau TCP/IP n’est pas prête à autoriser cette opération. |
|
Une erreur est survenue. |
Remarques
La légende doit conserver la valeur du paramètre completionContext jusqu’à ce qu’elle reprenne le traitement des paquets. Une fois l’opération qui a demandé l’appel à cette fonction est terminée, la légende doit appeler la fonction FwpsCompleteOperation0 , en lui passant la valeur du paramètre completionContext .
Une légende peut appeler cette fonction uniquement pour mettre en attente un paquet provenant des couches de filtrage FWPM_LAYER_ALE_RESOURCE_ASSIGNMENT_ Xxx, FWPM_LAYER_ALE_AUTH_LISTEN_ Xxx ou FWPM_LAYER_ALE_AUTH_CONNECT_ Xxx. Une légende peut mettre en attente l’opération de traitement en cours sur un paquet lorsque la légende doit effectuer un traitement sur l’une de ces couches qui peut prendre un intervalle long ou qui doit se produire à IRQL = PASSIVE_LEVEL si l’IRQL > actuel PASSIVE_LEVEL.
Pour terminer une connexion précédemment suspendu à la couche xxx FWPS_LAYER_ALE_AUTH_RECV_ACCEPT_, le pilote de légende doit réinjecter le paquet cloné au niveau de cette couche et appeler la fonction FwpsCompleteOperation0 .
Pour pouvoir mettre en attente le traitement des paquets, la fonction classifyFn du pilote de légende doit définir le membre actionType de la structure FWPS_CLASSIFY_OUT0 sur FWP_ACTION_BLOCK et le membre Flags sur FWPS_CLASSIFY_OUT_FLAG_ABSORB.
Les connexions pendantes sont réauthentifiées après l’exécution de la fonction FwpsCompleteOperation0 . Les connexions TCP, si elles sont autorisées, sont créées en effectuant l’opération d’établissement d’une liaison, mais les connexions non-TCP créent uniquement des entrées d’état. Toutes les données de paquets suspendus sont vidées de la mémoire lorsque la fonction FwpsPendOperation0 se termine. Les applications doivent donc retransmettre ces paquets après l’exécution de FwpsCompleteOperation0 . Les légendes peuvent mettre en mémoire tampon ces données et réinjecter les données en leur nom.
Seule une autorisation initiale de flux Ale (Application Layer Enforcement) peut être reportée en appelant FwpsPendOperation0 et FwpsCompleteOperation0. Si un flux ALE est réautorisé, l’indicateur FWP_CONDITION_FLAG_IS_REAUTHORIZE est défini. Un appel à FwpsPendOperation0 à partir des couches de filtrage FWPM_LAYER_ALE_AUTH_CONNECT_ Xxx ou FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_ Xxx échoue si l’indicateur de FWP_CONDITION_FLAG_IS_REAUTHORIZE est défini et que le code STATUS_FWP_CANNOT_PEND status est retourné. Pour plus d’informations, consultez Reauthorization ALE dans le Kit de développement logiciel (SDK) Windows.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows Vista. |
Plateforme cible | Universal |
En-tête | fwpsk.h (include Fwpsk.h) |
Bibliothèque | Fwpkclnt.lib |
IRQL | <= DISPATCH_LEVEL |