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 |
---|---|
|
Fragt tief ab, im Gegensatz zur ersten Ebene. |
|
Gibt nur Container zurück. |
|
Geben Sie keine Container zurück. |
|
Gibt nach Möglichkeit Ergebnisse in der Reihenfolge der Entfernung zurück. Das Maß für die Entfernung ist anbieterspezifisch. |
|
Ruft den Namen als lpszServiceInstanceName ab. |
|
Ruft den Typ als lpServiceClassId ab. |
|
Ruft die Version als lpVersion ab. |
|
Ruft den Kommentar als lpszComment ab. |
|
Ruft die Adressen als lpcsaBuffer ab. |
|
Ruft die privaten Daten als lpBlob ab. |
|
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. |
|
Ruft die für die Anforderung verwendete Abfragezeichenfolge ab. |
|
Eine Gruppe von Flags, die alle LUP_RETURN_*-Werte abruft. |
|
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. |
|
Wenn der Anbieter Informationen zwischengespeichert hat, ignoriert den Cache und fragt den Namespace ab. |
|
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 |
---|---|
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. | |
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. | |
Der puffer lpqsResults war zu klein, um eine WSAQUERYSET-Gruppe zu enthalten. | |
Mindestens ein erforderlicher Parameter war ungültig oder fehlte. | |
Das angegebene Nachschlagehandle ist ungültig. | |
Die WS2_32.DLL wurde nicht initialisiert. Die Anwendung muss zuerst WSAStartup aufrufen, bevor sie Windows Sockets-Funktionen aufruft. | |
Der Name wurde in der Datenbank gefunden, aber es wurden keine Daten gefunden, die den angegebenen Einschränkungen entsprechen. | |
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 |