code de contrôle SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS
L’opération de contrôle E/S du socket SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS permet à un client Winsock de récupérer l’enregistrement de redirection pour une connexion redirigée.
Un enregistrement de redirection PAM est une mémoire tampon de données opaques que le PAM doit définir sur une connexion proxy sortante afin que la connexion redirigée et la connexion d’origine soient logiquement liées.
Note La requête SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS ne peut être utilisée que si la connexion a été redirigée au niveau de la couche FWPS_LAYER_ALE_CONNECT_REDIRECT_V4 ou FWPS_LAYER_ALE_CONNECT_REDIRECT_V6 par un client PAM.
Pour plus d’informations sur la redirection, consultez Utilisation de la redirection de liaison ou de connexion.
Pour interroger l’enregistrement de redirection de la connexion redirigée, un client Winsock appelle la fonction WskControlSocket avec les paramètres suivants.
Paramètre | Valeur |
---|---|
RequestType |
WskIoctl |
ControlCode |
SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS |
Niveau |
0 |
InputSize |
0 |
InputBuffer |
NULL |
OutputSize |
Taille, en octets, de la mémoire tampon vers laquelle pointe le paramètre OutputBuffer . |
OutputBuffer |
Pointeur vers la mémoire tampon qui reçoit l’enregistrement de redirection pour la connexion TCP acceptée. La taille de la mémoire tampon est spécifiée dans le paramètre OutputSize . |
OutputSizeReturned |
Pointeur vers une variable de type ULONG qui reçoit le nombre d’octets de données copiées dans la mémoire tampon vers laquelle pointe le paramètre OutputBuffer . |
Irp |
Pointeur vers un IRP. |
L’appelant peut effectuer cette requête de l’une des manières suivantes :
- Il peut définir outputBuffer sur une mémoire tampon volumineuse d’environ 1 Ko. Si la taille de la mémoire tampon de sortie n’est pas suffisante, WskControlSocket retourne un STATUS_BUFFER_TOO_SMALL et OutputSizeReturned contient la taille requise de la mémoire tampon. Une mémoire tampon plus importante peut ensuite être allouée et WskControlSocket appelé à nouveau avec la requête SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS et OutputBuffer définies sur la mémoire tampon plus grande.
- Il peut également définir le paramètre OutputSize sur 0 et outputBuffer sur NULL, puis appeler WskControlSocket. Une fois l’opération terminée, la fonction WskControlSocket récupère la taille de mémoire tampon de sortie, en octets, dans le paramètre OutputSizeReturned . Une mémoire tampon de taille appropriée peut ensuite être allouée et WskControlSocket appelée à nouveau avec la requête SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS et OutputBuffer définies sur la mémoire tampon.
Note Il est également possible d’effectuer cette requête dans une application en mode utilisateur à l’aide de SIO_QUERY_WFP_CONNECTION_REDIRECT_RECORDS (SDK).
Pour ce type de requête, le client Winsock doit spécifier un pointeur vers un IRP et un pointeur vers sa routine d’achèvement. L’IRP peut être transmis au client par un pilote supérieur ou le client peut choisir d’allouer l’IRP. Pour spécifier la routine d’achèvement, le client doit appeler IoSetCompletionRoutine. Pour plus d’informations, consultez Utilisation des irps avec les fonctions du noyau Winsock.
Le client Winsock ne doit pas libérer la mémoire tampon allouée tant que l’IRP n’est pas terminé par le sous-système WSK. Lorsque le sous-système WSK termine l’IRP, il avertit le client en appelant la routine d’achèvement. Une référence à cette mémoire tampon est transmise au client par le sous-système WSK dans le paramètre Context de la routine d’achèvement. La taille de la mémoire tampon est stockée dans Irp-IoStatus.Information>.
Le client peut obtenir le status de l’IRP en vérifiant Irp-IoStatus.Status>. Irp-> IoStatus.Status sera défini sur STATUS_SUCCESS si la demande réussit. Sinon, il contiendra STATUS_INTEGER_OVERFLOW, STATUS_NOT_FOUND, STATUS_BUFFER_TOO_SMALL ou STATUS_ACCESS_DENIED si l’appel échoue.
Client minimal pris en charge |
Windows 8 |
Serveur minimal pris en charge |
Windows Server 2012 |
En-tête |
Mstcpip.h |
IRQL |
PASSIVE_LEVEL |
Utilisation de la redirection de liaison ou de connexion
Utilisation des IIP avec les fonctions du noyau Winsock
SIO_QUERY_WFP_CONNECTION_REDIRECT_CONTEXT