LPNSPLOOKUPSERVICENEXT-Rückruffunktion (ws2spi.h)

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

Der Anbieter übergibt eine WSAQUERYSET-Struktur im puffer lpqsResults . Der Client sollte diese Funktion aufrufen, bis er WSA_E_NOMORE zurückgibt, was angibt, dass alle WSAQUERYSET zurückgegeben wurden.

Syntax

LPNSPLOOKUPSERVICENEXT Lpnsplookupservicenext;

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

Parameter

[in] hLookup

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

[in] dwControlFlags

Die Flags, die zum Steuern des nächsten Vorgangs verwendet werden. Derzeit wird nur LUP_FLUSHPREVIOUS als Mittel zum Behandeln eines zu großen Resultsets definiert. Wenn eine Anwendung keinen ausreichend großen Puffer bereitstellen kann, weist das Festlegen LUP_FLUSHPREVIOUS den Anbieter an, das letzte Resultset zu verwerfen, das zu groß war, und zum nächsten Satz für diesen Aufruf zu wechseln.

[in, out] lpdwBufferLength

Die Größe in Bytes bei der Eingabe, die im Puffer enthalten ist, auf den lpqsResults verweist. Wenn die Funktion bei der Ausgabe fehlschlägt und der Fehler WSAEFAULT ist, enthält sie die Mindestgröße in Bytes, die für die LpqsResults zum Abrufen des Datensatzes übergeben werden soll.

[out] lpqsResults

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

Rückgabewert

Die Funktion sollte NO_ERROR (null) zurückgeben, wenn die Routine erfolgreich ist. Es sollte SOCKET_ERROR (–1) zurückgeben, wenn bei der Routine ein Fehler auftritt und der entsprechende Fehlercode mithilfe von WSASetLastError festgelegt werden muss.

Fehlercode Bedeutung
WSA_E_CANCELLED
Ein Aufruf von NSPLookupServiceEnd 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 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 bleiben erhalten. Namespaceanbieter sollten den WSA_E_CANCELLED Fehlercode verwenden, um die Kompatibilität mit möglichst vielen Anwendungen zu gewährleisten.

WSA_E_NO_MORE
Es sind keine weiteren Daten verfügbar.

In Windows Sockets 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. Namespaceanbieter sollten den WSA_E_NO_MORE Fehlercode verwenden, um die Kompatibilität mit möglichst vielen Anwendungen zu gewährleisten.

WSA_INVALID_HANDLE
Das angegebene Nachschlagehandle ist ungültig.
WSA_NOT_ENOUGH_MEMORY
Für diesen Vorgang ist nicht genügend Arbeitsspeicher verfügbar.
WSAEFAULT
Der puffer lpqsResults war zu klein, um eine WSAQUERYSET-Gruppe zu enthalten.
WSAEINVAL
Mindestens ein Parameter ist für diesen Anbieter ungültig oder fehlt.
WSAEOPNOTSUPP
Der Vorgang wird nicht unterstützt. Dieser Fehler wird zurückgegeben, wenn der Namespaceanbieter diese Funktion nicht implementiert.
WSANO_DATA
Der Name wurde in der Datenbank gefunden, aber es wurden keine Daten gefunden, die den angegebenen Einschränkungen entsprachen.
WSASERVICE_NOT_FOUND
Der Dienst ist unbekannt. Der Dienst kann nicht im angegebenen Namespace gefunden werden.

Hinweise

Die in dieser Funktion angegebenen dwControlFlags und die zum Zeitpunkt von NSPLookupServiceBegin angegebenen werden zum Zweck der Kombination als "Einschränkungen" behandelt. Die Einschränkungen werden zwischen den Einschränkungen zur NSPLookupServiceBegin-Zeit und den Einschränkungen zur NSPLookupServiceNext-Zeit kombiniert. Daher können die Flags bei NSPLookupServiceNext nie die Menge der zurückgegebenen Daten über die bei NSPLookupServiceBegin angeforderte Menge erhöhen, obwohl es kein Fehler ist, mehr oder weniger Flags anzugeben. Die in einem bestimmten NSPLookupServiceNext angegebenen Flags gelten nur für diesen Aufruf.

Die dwControlFlags-LUP_FLUSHPREVIOUS und LUP_RES_SERVICE sind Ausnahmen von der Regel für kombinierte Einschränkungen (da es sich um Verhaltensflags anstelle von "Einschränkungsflags") handelt. Wenn beide Flags in NSPLookupServiceNext verwendet werden, haben sie ihre definierte Wirkung unabhängig von der Einstellung der gleichen Flags in NSPLookupServiceBegin.

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

Wenn beispielsweise LUP_RETURN_BLOB nicht bei NSPLookupServiceBegin angegeben, sondern unter NSPLookupServiceNext angegeben wird, enthalten die zurückgegebenen Informationen keine privaten Daten. Es wird kein Fehler generiert.

Abfrageergebnisse

In der folgenden Tabelle wird WSAQUERYSET aufgelistet und beschrieben, wie Abfrageergebnisse in der WSAQUERYSET-Struktur dargestellt werden. Weitere Informationen finden Sie unter Abfragebezogene Datenstrukturen.
WSAQUERYSET-Membername Ergebnisinterpretation
**dwSize** Wird auf sizeof(WSAQUERYSET) festgelegt. Dies wird als Versionsverwaltungsmechanismus verwendet.
**dwOutputFlags** Das **RESULT_IS_ALIAS**-Flag gibt an, dass es sich um ein Aliasergebnis handelt.
**lpszServiceInstanceName** Verweist auf die Zeichenfolge, die den Dienstnamen enthält.
**lpServiceClassId** GUID, die der Dienstklasse entspricht.
**lpVersion** Verweist auf die Versionsnummer des jeweiligen Diensts instance.
**lpszComment** Optional. Kommentarzeichenfolge, die vom Dienst instance bereitgestellt 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** Für Ergebnisse nicht definiert.
**lpafpProtocols** Für Ergebnisse nicht definiert, sind alle erforderlichen Protokollinformationen in den CSADDR_INFO-Strukturen enthalten.
**lpszQueryString** Wenn dwControlFlags **LUP_RETURN_QUERY_STRING** enthält, gibt dieses Member den nicht analysierten Rest des **lpszServiceInstanceName** zurück, der in der ursprünglichen Abfrage angegeben wurde. 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 sein, und der nicht analysierte Rest kann der Dateipfad sein. Wenn **lpszServiceInstanceName** vollständig analysiert und **LUP_RETURN_QUERY_STRING** verwendet wird, ist dieser Member 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. Ein Zeiger auf eine anbieterspezifische Entität.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile ws2spi.h

Weitere Informationen

CSADDR_INFO

NSPLookupServiceBegin

NSPLookupServiceEnd

NSP_ROUTINE

WSAQUERYSET

WSASetLastError