Funzione di callback LPNSPSETSERVICE (ws2spi.h)
La funzione NSPSetService registra o deregista un'istanza del servizio all'interno di uno spazio dei nomi.
Sintassi
LPNSPSETSERVICE Lpnspsetservice;
INT Lpnspsetservice(
[in] LPGUID lpProviderId,
[in] LPWSASERVICECLASSINFOW lpServiceClassInfo,
[in] LPWSAQUERYSETW lpqsRegInfo,
[in] WSAESETSERVICEOP essOperation,
[in] DWORD dwControlFlags
)
{...}
Parametri
[in] lpProviderId
Puntatore al GUID del provider dello spazio dei nomi specifico in cui è registrato il servizio.
[in] lpServiceClassInfo
Informazioni sullo schema della classe del servizio.
[in] lpqsRegInfo
Informazioni sulle proprietà da aggiornare al momento della registrazione.
[in] essOperation
Tipo di operazione richiesta.
Questo parametro può essere uno dei valori del tipo di enumerazione WSAESETSERVICEOP definito nel file di intestazione Winsock2.h .
Valore | Significato |
---|---|
|
Registrare il servizio. Per lo spazio dei nomi SAP (Service Advertising Protocol) usato all'interno di un ambiente NetWare, significa inviare una trasmissione periodica. Si tratta di un NOP per lo spazio dei nomi DNS (Domain Name System). Per gli archivi dati persistenti ciò significa aggiornare le informazioni sull'indirizzo. |
|
Annullare la registrazione del servizio. Per lo spazio dei nomi SAP, ciò significa interrompere l'invio della trasmissione periodica. Si tratta di un NOP per lo spazio dei nomi DNS. Per gli archivi dati persistenti ciò significa eliminare le informazioni sull'indirizzo. |
|
Eliminare il servizio da spazi permanenti e nome dinamico. Per i servizi rappresentati da più strutture di CSADDR_INFO (utilizzando il flag di SERVICE_MULTIPLE), verrà eliminato solo l'indirizzo fornito e deve corrispondere esattamente alla struttura **CSADDR_INFO** corrispondente fornita al momento della registrazione del servizio. |
[in] dwControlFlags
Set di flag che controlla l'operazione del servizio richiesta.
I valori possibili per questo parametro sono definiti nel file di intestazione Winsock2.h .
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 |
---|---|
La routine chiamante non dispone di privilegi sufficienti per installare il servizio. | |
Memoria insufficiente per eseguire questa operazione. | |
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 servizio è sconosciuto. Impossibile trovare il servizio nello spazio dei nomi specificato. |
Commenti
Nella tabella seguente sono elencati i valori disponibili per essOperation e dwControlFlags.
Operazione | Flags | Il servizio esiste già | Il servizio non esiste |
---|---|---|---|
**RNRSERVICE_REGISTER** | Nessuno | Sovrascrive l'oggetto . Usa solo gli indirizzi specificati. L'oggetto è REGISTERED. | Crea un nuovo oggetto. Usa solo gli indirizzi specificati. L'oggetto è REGISTERED. |
**RNRSERVICE_REGISTER** | **SERVICE_MULTIPLE** | Aggiornamenti oggetto . Aggiunge nuovi indirizzi al set esistente. L'oggetto è REGISTERED. | Crea un nuovo oggetto. Utilizza tutti gli indirizzi specificati. L'oggetto è REGISTERED. |
**RNRSERVICE_DEREGISTER** | Nessuno | Rimuove tutti gli indirizzi, ma non rimuove l'oggetto dallo spazio dei nomi. L'oggetto è DEREGISTERED. | WSASERVICE_NOT_FOUND |
**RNRSERVICE_DEREGISTER** | **SERVICE_MULTIPLE** | Aggiornamenti oggetto . Rimuove solo gli indirizzi specificati. Contrassegna l'oggetto come DEREGISTERED solo se non sono presenti indirizzi. Non rimuove dallo spazio dei nomi . | WSASERVICE_NOT_FOUND |
**RNRSERVICE_DELETE** | Nessuno | Rimuove l'oggetto dallo spazio dei nomi . | WSASERVICE_NOT_FOUND |
**RNRSERVICE_DELETE** | **SERVICE_MULTIPLE** | Rimuove solo gli indirizzi specificati. Rimuove l'oggetto dallo spazio dei nomi solo se non rimangono indirizzi. | WSASERVICE_NOT_FOUND |
Quando il parametro dwControlFlags è impostato su SERVICE_MULTIPLE, ciò consente a un'applicazione di gestire i relativi indirizzi in modo indipendente. Ciò è utile quando l'applicazione deve gestire i protocolli singolarmente o quando il servizio risiede in più computer. Ad esempio, quando un servizio usa più di un protocollo, un socket di ascolto può interrompere, ma gli altri socket rimangono operativi. In questo esempio, il servizio potrebbe annullare la registrazione dell'indirizzo interrotto senza influire sugli altri indirizzi.
Quando si usa SERVICE_MULTIPLE, un'applicazione non deve lasciare che gli indirizzi precedenti rimangano nell'oggetto . Ciò può verificarsi se l'applicazione viene interrotta senza inviare una richiesta di RNRSERVICE_DEREGISTER . Quando un servizio viene registrato, deve archiviarne gli indirizzi. Alla chiamata successiva, il servizio deve annullare esplicitamente la registrazione di questi indirizzi precedenti prima di registrare nuovi indirizzi.
Proprietà del servizio
Nella tabella seguente sono elencati i nomi dei membri WSAQUERYSET e viene descritto il modo in cui vengono rappresentati i dati delle proprietà del servizio. I membri etichettati come (facoltativo) possono essere forniti con un puntatore Null.Nome del membro WSAQUERYSET | Descrizione della proprietà del servizio |
---|---|
**dwSize** | Impostare su sizeof(WSAQUERYSET). Si tratta di un meccanismo di controllo delle versioni. |
**lpszServiceInstanceName** | La stringa di riferimento contiene il nome dell'istanza del servizio. |
**lpServiceClassId** | GUID che corrisponde a questa classe di servizio. |
**lpVersion** | facoltativo. Fornisce il numero di versione dell'istanza del servizio. |
**lpszComment** | facoltativo. Stringa di commento facoltativa. |
**dwNameSpace** | Ignorato per questa operazione. |
**lpNSProviderId** | Ignorato per questa operazione. L'identificatore del provider è contenuto nel parametro lpProviderId . |
**lpszContext** | facoltativo. Punto iniziale della query in uno spazio dei nomi gerarchico. |
**dwNumberOfProtocols** | Ignorato per questa operazione. |
**lpafpProtocols** | Ignorato per questa operazione. |
**pszQueryString** | Ignorato per questa operazione. |
**dwNumberOfCsAddrs** | Numero di elementi nella matrice di CSADDR_INFO strutture a cui fa riferimento lpcsaBuffer. |
**lpcsaBuffer** | Puntatore a una matrice di strutture CSADDR_INFO che contengono l'indirizzo o gli indirizzi su cui il servizio è in ascolto. |
**dwOutputFlags** | Ignorato per questa operazione. |
**lpBlob** | facoltativo. Puntatore a un'entità specifica del provider. |
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | ws2spi.h |