WSALookupServiceNextA-Funktion (winsock2.h)

Die WSALookupServiceNext-Funktion wird aufgerufen, nachdem ein Handle von einem vorherigen Aufruf von WSALookupServiceBegin abgerufen wurde, um die angeforderten Dienstinformationen abzurufen.

Der Anbieter gibt eine WSAQUERYSET-Struktur im Puffer lpqsResults zurück. Der Client sollte diese Funktion weiterhin aufrufen, bis er WSA_E_NO_MORE zurückgibt, was angibt, dass alle WSAQUERYSET zurückgegeben wurden.

Syntax

INT WSAAPI WSALookupServiceNextA(
  [in]      HANDLE         hLookup,
  [in]      DWORD          dwControlFlags,
  [in, out] LPDWORD        lpdwBufferLength,
  [out]     LPWSAQUERYSETA lpqsResults
);

Parameter

[in] hLookup

Ein Handle, das vom vorherigen Aufruf von WSALookupServiceBegin zurückgegeben wurde.

[in] dwControlFlags

Eine Gruppe von Flags, die den Vorgang steuern. Die werte, die im dwControlFlags-Parameter an die WSALookupServiceBegin-Funktion übergeben werden, bestimmen die möglichen Kriterien. Alle Werte, die im dwControlFlags-Parameter an die WSALookupServiceNext-Funktion übergeben werden, schränken die Kriterien für die Dienstsuche weiter ein.

Derzeit wird LUP_FLUSHPREVIOUS als Mittel definiert, um mit einem zu großen Ergebnissatz fertig zu werden. Wenn eine Anwendung keinen ausreichend großen Puffer bereitstellen kann (oder kann), weist das Festlegen LUP_FLUSHPREVIOUS den Anbieter an, das letzte Resultset zu verwerfen – das zu groß war – und mit dem nächsten Satz für diesen Aufruf fortzufahren.

Unterstützte Werte für den dwControlFlags-Parameter werden in der Winsock2.h-Headerdatei definiert und können eine Kombination aus den folgenden Optionen sein.

Flag Bedeutung
LUP_DEEP
0x0001
Fragt tief ab, im Gegensatz zur ersten Ebene.
LUP_CONTAINERS
0x0002
Gibt nur Container zurück.
LUP_NOCONTAINERS
0x0004
Geben Sie keine Container zurück.
LUP_NEAREST
0x0008
Gibt nach Möglichkeit Ergebnisse in der Reihenfolge der Entfernung zurück. Das Maß für die Entfernung ist anbieterspezifisch.
LUP_RETURN_NAME
0x0010
Ruft den Namen als lpszServiceInstanceName ab.
LUP_RETURN_TYPE
0x0020
Ruft den Typ als lpServiceClassId ab.
LUP_RETURN_VERSION
0x0040
Ruft die Version als lpVersion ab.
LUP_RETURN_COMMENT
0x0080
Ruft den Kommentar als lpszComment ab.
LUP_RETURN_ADDR
0x0100
Ruft die Adressen als lpcsaBuffer ab.
LUP_RETURN_BLOB
0x0200
Ruft die privaten Daten als lpBlob ab.
LUP_RETURN_ALIASES
0x0400
Alle verfügbaren Aliasinformationen werden in aufeinander folgenden Aufrufen von WSALookupServiceNext zurückgegeben, und für jeden zurückgegebenen Alias ist das flag RESULT_IS_ALIAS festgelegt.
LUP_RETURN_QUERY_STRING
0x0800
Ruft die für die Anforderung verwendete Abfragezeichenfolge ab.
LUP_RETURN_ALL
0x0FF0
Eine Gruppe von Flags, die alle LUP_RETURN_*-Werte abruft.
LUP_FLUSHPREVIOUS
0x1000
Wird als Wert für den dwControlFlags-Parameter in WSALookupServiceNext verwendet. Durch Festlegen dieses Flags wird der Anbieter angewiesen, das letzte Resultset zu verwerfen, das für den angegebenen Puffer zu groß war, und zum nächsten Resultset überzugehen.
LUP_FLUSHCACHE
0x2000
Wenn der Anbieter Informationen zwischengespeichert hat, ignoriert den Cache und fragt den Namespace ab.
LUP_RES_SERVICE
0x8000
Dies gibt an, ob sich die Hauptantwort im Remote- oder lokalen Teil CSADDR_INFO Struktur befindet. Der andere Teil muss in beiden Fällen verwendbar sein.

[in, out] lpdwBufferLength

Bei der Eingabe die Anzahl der Bytes, die im Puffer enthalten sind, auf die von lpqsResults verwiesen wird. Wenn die Funktion bei der Ausgabe fehlschlägt und der Fehler WSAEFAULT ist, enthält sie die mindeste Anzahl von Bytes, die für die lpqsResults zum Abrufen des Datensatzes übergeben werden sollen.

[out] lpqsResults

Ein Zeiger auf einen Speicherblock, der bei der Rückgabe ein Resultset in einer WSAQUERYSET-Struktur enthält.

Rückgabewert

Der Rückgabewert ist 0, wenn der Vorgang erfolgreich war. Andernfalls wird der Wert SOCKET_ERROR zurückgegeben, und eine bestimmte Fehlernummer kann durch Aufrufen von WSAGetLastError abgerufen werden.

Fehlercode Bedeutung
WSA_E_CANCELLED
Ein Aufruf von WSALookupServiceEnd wurde ausgeführt, während dieser Aufruf noch verarbeitet wurde. Der Aufruf wurde abgebrochen. Die Daten im puffer lpqsResults sind nicht definiert. In Windows Sockets Version 2 werden konfliktierende Fehlercodes für WSAECANCELLED (10103) und WSA_E_CANCELLED (10111) definiert. Der Fehlercode WSAECANCELLED wird in einer zukünftigen Version entfernt, und nur WSA_E_CANCELLED bleibt erhalten. Für Windows Sockets Version 2 sollten Anwendungen jedoch sowohl auf WSAECANCELLED als auch auf WSA_E_CANCELLED auf größtmögliche Kompatibilität mit Namespaceanbietern überprüfen, die beides verwenden.
WSA_E_NO_MORE
Es sind keine weiteren Daten verfügbar. In Windows Sockets Version 2 werden konfliktierende Fehlercodes für WSAENOMORE (10102) und WSA_E_NO_MORE (10110) definiert. Der Fehlercode WSAENOMORE wird in einer zukünftigen Version entfernt, und nur WSA_E_NO_MORE bleiben erhalten. Für Windows Sockets Version 2 sollten Anwendungen jedoch sowohl auf WSAENOMORE als auch auf WSA_E_NO_MORE auf größtmögliche Kompatibilität mit Namensraumanbietern überprüfen, die beides verwenden.
WSAEFAULT
Der puffer lpqsResults war zu klein, um eine WSAQUERYSET-Gruppe zu enthalten.
WSAEINVAL
Mindestens ein erforderlicher Parameter war ungültig oder fehlte.
WSA_INVALID_HANDLE
Das angegebene Nachschlagehandle ist ungültig.
WSANOTINITIALISIERT
Die WS2_32.DLL wurde nicht initialisiert. Die Anwendung muss zuerst WSAStartup aufrufen, bevor sie Windows Sockets-Funktionen aufruft.
WSANO_DATA
Der Name wurde in der Datenbank gefunden, aber es wurden keine Daten gefunden, die den angegebenen Einschränkungen entsprechen.
WSA_NOT_ENOUGH_MEMORY
Es war nicht genügend Arbeitsspeicher vorhanden, um den Vorgang auszuführen.

Hinweise

Der in dieser Funktion angegebene dwControlFlags-Parameter und die zum Zeitpunkt von WSALookupServiceBegin angegebenen Parameter werden als Einschränkungen für den Zweck der Kombination behandelt. Die Einschränkungen werden zwischen den Einschränkungen zur WSALookupServiceBegin-Zeit und den Einschränkungen zur WSALookupServiceNext-Zeit kombiniert. Daher können die Flags bei WSALookupServiceNext niemals die Menge der zurückgegebenen Daten über die anforderungen hinaus erhöhen, die bei WSALookupServiceBegin angefordert wurden, obwohl es kein Fehler ist, mehr oder weniger Flags anzugeben. Die in einem angegebenen WSALookupServiceNext angegebenen Flags gelten nur für diesen Aufruf.

Die dwControlFlags-LUP_FLUSHPREVIOUS und LUP_RES_SERVICE sind Ausnahmen von der kombinierten Einschränkungsregel (da es sich um Verhaltensflags anstelle von Einschränkungsflags handelt). Wenn eines dieser Flags in WSALookupServiceNext verwendet wird, haben sie ihre definierte Wirkung unabhängig von der Einstellung der gleichen Flags in WSALookupServiceBegin.

Wenn beispielsweise LUP_RETURN_VERSION unter WSALookupServiceBegin angegeben ist, ruft der Dienstanbieter Datensätze einschließlich der Version ab. Wenn LUP_RETURN_VERSION unter WSALookupServiceNext NICHT angegeben ist, enthalten die zurückgegebenen Informationen nicht die Version, obwohl sie verfügbar war. Es wird kein Fehler generiert.

Wenn beispielsweise LUP_RETURN_BLOB nicht unter WSALookupServiceBegin , sondern unter WSALookupServiceNext angegeben ist, enthalten die zurückgegebenen Informationen keine privaten Daten. Es wird kein Fehler generiert.

Wenn die WSALookupServiceNext-Funktion mit einem WSAEFAULT-Fehler fehlschlägt, weist dies darauf hin, dass der Puffer, auf den der lpqsResults-Parameter verweist, zu klein war, um die Abfrageergebnisse zu enthalten. Ein neuer Puffer für ein WSAQUERYSET sollte mit einer Größe bereitgestellt werden, die durch den Wert angegeben wird, auf den der lpdwBufferLength-Parameter verweist. Für diesen neuen Puffer für WSAQUERYSET müssen einige der Elemente des WSAQUERYSET angegeben sein, bevor die WSALookupServiceNext-Funktion erneut aufgerufen wird. Mindestens muss der dwSize-Member des WSAQUERYSET auf die neue Größe des Puffers festgelegt werden.

Abfrageergebnisse

In der folgenden Tabelle wird beschrieben, wie die Abfrageergebnisse in der WSAQUERYSET-Struktur dargestellt werden.
WSAQUERYSET-Member Ergebnisinterpretation
dwSize Wird auf sizeof( WSAQUERYSET) festgelegt. Dies wird als Versionsverwaltungsmechanismus verwendet.
dwOutputFlags RESULT_IS_ALIAS Flag gibt an, dass es sich um ein Aliasergebnis handelt.
lpszServiceInstanceName Die referenzierte Zeichenfolge enthält den Dienstnamen.
lpServiceClassId Die GUID, die der Dienstklasse entspricht.
lpVersion Verweist auf die Versionsnummer des jeweiligen Diensts instance.
lpszComment Optionale Kommentarzeichenfolge, die vom Dienst instance angegeben wird.
dwNameSpace Namespace, in dem der Dienst instance gefunden wurde.
lpNSProviderId Gibt den spezifischen Namespaceanbieter an, der dieses Abfrageergebnis bereitgestellt hat.
lpszContext Gibt den Kontextpunkt in einem hierarchischen Namespace an, an dem sich der Dienst befindet.
dwNumberOfProtocols Undefiniert für Ergebnisse.
lpafpProtocols Undefiniert für Ergebnisse, sind alle erforderlichen Protokollinformationen in den CSADDR_INFO-Strukturen enthalten.
lpszQueryString Wenn dwControlFlags LUP_RETURN_QUERY_STRING enthält, gibt dieser Parameter den nicht analysierten Rest des in der ursprünglichen Abfrage angegebenen lpszServiceInstanceName zurück. In einem Namespace, der Dienste anhand hierarchischer Namen identifiziert, die einen Hostnamen und einen Dateipfad innerhalb dieses Hosts angeben, kann die zurückgegebene Adresse die Hostadresse und der nicht analysierte Rest der Dateipfad sein. Wenn lpszServiceInstanceName vollständig analysiert und LUP_RETURN_QUERY_STRING verwendet wird, ist dieser Parameter NULL oder zeigt auf eine Zeichenfolge der Länge Null.
dwNumberOfCsAddrs Gibt die Anzahl der Elemente im Array von CSADDR_INFO-Strukturen an.
lpcsaBuffer Ein Zeiger auf ein Array von CSADDR_INFO-Strukturen , wobei in jedem Element eine vollständige Transportadresse enthalten ist.
lpBlob (Optional) Dies ist ein Zeiger auf eine anbieterspezifische Entität.
 

Windows Phone 8: Die WSALookupServiceNextW-Funktion wird für Windows Phone Store-Apps auf Windows Phone 8 und höher unterstützt.

Windows 8.1 und Windows Server 2012 R2: Die WSALookupServiceNextW-Funktion wird für Windows Store-Apps unter Windows 8.1, Windows Server 2012 R2 und höher unterstützt.

Hinweis

Der winsock2.h-Header definiert WSALookupServiceNext als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 8.1, Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile winsock2.h
Bibliothek Ws2_32.lib
DLL Ws2_32.dll

Weitere Informationen

Bluetooth und WSALookupServiceNext

WSALookupServiceBegin

WSALookupServiceEnd

WSAQUERYSET

Winsock-Funktionen

Winsock-Referenz