Partager via


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.

RemarqueFwpsPendOperation0 est une version spécifique de FwpsPendOperation. Pour plus d’informations , consultez WFP Version-Independent Names and Targeting Specific Versions of Windows .
 

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
STATUS_SUCCESS
Le traitement des paquets a été suspendu avec succès.
STATUS_FWP_CANNOT_PEND
Un appel a été effectué à FwpsPendOperation0 dans une opération de classification de la réautorisation. Pour plus d'informations, consultez la section Notes.
STATUS_FWP_NULL_POINTER
Un ou plusieurs paramètres ne sont pas valides.
STATUS_FWP_TCPIP_NOT_READY
La pile réseau TCP/IP n’est pas prête à autoriser cette opération.
Autres codes status
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

Voir aussi

FWPS_CLASSIFY_OUT0

FWPS_INCOMING_METADATA_VALUES0

FwpsCompleteOperation0

classifyFn