Condividi tramite


Funzione RpcNsMgmtHandleSetExpAge (rpcnsi.h)

La funzione RpcNsMgmtHandleSetExpAge imposta l'età di scadenza di un handle name-service per le copie locali dei dati name-service.

Nota Questa funzione non è supportata in Windows Vista e nei sistemi operativi successivi.
 

Sintassi

RPC_STATUS RpcNsMgmtHandleSetExpAge(
  RPC_NS_HANDLE NsHandle,
  unsigned long ExpirationAge
);

Parametri

NsHandle

Handle del servizio dei nomi per il quale è impostata un'età di scadenza. Un handle name-service viene restituito da un'operazione di inizio del servizio dei nomi.

ExpirationAge

Valore intero, in secondi, che imposta l'età di scadenza dei dati del servizio nome locale letti da tutte le routine successive usando il parametro NsHandle specificato.

Un'età di scadenza pari a 0 causa un aggiornamento immediato dei dati del servizio dei nomi locali.

Valore restituito

Valore Significato
RPC_S_OK
La chiamata ha avuto esito positivo.
RPC_S_NAME_SERVICE_UNAVAILABLE
Il servizio dei nomi non è disponibile.
 
Nota Per un elenco di codici di errore validi, vedere Valori restituiti RPC.
 

Commenti

La funzione RpcNsMgmtHandleSetExpAge imposta un'età di scadenza dell'handle per un handle name-service specificato (NsHandle). L'età di scadenza è la quantità di tempo che può esistere una copia locale dei dati da un attributo name-service prima che una richiesta dell'applicazione per l'attributo richieda l'aggiornamento della copia locale. Quando un'applicazione inizia l'esecuzione, la libreria di runtime RPC specifica una scadenza predefinita di due ore. Il valore predefinito è globale per l'applicazione. Un'età di scadenza dell'handle si applica solo a un handle del servizio dei nomi specifico ed esegue temporaneamente l'override dell'età di scadenza globale corrente.

Un'età di scadenza dell'handle viene usata esclusivamente dalle operazioni successive del puntatore (che leggono i dati dagli attributi name-service). Un'operazione successiva viene in genere avviata cercando una copia locale dei dati dell'attributo richiesti da un'applicazione. In assenza di una copia locale, l'operazione successiva ne crea una con i dati degli attributi aggiornati dal database name-service. Se esiste già una copia locale, l'operazione confronta l'età effettiva con l'età di scadenza usata dall'applicazione (che, in questo caso, è l'età di scadenza impostata per l'handle name-service). Se l'età effettiva supera l'età di scadenza dell'handle, l'operazione tenta automaticamente di aggiornare la copia locale con i dati aggiornati dell'attributo. Se l'aggiornamento è impossibile, i dati locali precedenti rimangono sul posto e l'operazione successiva non riesce, restituendo il codice di stato RPC_S_NAME_SERVICE_UNAVAILABLE.

L'ambito di un'età di scadenza dell'handle è una singola serie di operazioni successive. La funzione RpcNsMgmtHandleSetExpAge opera nel contesto seguente:

  • Un'operazione di inizio crea un handle name-service.
  • Una chiamata alla funzione RpcNsMgmtHandleSetExpAge crea un'età di scadenza per l'handle.
  • Una serie di operazioni successive per l'handle name-service usa l'età di scadenza dell'handle.
  • Un'operazione eseguita per l'handle name-service elimina sia l'handle che la relativa scadenza.
Nota In genere, è consigliabile evitare di usare RpcNsMgmtHandleSetExpAge. È invece consigliabile basarsi sull'età di scadenza globale dell'applicazione. Impostando l'età di scadenza dell'handle su un valore ridotto, le operazioni successive del servizio dei nomi aggiornano frequentemente i dati locali per qualsiasi attributo name-service richiesto dall'applicazione. Ad esempio, l'impostazione dell'età di scadenza su 0 forza l'operazione successiva ad aggiornare i dati locali per l'attributo name-service richiesto dall'applicazione. Pertanto, l'impostazione di una piccola scadenza di handle può creare problemi di prestazioni per l'applicazione. Inoltre, se l'applicazione usa un server del servizio dei nomi remoto, una piccola scadenza può influire negativamente sulle prestazioni di rete per tutte le applicazioni.
 
Limitare l'uso di RpcNsMgmtHandleSetExpAge alle situazioni seguenti:
  • Quando è sempre necessario ottenere dati accurati relativi al servizio dei nomi.

    Ad esempio, durante le operazioni di gestione per aggiornare un profilo, potrebbe essere necessario visualizzare sempre il contenuto corrente del profilo. In questo caso, prima di iniziare a richiedere informazioni su un profilo, l'applicazione deve chiamare la funzione RpcNsMgmtHandleSetExpAge e specificare 0 per il parametro ExpirationAge .

  • Quando una richiesta che usa l'età di scadenza predefinita non è riuscita e l'applicazione deve ripetere l'operazione.

    Ad esempio, un'applicazione client che usa operazioni di importazione del servizio dei nomi deve prima tentare di ottenere associazioni usando l'età di scadenza predefinita dell'applicazione. Tuttavia, a volte l'operazione import-next non restituisce alcun handle di associazione o un numero insufficiente di essi. In questo caso, il client potrebbe ripetere l'operazione di importazione e, dopo la chiamata RpcNsBindingImportBegin , includere una chiamata RpcNsMgmtHandleSetExpAge e specificare 0 per il parametro ExpirationAge . Quando il client chiama nuovamente la funzione import-next, l'età di scadenza dell'handle di piccole dimensioni determina l'aggiornamento dei dati dell'attributo locale da parte dell'operazione import-next.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione rpcnsi.h (include Rpc.h)
Libreria Rpcns4.lib
DLL Rpcns4.dll

Vedi anche

RpcNsBindingImportBegin

RpcNsMgmtInqExpAge

RpcNsMgmtSetExpAge