Condividi tramite


Funzione di callback LPNSPLOOKUPSERVICENEXT (ws2spi.h)

La funzione NSPLookupServiceNext viene chiamata dopo aver ottenuto un handle da una chiamata precedente a NSPLookupServiceBegin per recuperare le informazioni sul servizio richieste.

Il provider passerà una struttura di WSAQUERYSET nel buffer lpqsResults . Il client deve chiamare questa funzione fino a quando non restituisce WSA_E_NOMORE, che indica che sono stati restituiti tutti i WSAQUERYSET.

Sintassi

LPNSPLOOKUPSERVICENEXT Lpnsplookupservicenext;

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

Parametri

[in] hLookup

Handle restituito dalla chiamata precedente a WSALookupServiceBegin.

[in] dwControlFlags

Flag utilizzati per controllare l'operazione successiva. Attualmente, solo LUP_FLUSHPREVIOUS è definito come mezzo per gestire un set di risultati troppo grande. Se un'applicazione non può fornire un buffer sufficientemente grande, l'impostazione LUP_FLUSHPREVIOUS indica al provider di rimuovere l'ultimo set di risultati, troppo grande e passare al set successivo per questa chiamata.

[in, out] lpdwBufferLength

Dimensione, in byte, in input, contenuta nel buffer a cui punta lpqsResults. Nell'output, se la funzione ha esito negativo e l'errore è WSAEFAULT, contiene le dimensioni minime, in byte da passare per il lpqsResults per recuperare il record.

[out] lpqsResults

Puntatore a un blocco di memoria che conterrà, in caso di restituzione, un set di risultati in una struttura WSAQUERYSET.

Valore restituito

La funzione deve restituire NO_ERROR (zero) se la routine ha esito positivo. Deve restituire SOCKET_ERROR (-1) se la routine ha esito negativo e deve impostare il codice di errore appropriato usando WSASetLastError.

Codice di errore Significato
WSA_E_CANCELLED
È stata effettuata una chiamata a NSPLookupServiceEnd durante l'elaborazione della chiamata. La chiamata è stata annullata. I dati nel buffer di lpqsResults non sono definiti.

In Windows Sockets 2 i codici di errore in conflitto sono definiti per WSAECANCELLED (10103) e WSA_E_CANCELLED (10111). Il codice di errore WSAECANCELLED verrà rimosso in una versione futura e rimarrà solo WSA_E_CANCELLED. I provider di spazi dei nomi devono usare il codice di errore WSA_E_CANCELLED per mantenere la compatibilità con la più ampia gamma possibile di applicazioni.

WSA_E_NO_MORE
Non sono disponibili altri dati.

In Windows Sockets 2 i codici di errore in conflitto vengono definiti per WSAENOMORE (10102) e WSA_E_NO_MORE (10110). Il codice di errore WSAENOMORE verrà rimosso in una versione futura e rimarrà solo WSA_E_NO_MORE. I provider di spazi dei nomi devono usare il codice di errore WSA_E_NO_MORE per mantenere la compatibilità con la più ampia gamma possibile di applicazioni.

WSA_INVALID_HANDLE
L'handle di ricerca specificato non è valido.
WSA_NOT_ENOUGH_MEMORY
Memoria insufficiente per eseguire questa operazione.
WSAEFAULT
Il buffer di lpqsResults era troppo piccolo per contenere un set di WSAQUERYSET .
WSAEINVAL
Uno o più parametri non sono validi o mancanti per questo provider.
WSAEOPNOTSUPP
L'operazione non è supportata. Questo errore viene restituito se il provider dello spazio dei nomi non implementa questa funzione.
WSANO_DATA
Il nome è stato trovato nel database, ma non sono stati individuati dati corrispondenti alle restrizioni indicate.
WSASERVICE_NOT_FOUND
Il servizio è sconosciuto. Impossibile trovare il servizio nello spazio dei nomi specificato.

Osservazioni

I dwControlFlags specificati in questa funzione e quelli specificati al momento di NSPLookupServiceBegin vengono gestiti come "restrizioni" allo scopo della combinazione. Le restrizioni vengono combinate tra quelle in NSPLookupServiceBegin ora e quelle in NSPLookupServiceNext ora. Di conseguenza, i flag in NSPLookupServiceNext non possono mai aumentare la quantità di dati restituiti oltre a quanto richiesto in NSPLookupServiceBegin, anche se non è un errore specificare più o meno flag. I flag specificati in un determinato NSPLookupServiceNext si applicano solo a tale chiamata.

Il dwControlFlagsLUP_FLUSHPREVIOUS e LUP_RES_SERVICE sono eccezioni alla regola delle restrizioni combinate (perché sono flag di comportamento anziché flag di "restrizione"). Se uno dei flag viene usato in NSPLookupServiceNext, l'effetto è definito indipendentemente dall'impostazione degli stessi flag in NSPLookupServiceBegin.

Ad esempio, se LUP_RETURN_VERSION viene specificato in NSPLookupServiceBegin, il provider di servizi recupera i record che includono la versione. Se LUP_RETURN_VERSION non è specificato in NSPLookupServiceNext, le informazioni restituite non includono la versione, anche se era disponibile. Non viene generato alcun errore.

Ad esempio, se LUP_RETURN_BLOB non è specificato in NSPLookupServiceBegin, ma viene specificato in NSPLookupServiceNext, le informazioni restituite non includono i dati privati. Non viene generato alcun errore.

risultati della query

Nella tabella seguente sono elencati WSAQUERYSET e viene descritto il modo in cui i risultati della query vengono rappresentati nella struttura WSAQUERYSET. Per altre informazioni, vedere Query-Related strutture di dati.
Nome del membro WSAQUERYSET Interpretazione dei risultati
**dwSize** Verrà impostato su sizeof(WSAQUERYSET). Viene usato come meccanismo di controllo delle versioni.
**dwOutputFlags** **RESULT_IS_ALIAS** flag indica che si tratta di un risultato alias.
**lpszServiceInstanceName** Fa riferimento alla stringa che contiene il nome del servizio.
**lpServiceClassId** GUID corrispondente alla classe del servizio.
**lpVersion** Fa riferimento al numero di versione dell'istanza del servizio specifica.
**lpszComment** Opzionale. Stringa di commento fornita dall'istanza del servizio.
**dwNameSpace** Spazio dei nomi in cui è stata trovata l'istanza del servizio.
**lpNSProviderId** Identifica il provider di spazi dei nomi specifico che ha fornito il risultato della query.
**lpszContext** Specifica il punto di contesto in uno spazio dei nomi gerarchico in cui si trova il servizio.
**dwNumberOfProtocols** Non definito per i risultati.
**lpafpProtocols** Non definito per i risultati, tutte le informazioni del protocollo necessarie si trovano nelle strutture CSADDR_INFO.
**lpszQueryString** Quando dwControlFlags include **LUP_RETURN_QUERY_STRING**, questo membro restituisce il resto non analizzato del **lpszServiceInstanceName** specificato nella query originale. Ad esempio, in uno spazio dei nomi che identifica i servizi in base a nomi gerarchici che specificano un nome host e un percorso di file all'interno di tale host, l'indirizzo restituito potrebbe essere l'indirizzo host e il resto non analizzato potrebbe essere il percorso del file. Se **lpszServiceInstanceName** viene analizzato completamente e viene usato **LUP_RETURN_QUERY_STRING**, questo membro è Null o punta a una stringa di lunghezza zero.
**dwNumberOfCsAddrs** Indica il numero di elementi nella matrice di strutture CSADDR_INFO.
**lpcsaBuffer** Puntatore a una matrice di strutture CSADDR_INFO, con un indirizzo di trasporto completo contenuto all'interno di ogni elemento.
**lpBlob** Opzionale. Puntatore a un'entità specifica del provider.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
piattaforma di destinazione Finestre
intestazione ws2spi.h

Vedere anche

CSADDR_INFO

NSPLookupServiceBegin

NSPLookupServiceEnd

NSP_ROUTINE

WSAQUERYSET

WSASetLastError