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 lpqsResults Puffer. Der Client sollte diese Funktion aufrufen, bis sie WSA_E_NOMOREzurü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 an WSALookupServiceBeginzurückgegeben wird.

[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, den letzten Resultset zu verwerfen, der zu groß war, und zum nächsten Satz für diesen Aufruf zu wechseln.

[in, out] lpdwBufferLength

Die Größe in Bytes für die Eingabe, die im Puffer enthalten ist, auf die durch lpqsResultsverwiesen wird. 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 übergeben werden, um den Datensatz abzurufen.

[out] lpqsResults

Ein Zeiger auf einen Speicherblock, der im Gegenzug einen 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 die Routine fehlschlägt und den entsprechenden Fehlercode mit WSASetLastErrorfestlegen muss.

Fehlercode Bedeutung
WSA_E_CANCELLED
Ein Aufruf von NSPLookupServiceEnd wurde ausgeführt, während dieser Aufruf noch verarbeitet wurde. Der Anruf wurde abgebrochen. Die Daten im lpqsResults Puffer sind nicht definiert.

In Windows Sockets 2 werden widersprüchliche 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. Namespace Anbieter sollten den WSA_E_CANCELLED Fehlercode verwenden, um die Kompatibilität mit der größtmöglichen Palette von Anwendungen aufrechtzuerhalten.

WSA_E_NO_MORE
Es sind keine weiteren Daten verfügbar.

In Windows Sockets 2 werden widersprüchliche 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. Namespace Anbieter sollten den WSA_E_NO_MORE Fehlercode verwenden, um die Kompatibilität mit dem größtmöglichen Anwendungsspektrum aufrechtzuerhalten.

WSA_INVALID_HANDLE
Der angegebene Nachschlagepunkt ist ungültig.
WSA_NOT_ENOUGH_MEMORY
Es steht nicht genügend Arbeitsspeicher zur Verfügung, um diesen Vorgang auszuführen.
WSAEFAULT-
Der lpqsResults- Puffer war zu klein, um einen WSAQUERYSET- Satz 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 entsprechen.
WSASERVICE_NOT_FOUND
Der Dienst ist unbekannt. Der Dienst wurde im angegebenen Namespace nicht gefunden.

Bemerkungen

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

Die dwControlFlags-LUP_FLUSHPREVIOUS und LUP_RES_SERVICE sind Ausnahmen von der kombinierten Einschränkungsregel (da sie Verhaltenskennzeichnungen anstelle von "Einschränkungskennzeichnungen" sind). Wenn eines der Flags in NSPLookupServiceNextverwendet wird, haben sie unabhängig von der Einstellung der gleichen Flags bei NSPLookupServiceBeginihren definierten Effekt.

Wenn z. B. LUP_RETURN_VERSION bei NSPLookupServiceBeginangegeben wird, ruft der Dienstanbieter Datensätze einschließlich der Version ab. Wenn LUP_RETURN_VERSION bei NSPLookupServiceNextnicht angegeben wird, enthalten die zurückgegebenen Informationen nicht die Version, obwohl sie verfügbar war. Es wird kein Fehler generiert.

Wenn LUP_RETURN_BLOB beispielsweise bei NSPLookupServiceBeginnicht angegeben ist, aber bei NSPLookupServiceNextangegeben wird, enthalten die zurückgegebenen Informationen nicht die privaten Daten. Es wird kein Fehler generiert.

Abfrageergebnisse

Die folgende Tabelle enthält WSAQUERYSET- und beschreibt, wie Abfrageergebnisse in der WSAQUERYSET--Struktur dargestellt werden. Weitere Informationen finden Sie unter Query-Related Datenstrukturen.
WSAQUERYSET-Membername Ergebnisinterpretation
**dwSize** Wird auf "sizeof" festgelegt(WSAQUERYSET). Dies wird als Versionsverwaltungsmechanismus verwendet.
**dwOutputFlags** **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 der jeweiligen Dienstinstanz.
**lpszComment** Wahlfrei. Kommentarzeichenfolge, die von der Dienstinstanz bereitgestellt wird.
**dwNameSpace** Namespace, in dem die Dienstinstanz gefunden wurde.
**lpNSProviderId** Identifiziert den spezifischen Namespaceanbieter, der dieses Abfrageergebnis bereitgestellt hat.
**lpszContext** Gibt den Kontextpunkt in einem hierarchischen Namespace an, an dem sich der Dienst befindet.
**dwNumberOfProtocols** Nicht definiert für Ergebnisse.
**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 Element 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 dieses Element NULL oder verweist auf eine leere Zeichenfolge.
**dwNumberOfCsAddrs** Gibt die Anzahl der Elemente im Array CSADDR_INFO Strukturen an.
**lpcsaBuffer** Ein Zeiger auf ein Array von CSADDR_INFO Strukturen mit einer vollständigen Transportadresse, die in jedem Element enthalten ist.
**lpBlob** Wahlfrei. Ein Zeiger auf eine anbieterspezifische Entität.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- ws2spi.h

Siehe auch

CSADDR_INFO

NSPLookupServiceBegin-

NSPLookupServiceEnd

NSP_ROUTINE

WSAQUERYSET-

WSASetLastError-