attributo callback
L'attributo [callback] dichiara una funzione di callback statica presente sul lato client dell'applicazione distribuita. Le funzioni di callback consentono al server di eseguire codice nel client.
[callback [ , function-attr-list] ] type-specifier [ptr-declarator] function-name(
[ [attribute-list] ] type-specifier [declarator]
, ...);
-
function-attr-list
-
Specifica zero o più attributi che si applicano alla funzione. Gli attributi di funzione validi sono [local]; attributo puntatore [ref], [unique]o [ptr]; e gli attributi di utilizzo [string], [ignore]e [context_handle]. Separare più attributi con virgole.
-
identificatore di tipo
-
Specifica un base_type, struct, union, tipo enumerazione o identificatore di tipo. Una specifica di archiviazione facoltativa può precedere l'identificatore di tipo.
-
ptr-dichiaraator
-
Specifica zero o più dichiaratori puntatori. Un dichiaratore puntatore è lo stesso del dichiaratore puntatore usato in C; viene costruito dal designatore *, modificatori come la lontano e il qualificatore const.
-
nome funzione
-
Specifica il nome della routine remota.
-
attribute-list
-
Specifica zero o più attributi direzionali, attributi di campo, attributi di utilizzo e attributi puntatore appropriati per il tipo di parametro specificato. Separare più attributi con virgole.
-
Dichiaratore
-
Specifica un dichiaratore C standard, ad esempio identificatori, dichiaratori di puntatore e dichiaratori di matrice. Per altre informazioni, vedere Matrice e Sized-Pointer attributi, matrici e matrici e puntatori. L'identificatore di nome parametro è facoltativo.
La funzione [callback] è utile quando il server deve ottenere informazioni dal client. Se le applicazioni server erano supportate in Windows 3. x, il server potrebbe effettuare una chiamata a una procedura remota in Windows 3. x server per ottenere le informazioni necessarie. La funzione di callback esegue lo stesso scopo e consente al server di eseguire una query sul client per informazioni nel contesto della chiamata originale.
I callback sono casi speciali di chiamate remote eseguite come parte di un singolo thread. Un callback viene rilasciato nel contesto di una chiamata remota. Qualsiasi procedura remota definita come parte della stessa interfaccia della funzione di callback statica può chiamare la funzione di callback.
È importante notare che l'uso di [callback] non è consigliato nella programmazione multi-thread. Come funzione di programmazione a thread singolo, non è attrezzata per supportare le richieste di sicurezza di un ambiente multi-thread.
Impossibile usare la funzione RpcCancelThread per annullare una chiamata che può inviare un callback statico. Se una determinata chiamata alla procedura remota non genera mai un callback, può essere annullata. In caso contrario, una chiamata può essere annullata solo se può essere garantito che un callback per esso non sia stato rilasciato.
Solo le sequenze di protocollo locali e orientate alla connessione supportano l'attributo callback. Le dimensioni dei dati [out] per i callback nella sequenza di protocolli locali sono limitate a 150 byte. Se un'interfaccia RPC usa una sequenza di protocollo senza connessione (datagram), le chiamate alle procedure con l'attributo callback avranno esito negativo.
Gli handle non possono essere usati come parametri nelle funzioni di callback. Poiché i callback vengono sempre eseguiti nel contesto di una chiamata, l'handle di associazione usato dal client per eseguire la chiamata al server viene usato anche come handle di associazione dal server al client.
I callback possono annidare in qualsiasi profondità.
[callback] HRESULT DisplayString([in, string] char * p1);