LPNSPV2LOOKUPSERVICENEXTEX Rückruffunktion (ws2spi.h)

Die NSPv2LookupServiceNextEx-Funktion wird aufgerufen, nachdem ein Handle aus einem vorherigen Aufruf von NSPv2LookupServiceBegin abgerufen wurde, um die angeforderten Informationen von einem Namespace-Dienstanbieter der Version 2 abzurufen.

Syntax

LPNSPV2LOOKUPSERVICENEXTEX Lpnspv2lookupservicenextex;

void Lpnspv2lookupservicenextex(
  [in]      HANDLE hAsyncCall,
  [in]      HANDLE hLookup,
  [in]      DWORD dwControlFlags,
  [in, out] LPDWORD lpdwBufferLength,
  [out]     LPWSAQUERYSET2W lpqsResults
)
{...}

Parameter

[in] hAsyncCall

Ein Handle, das vom vorherigen Aufruf von NSPv2LookupServiceBegin zurückgegeben wurde, der für asynchrone Aufrufe verwendet wird.

[in] hLookup

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

[in] dwControlFlags

Die Flags, die zum Steuern des nächsten Vorgangs verwendet werden. Derzeit ist nur LUP_FLUSHPREVIOUS als Mittel für die Verarbeitung eines zu großen Resultsets definiert. Wenn eine Anwendung keinen ausreichend großen Puffer bereitstellen kann, weist die Einstellung 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 lautet, enthält sie die Mindestgröße in Byte, 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 WSAQUERYSET2-Struktur enthält.

Rückgabewert

Die Funktion sollte NO_ERROR (null) zurückgeben, wenn die Routine erfolgreich ist. Es sollte SOCKET_ERROR (d. h. 1) zurückgeben, wenn die Routine fehlschlägt und der entsprechende Fehlercode mithilfe von WSASetLastError festgelegt werden muss.

Fehlercode Bedeutung
WSA_E_CANCELLED
Ein Aufruf von NSPv2LookupServiceEnd wurde durchgefü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 in Konflikt stehende 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 verbleiben. Namespaceanbieter sollten den WSA_E_CANCELLED Fehlercode verwenden, um die Kompatibilität mit dem größtmöglichen Anwendungsspektrum zu gewährleisten.

WSA_E_NO_MORE
Es sind keine weiteren Daten verfügbar.

In Windows Sockets 2 werden in Konflikt stehende 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 verbleiben. Namespaceanbieter sollten den WSA_E_NO_MORE Fehlercode verwenden, um die Kompatibilität mit dem größtmöglichen Anwendungsspektrum aufrechtzuerhalten.

WSAEFAULT
Der puffer lpqsResults war zu klein, um einen WSAQUERYSET-Satz zu enthalten.
WSAEINVAL
Mindestens ein Parameter ist für diesen Anbieter ungültig oder fehlt.
WSA_INVALID_HANDLE
Das angegebene Nachschlagehandle ist ungültig.
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 kann nicht im angegebenen Namespace gefunden werden.
WSA_NOT_ENOUGH_MEMORY
Es ist nicht genügend Arbeitsspeicher verfügbar, um diesen Vorgang auszuführen.

Hinweise

Die NSPv2LookupServiceNextEx-Funktion wird als Teil der Architektur des Namespacedienstanbieters Version-2 (NSPv2) verwendet, die unter Windows Vista und höher verfügbar ist.

Unter Windows Vista und Windows Server 2008 kann die NSPv2LookupServiceNextEx-Funktion nur für Vorgänge auf NS_EMAIL Namespaceanbietern verwendet werden.

Der Anbieter übergibt eine WSAQUERYSET2-Struktur im lpqsResults-Puffer . Der Client sollte die NSPv2LookupServiceNextEx-Funktion aufrufen, bis WSA_E_NOMORE zurückgegeben wird, was angibt, dass alle WSAQUERYSET2-Strukturen zurückgegeben wurden.

Die in dieser Funktion angegebenen dwControlFlags und die zum Zeitpunkt von NSPv2LookupServiceBegin angegebenen werden als "Einschränkungen" für die Zwecke der Kombination behandelt. Die Einschränkungen werden zwischen den Einschränkungen zur NSPv2LookupServiceBegin-Zeit und den Einschränkungen zur NSPv2LookupServiceNextEx-Zeit kombiniert. Daher können die Flags bei NSPv2LookupServiceNextEx niemals die Menge der zurückgegebenen Daten über die bei NSPv2LookupServiceBegin angeforderten Daten hinaus erhöhen, obwohl es kein Fehler ist, mehr oder weniger Flags anzugeben. Die in einem angegebenen NSPv2LookupServiceNextEx 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 der Flags in NSPv2LookupServiceNextEx verwendet wird, haben sie ihre definierte Wirkung unabhängig von der Einstellung der gleichen Flags in NSPv2LookupServiceBegin.

Wenn beispielsweise LUP_RETURN_VERSION unter NSPv2LookupServiceBegin angegeben ist, ruft der Dienstanbieter Datensätze einschließlich der Version ab. Wenn LUP_RETURN_VERSION bei NSPv2LookupServiceNextEx 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 NSPv2LookupServiceBegin, sondern unter NSPv2LookupServiceNextEx angegeben ist, enthalten die zurückgegebenen Informationen nicht die privaten Daten. Es wird kein Fehler generiert.

Die NSPv2LookupServiceNextEx-Funktion wird in der Regel mindestens zweimal aufgerufen. Das erste Mal, um die Größe des erforderlichen Puffers abzurufen, um die WSAQUERYSET2 , auf die der parameter lpqsResults verweist, und das zweite Mal, um das tatsächliche Abfrageresultset abzurufen. Beim ersten Aufruf sollte der NSPv2-Anbieter die für die WSAQUERYSET2 Ergebnisse erforderliche Größe zurückgeben.

Die WSAQUERYSET2 Struktur, auf die der lpqsResults-Parameter verweist, der zurückgegeben wird, ist nur im gleichen Prozesskontext nützlich, da mehrere member in der WSAQUERYSET2-Struktur Zeiger auf die tatsächlich zurückgegebenen Daten enthalten. Wenn das Abfrageergebnis an einen anderen Prozess übergeben werden muss (z. B. mithilfe von RPC), müssen die Daten serialisiert und gemarshallt werden, die in der WSAQUERYSET2 Struktur zurückgegeben werden, auf die der lpqsResults-Parameter verweist, einschließlich der Daten, auf die elemente in der WSAQUERYSET2-Struktur verweisen. Die Daten müssen in einem Formular serialisiert werden, das über Prozessgrenzen hinweg übergeben werden kann. Das Übergeben einer Kopie der WSAQUERYSET2 Struktur reicht nicht aus, da nur Zeiger auf Daten übergeben werden und die tatsächlichen Daten für andere Prozesse nicht verfügbar sind.

Abfrageergebnisse

In der folgenden Tabelle werden WSAQUERYSET2 aufgelistet und beschrieben, wie Abfrageergebnisse in der **WSAQUERYSET2**-Struktur dargestellt werden. Weitere Informationen finden Sie unter Abfragebezogene Datenstrukturen.
WSAQUERYSET2-Membername Ergebnisinterpretation
**dwSize** Die Größe WSAQUERYSET2 Struktur in Bytes. Dies wird als Versionsverwaltungsmechanismus verwendet.
**lpszServiceInstanceName** Eine Zeichenfolge, die den Dienstnamen enthält.
**lpVersion** Verweist auf die Versionsnummer des jeweiligen Diensts instance.
**lpszComment** Eine vom Dienst bereitgestellte Kommentarzeichenfolge instance. Dieser Member ist optional, abhängig von den Anforderungen des NSPv2-Dienstanbieters.
**dwNameSpace** Der Namespacebezeichner, in dem der Name oder der Dienst instance gefunden wurde.
**lpNSProviderId** Der spezifische Namespaceanbieter, der dieses Abfrageergebnis bereitgestellt hat.
**lpszContext** Der Kontextpunkt in einem hierarchischen Namespace, an dem sich der Dienst befindet.
**dwNumberOfProtocols** Dieser Member ist für Ergebnisse nicht definiert.
**lpafpProtocols** Dieser Member ist für Ergebnisse nicht definiert. Alle erforderlichen Protokollinformationen sind in den CSADDR_INFO-Strukturen enthalten.
**lpszQueryString** Wenn dwControlFlags **LUP_RETURN_QUERY_STRING** enthält, gibt dieses Element 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 und der nicht analysierte Rest 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** Die Anzahl der Elemente im Array von CSADDR_INFO Strukturen.
**lpcsaBuffer** Ein Zeiger auf ein Array von CSADDR_INFO-Strukturen , wobei in jedem Element eine vollständige Transportadresse enthalten ist.
**dwOutputFlags** Das Flag **RESULT_IS_ALIAS** gibt an, dass es sich um ein Aliasergebnis handelt.
**lpBlob** Ein Zeiger auf eine anbieterspezifische Entität. Dieser Member ist optional, abhängig von den Anforderungen des NSPv2-Dienstanbieters.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile ws2spi.h

Weitere Informationen

CSADDR_INFO

NSPV2_ROUTINE

NSPv2Cleanup

NSPv2ClientSessionRundown

NSPv2LookupServiceBegin

NSPv2LookupServiceEnd

NSPv2SetServiceEx

NSPv2Startup

WSAQUERYSET2

WSASetLastError