Fonction de rappel LPNSPLOOKUPSERVICENEXT (ws2spi.h)

La fonction NSPLookupServiceNext est appelée après avoir obtenu un handle à partir d’un appel précédent à NSPLookupServiceBegin afin de récupérer les informations de service demandées.

Le fournisseur transmet une structure WSAQUERYSET dans la mémoire tampon lpqsResults . Le client doit appeler cette fonction jusqu’à ce qu’elle retourne WSA_E_NOMORE, indiquant que tous les WSAQUERYSET ont été retournés.

Syntaxe

LPNSPLOOKUPSERVICENEXT Lpnsplookupservicenext;

INT Lpnsplookupservicenext(
  [in]      HANDLE hLookup,
  [in]      DWORD dwControlFlags,
  [in, out] LPDWORD lpdwBufferLength,
  [out]     LPWSAQUERYSETW lpqsResults
)
{...}

Paramètres

[in] hLookup

Handle retourné par l’appel précédent à WSALookupServiceBegin.

[in] dwControlFlags

Indicateurs utilisés pour contrôler l’opération suivante. Actuellement, seule LUP_FLUSHPREVIOUS est définie comme un moyen de gérer un jeu de résultats trop volumineux. Si une application ne peut pas fournir une mémoire tampon suffisamment grande, la définition de LUP_FLUSHPREVIOUS indique au fournisseur d’ignorer le dernier jeu de résultats, qui était trop volumineux, et de passer au jeu suivant pour cet appel.

[in, out] lpdwBufferLength

Taille, en octets, de l’entrée contenue dans la mémoire tampon pointée par lpqsResults. En sortie, si la fonction échoue et que l’erreur est WSAEFAULT, elle contient la taille minimale, en octets à passer pour que l’objet lpqsResults récupère l’enregistrement.

[out] lpqsResults

Pointeur vers un bloc de mémoire qui contiendra, au retour, un jeu de résultats dans une structure WSAQUERYSET .

Valeur retournée

La fonction doit retourner NO_ERROR (zéro) si la routine réussit. Elle doit retourner SOCKET_ERROR (–1) si la routine échoue et doit définir le code d’erreur approprié à l’aide de WSASetLastError.

Code d'erreur Signification
WSA_E_CANCELLED
Un appel à NSPLookupServiceEnd a été effectué pendant le traitement de cet appel. L’appel a été annulé. Les données de la mémoire tampon lpqsResults ne sont pas définies.

Dans Windows Sockets 2, les codes d’erreur en conflit sont définis pour WSAECANCELLED (10103) et WSA_E_CANCELLED (10111). Le code d’erreur WSAECANCELLED sera supprimé dans une version ultérieure et seul WSA_E_CANCELLED restera. Les fournisseurs d’espaces de noms doivent utiliser le code d’erreur WSA_E_CANCELLED pour maintenir la compatibilité avec le plus large éventail possible d’applications.

WSA_E_NO_MORE
Il n’y a plus de données disponibles.

Dans Windows Sockets 2, des codes d’erreur en conflit sont définis pour WSAENOMORE (10102) et WSA_E_NO_MORE (10110). Le code d’erreur WSAENOMORE sera supprimé dans une version ultérieure et seul WSA_E_NO_MORE restera. Les fournisseurs d’espaces de noms doivent utiliser le code d’erreur WSA_E_NO_MORE pour maintenir la compatibilité avec le plus large éventail possible d’applications.

WSA_INVALID_HANDLE
Le handle de recherche spécifié n’est pas valide.
WSA_NOT_ENOUGH_MEMORY
La mémoire disponible est insuffisante pour effectuer cette opération.
WSAEFAULT
La mémoire tampon lpqsResults était trop petite pour contenir un jeu WSAQUERYSET .
WSAEINVAL
Un ou plusieurs paramètres ne sont pas valides ou manquants pour ce fournisseur.
WSAEOPNOTSUPP
L'opération n'est pas prise en charge. Cette erreur est retournée si le fournisseur d’espaces de noms n’implémente pas cette fonction.
WSANO_DATA
Le nom a été trouvé dans la base de données, mais aucune donnée correspondant aux restrictions spécifiées n’a été trouvée.
WSASERVICE_NOT_FOUND
Le service est inconnu. Le service est introuvable dans l’espace de noms spécifié.

Remarques

Les dwControlFlags spécifiés dans cette fonction et ceux spécifiés au moment de NSPLookupServiceBegin sont gérés en tant que « restrictions » à des fins de combinaison. Les restrictions sont combinées entre celles de l’heure NSPLookupServiceBegin et celles de NSPLookupServiceNext time. Par conséquent, les indicateurs de NSPLookupServiceNext ne peuvent jamais augmenter la quantité de données retournées au-delà de ce qui a été demandé dans NSPLookupServiceBegin, bien que ce ne soit pas une erreur de spécifier plus ou moins d’indicateurs. Les indicateurs spécifiés dans un NSPLookupServiceNext donné s’appliquent uniquement à cet appel.

Les LUP_FLUSHPREVIOUS et LUP_RES_SERVICE dwControlFlags sont des exceptions à la règle de restrictions combinées (car il s’agit d’indicateurs de comportement au lieu d’indicateurs de « restriction »). Si l’un ou l’autre des indicateurs est utilisé dans NSPLookupServiceNext, ils ont leur effet défini quel que soit le paramètre des mêmes indicateurs dans NSPLookupServiceBegin.

Par exemple, si LUP_RETURN_VERSION est spécifié dans NSPLookupServiceBegin, le fournisseur de services récupère les enregistrements, y compris la version. Si LUP_RETURN_VERSION n’est pas spécifié dans NSPLookupServiceNext, les informations retournées n’incluent pas la version, même si elle était disponible. Aucune erreur n’est générée.

Par exemple, si LUP_RETURN_BLOB n’est pas spécifié dans NSPLookupServiceBegin, mais dans NSPLookupServiceNext, les informations retournées n’incluent pas les données privées. Aucune erreur n’est générée.

Résultats de la requête

Le tableau suivant répertorie WSAQUERYSET et décrit comment les résultats de requête sont représentés dans la structure WSAQUERYSET . Pour plus d’informations, consultez Structures de données liées aux requêtes.
Nom du membre WSAQUERYSET Interprétation du résultat
**dwSize** Sera défini sur sizeof(WSAQUERYSET). Il est utilisé comme mécanisme de contrôle de version.
**dwOutputFlags** L’indicateur **RESULT_IS_ALIAS** indique qu’il s’agit d’un résultat d’alias.
**lpszServiceInstanceName** Fait référence à la chaîne qui contient le nom du service.
**lpServiceClassId** GUID correspondant à la classe de service.
**lpVersion** Référence le numéro de version du service particulier instance.
**lpszComment** facultatif. Chaîne de commentaire fournie par le service instance.
**dwNameSpace** Espace de noms dans lequel le service instance a été trouvé.
**lpNSProviderId** Identifie le fournisseur d’espaces de noms spécifique qui a fourni ce résultat de requête.
**lpszContext** Spécifie le point de contexte dans un espace de noms hiérarchique où se trouve le service.
**dwNumberOfProtocols** Non défini pour les résultats.
**lpafpProtocols** Non définies pour les résultats, toutes les informations de protocole nécessaires se situent dans les structures CSADDR_INFO .
**lpszQueryString** Lorsque dwControlFlags inclut **LUP_RETURN_QUERY_STRING**, ce membre retourne le reste non évalué du **lpszServiceInstanceName** spécifié dans la requête d’origine. Par exemple, dans un espace de noms qui identifie les services par des noms hiérarchiques qui spécifient un nom d’hôte et un chemin de fichier dans cet hôte, l’adresse retournée peut être l’adresse de l’hôte et le reste non traité peut être le chemin du fichier. Si **lpszServiceInstanceName** est entièrement analysé et que **LUP_RETURN_QUERY_STRING** est utilisé, ce membre est null ou pointe vers une chaîne de longueur nulle.
**dwNumberOfCsAddrs** Indique le nombre d’éléments dans le tableau de structures CSADDR_INFO .
**lpcsaBuffer** Pointeur vers un tableau de structures CSADDR_INFO , avec une adresse de transport complète contenue dans chaque élément.
**lpBlob** facultatif. Pointeur vers une entité spécifique au fournisseur.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête ws2spi.h

Voir aussi

CSADDR_INFO

NSPLookupServiceBegin

NSPLookupServiceEnd

NSP_ROUTINE

WSAQUERYSET

WSASetLastError