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
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 |
---|---|
È 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. |
|
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. |
|
L'handle di ricerca specificato non è valido. | |
Memoria insufficiente per eseguire questa operazione. | |
Il buffer di lpqsResults |
|
Uno o più parametri non sono validi o mancanti per questo provider. | |
L'operazione non è supportata. Questo errore viene restituito se il provider dello spazio dei nomi non implementa questa funzione. | |
Il nome è stato trovato nel database, ma non sono stati individuati dati corrispondenti alle restrizioni indicate. | |
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 |