Partager via


Fonction de rappel LPNSPLOOKUPSERVICENEXT (ws2spi.h)

La fonction NSPLookupServiceNext est appelée après avoir obtenu un handle 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 toutes les WSAQUERYSET ont été retournées.

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 volumineuse, le paramètre LUP_FLUSHPREVIOUS demande au fournisseur d’ignorer le dernier jeu de résultats, qui était trop volumineux et passez à l’ensemble suivant pour cet appel.

[in, out] lpdwBufferLength

Taille, en octets, en 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 le lpqsResults récupérer l’enregistrement.

[out] lpqsResults

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

Valeur de retour

La fonction doit retourner NO_ERROR (zéro) si la routine réussit. Elle doit retourner SOCKET_ERROR (–1) si la routine échoue et qu’elle 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 seuls WSA_E_CANCELLED resteront. Les fournisseurs d’espaces de noms doivent utiliser le code d’erreur WSA_E_CANCELLED pour maintenir la compatibilité avec la plus large gamme possible d’applications.

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

Dans Windows Sockets 2, les 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 seuls WSA_E_NO_MORE resteront. Les fournisseurs d’espaces de noms doivent utiliser le code d’erreur WSA_E_NO_MORE pour maintenir la compatibilité avec la plus large gamme possible d’applications.

WSA_INVALID_HANDLE
Le handle de recherche spécifié n’est pas valide.
WSA_NOT_ENOUGH_MEMORY
Il n’y a pas suffisamment de mémoire disponible pour effectuer cette opération.
WSAEFAULT
La mémoire tampon lpqsResults était trop petite pour contenir un jeu de 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 données, 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ées dans cette fonction et celles spécifiées au moment de NSPLookupServiceBegin sont gérées comme des « restrictions » à des fins de combinaison. Les restrictions sont combinées entre celles de NSPLookupServiceBegin temps et celles à NSPLookupServiceNext heure. Par conséquent, les indicateurs à NSPLookupServiceNext ne peuvent jamais augmenter la quantité de données retournées au-delà de ce qui a été demandé à NSPLookupServiceBegin, bien qu’il ne s’agit pas d’une erreur pour spécifier plus ou moins d’indicateurs. Les indicateurs spécifiés à un NSPLookupServiceNext s’appliquent uniquement à cet appel.

Les dwControlFlagsLUP_FLUSHPREVIOUS et LUP_RES_SERVICE 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 indicateur est utilisé dans NSPLookupServiceNext, ils ont leur effet défini, quel que soit le paramètre des mêmes indicateurs à NSPLookupServiceBegin.

Par exemple, si LUP_RETURN_VERSION est spécifié à NSPLookupServiceBegin, le fournisseur de services récupère les enregistrements, y compris la version. Si LUP_RETURN_VERSION n’est pas spécifié à 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é à NSPLookupServiceBegin, mais qu’elle est spécifiée à 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 Query-Related structures de données.
Nom du membre WSAQUERYSET Interprétation des résultats
**dwSize** Est défini sur sizeof(WSAQUERYSET). Il s’agit d’un mécanisme de contrôle de version.
**dwOutputFlags** **RESULT_IS_ALIAS** indicateur 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 de l’instance de service particulière.
**lpszComment** Optionnel. Chaîne de commentaire fournie par l’instance de service.
**dwNameSpace** Espace de noms dans lequel l’instance de service a été trouvée.
**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 auquel 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 traité 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 d’accès 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 d’accès au fichier. Si **lpszServiceInstanceName** est entièrement analysé et **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** Optionnel. Pointeur vers une entité spécifique au fournisseur.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête ws2spi.h

Voir aussi

CSADDR_INFO

NSPLookupServiceBegin

NSPLookupServiceEnd

NSP_ROUTINE

WSAQUERYSET

WSASetLastError