Condividi tramite


LPNSPV2LOOKUPSERVICEBEGIN funzione di callback (ws2spi.h)

La funzione NSPv2LookupServiceBegin avvia una query client di un provider di servizi dello spazio dei nomi versione 2 vincolata dalle informazioni contenute in una struttura WSAQUERYSET2 .

Sintassi

LPNSPV2LOOKUPSERVICEBEGIN Lpnspv2lookupservicebegin;

INT Lpnspv2lookupservicebegin(
  [in]  LPGUID lpProviderId,
  [in]  LPWSAQUERYSET2W lpqsRestrictions,
  [in]  DWORD dwControlFlags,
  [out] LPVOID lpvClientSessionArg,
  [out] LPHANDLE lphLookup
)
{...}

Parametri

[in] lpProviderId

Puntatore all'identificatore per il provider di servizi dello spazio dei nomi su cui eseguire una query.

[in] lpqsRestrictions

Puntatore ai criteri di ricerca. Vedere la sezione Osservazioni.

[in] dwControlFlags

Set di flag che influiscono sulla ricerca. Questo parametro può essere una combinazione dei valori seguenti definiti nel file di intestazione Winsock2.h .

Valore Significato
LUP_DEEP
0x0001
Esegue una query verso il basso nella gerarchia di un provider anziché solo nel primo livello.
LUP_CONTAINERS
0x0002
Restituisce solo contenitori.
LUP_NOCONTAINERS
0x0004
Non restituisce alcun contenitore.
LUP_NEAREST
0x0008
Se possibile, restituisce i risultati nell'ordine di distanza. La misura della distanza è specifica del provider.
LUP_RETURN_NAME
0x0010
Recupera il nome come **lpszServiceInstanceName**.
LUP_RETURN_TYPE
0x0020
Recupera il tipo come **lpServiceClassId**.
LUP_RETURN_VERSION
0x0040
Recupera la versione come **lpVersion**.
LUP_RETURN_COMMENT
0x0080
Recupera il commento come **lpszComment**.
LUP_RETURN_ADDR
0x0100
Recupera gli indirizzi come **lpcsaBuffer**.
LUP_RETURN_BLOB
0x0200
Recupera i dati privati come **lpBlob**.
LUP_RETURN_ALIASES
0x0400
Tutte le informazioni sugli alias disponibili devono essere restituite nelle chiamate successive a NSPv2LookupServiceNextEx e ogni alias restituito avrà il flag **RESULT_IS_ALIAS** impostato.
LUP_RETURN_QUERY_STRING
0x0800
Recupera la stringa di query come **lpszQueryString**.
LUP_RETURN_ALL
0x0ff0
Recupera informazioni che includono il nome, il tipo, la versione, il commento, l'indirizzo, il BLOB, gli alias e la stringa di query.
LUP_FLUSHCACHE
0x1000
Se il provider contiene informazioni memorizzate nella cache, ignorare la cache ed eseguire query sullo spazio dei nomi stesso.
LUP_FLUSHPREVIOUS
0x2000
Usato come valore per il parametro dwControlFlags in NSPv2LookupServiceNextEx. L'impostazione di questo flag indica al provider di eliminare l'ultimo set di risultati, troppo grande per il buffer fornito, e passare al set di risultati successivo.
LUP_NON_AUTHORITATIVE
0x4000
Indica che il provider dello spazio dei nomi deve includere risultati non autorevoli per i nomi.
LUP_RES_RESERVICE
0x8000
Indica se la risposta prime si trova nella parte remota o locale della struttura di CSADDR_INFO . L'altra parte deve essere utilizzabile in entrambi i casi. Questa opzione si applica solo alle richieste di istanza del servizio.
LUP_SECURE
0x8000
Indica che il provider dello spazio dei nomi deve usare una query sicura. Questa opzione si applica solo alle richieste di query dei nomi.
LUP_RETURN_PREFERRED_NAMES
0x10000
Indica che il provider dello spazio dei nomi deve restituire solo nomi preferiti.
LUP_ADDRCONFIG
0x100000
Indica che il provider dello spazio dei nomi deve restituire la configurazione dell'indirizzo.
LUP_DUAL_ADDR
0x200000
Indica che il provider dello spazio dei nomi deve restituire gli indirizzi duali. Questa opzione si applica solo ai socket in modalità doppia (indirizzi mappati IPv6 e IPv4).
LUP_DISABLE_IDN_ENCODING
0x800000
Indica che il provider dello spazio dei nomi deve disabilitare la codifica automatica dei nomi di dominio internazionali.

Questo valore è supportato in Windows 8 e Windows Server 2012

[out] lpvClientSessionArg

Puntatore alla sessione client.

[out] lphLookup

Puntatore all'handle da usare nelle chiamate successive a NSPv2LookupServiceNextEx per recuperare il set di risultati.

Valore restituito

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

Codice di errore Significato
WSAEINVAL
Uno o più parametri non sono validi o mancanti per questo provider.
WSANO_DATA
Il nome è stato trovato nel database, ma non dispone dei dati associati corretti per cui vengono risolti.
WSASERVICE_NOT_FOUND
Il servizio è sconosciuto. Impossibile trovare il servizio nello spazio dei nomi specificato.
WSA_NOT_ENOUGH_MEMORY
Non è disponibile memoria sufficiente per eseguire questa operazione.

Commenti

La funzione NSPv2LookupServiceBegin viene usata come parte dell'architettura del provider di servizi dello spazio dei nomi versione-2 (NSPv2) disponibile in Windows Vista e versioni successive.

In Windows Vista e Windows Server 2008 la funzione NSPv2LookupServiceBegin può essere usata solo per le operazioni sui provider di spazi dei nomi NS_EMAIL.

La funzione NSPv2LookupServiceBegin restituisce solo un handle, che deve essere usato dalle chiamate successive a NSPv2LookupServiceNextEx per ottenere i risultati effettivi. Poiché questa operazione non può essere annullata, deve essere implementata rapidamente. Sebbene sia accettabile avviare una query di rete, questa funzione non deve richiedere una risposta per restituire correttamente.

La funzione NSPv2Startup viene chiamata ogni volta che un nuovo processo client inizia usando il provider di spazi dei nomi. I provider possono usare l'argomento sessione client a cui punta il parametro ppvClientSessionArg per archiviare informazioni su questa sessione. Se viene specificato un valore per l'argomento sessione client nella chiamata alla funzione NSPv2Startup , lo stesso argomento sessione client viene passato al parametro lpvClientSessionArg alla funzione NSPv2LookupServiceBegin .

Se LUP_CONTAINERS viene specificato in una chiamata, evitare tutti gli altri valori di restrizione. Se sono disponibili, il provider di servizi di nome deve decidere se può supportare questa restrizione sui contenitori. In caso contrario, deve restituire un errore.

Alcuni provider di servizi di nome possono avere altri mezzi per trovare contenitori. Ad esempio, i contenitori possono essere di un tipo noto o di un set di tipi noti e pertanto è possibile creare una restrizione di query per trovarli. Indipendentemente da ciò che altro significa che il provider di servizi di nome ha per l'individuazione di contenitori, LUP_CONTAINERS e LUP_NOCONTAINERS hanno la precedenza. Pertanto, se viene specificata una restrizione di query che include contenitori, specificando LUP_NOCONTAINERS impedirà la restituzione degli elementi del contenitore. Analogamente, indipendentemente dalla restrizione della query, se viene specificata LUP_CONTAINERS , devono essere restituiti solo i contenitori. Se uno spazio dei nomi non supporta i contenitori e viene specificato LUP_CONTAINERS , deve restituire WSANO_DATA.

Il metodo preferito per ottenere i contenitori all'interno di un altro contenitore è la chiamata:

dwStatus = NSPv2LookupServiceBegin(
    lpProviderId,
    lpqsRestrictions,
    LUP_CONTAINERS,
    lpClientSession,
    lphLookup);

seguito dal numero necessario di chiamate NSPv2LookupServiceNextEx . In questo modo tutti i contenitori verranno restituiti immediatamente all'interno del contesto iniziale; ovvero, non è una query profonda. In questo modo, è possibile eseguire il mapping della struttura dello spazio degli indirizzi eseguendo l'enumerazione del contenuto dei contenitori selezionati. Gli usi successivi di NSPv2LookupServiceBegin usano i contenitori restituiti da una chiamata precedente.

Creazione di query di maschera

La struttura WSAQUERYSET2 viene usata come parametro di input per NSPv2LookupServiceBegin per qualificare la query. La tabella seguente elenca i nomi dei membri **WSAQUERYSET2** e descrive come viene usato **WSAQUERYSET2** per costruire una query. I membri etichettati come facoltativi e dipendenti dai requisiti del provider NSPv2 possono essere forniti come puntatore **NULL** quando inutilizzati come criteri di ricerca dal provider dello spazio dei nomi. Per altre informazioni, vedere Strutture di dati correlate alle query.
WSAQUERYSET2 nome membro Interpretazione delle query
**dwSize** Verrà impostato su sizeof(WSAQUERYSET2). Si tratta di un meccanismo di controllo delle versioni.
**lpszServiceInstanceName** Stringa contenente il nome del servizio. La semantica per il carattere jolly all'interno della stringa non è definita, ma può essere supportata da determinati provider di spazi dei nomi. Questo membro è facoltativo, dipendente dai requisiti del provider di servizi NSPv2.
**lpVersion** Il numero di versione desiderato che fornisce la semantica di confronto delle versioni, ovvero la versione deve corrispondere esattamente o la versione deve essere inferiore al valore specificato. Questo membro è facoltativo, dipendente dai requisiti del provider di servizi NSPv2.
**lpszComment** Questo membro viene ignorato per le query.
**dwNameSpace** Identificatore di un singolo spazio dei nomi in cui limitare la ricerca o **NS_ALL** per includere tutti gli spazi dei nomi.
**lpNSProviderId** GUID di un provider di spazi dei nomi specifico che limita solo la query a questo provider. Questo membro è facoltativo, dipendente dai requisiti del provider di servizi NSPv2.
**lpszContext** Punto iniziale della query in uno spazio dei nomi gerarchico. Questo membro è facoltativo, dipendente dai requisiti del provider di servizi NSPv2.
**dwNumberOfProtocols** Dimensioni, in byte, del numero di voci nella matrice di vincoli del protocollo. Questo membro può essere zero.
**lpafpProtocols** Matrice di strutture AFPROTOCOLS . Verranno restituiti solo i servizi che usano questi protocolli. È consentito che il valore **AF_UNSPEC** venga visualizzato come valore familiare del protocollo, firmando un carattere jolly. I provider di spazi dei nomi possono fornire informazioni su qualsiasi servizio che usa il protocollo corrispondente, indipendentemente dalla famiglia di indirizzi. Questo membro è facoltativo, dipendente dai requisiti del provider di servizi NSPv2.
**lpszQueryString** Alcuni spazi dei nomi (ad esempio whois++) supportano query sql avanzate contenute in una semplice stringa di testo. Questo parametro viene usato per specificare tale stringa. Questo membro è facoltativo, dipendente dai requisiti del provider di servizi NSPv2.
**dwNumberOfCsAddrs** Questo membro viene ignorato per le query.
**lpcsaBuffer** Questo membro viene ignorato per le query.
**dwOutputFlags** Questo membro viene ignorato per le query.
**lpBlob** Puntatore a un'entità specifica del provider. Questo membro è facoltativo, dipendente dai requisiti del provider di servizi NSPv2.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione ws2spi.h

Vedi anche

AFPROTOCOLS

NSPV2_ROUTINE

NSPv2Cleanup

NSPv2ClientSessionRundown

NSPv2LookupServiceEnd

NSPv2LookupServiceNextEx

NSPv2SetServiceEx

NSPv2Startup

WSAQUERYSET2

WSASERVICECLASSINFO

WSASetLastError