Condividi tramite


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]
        , ...);

Parametri

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.

Commenti

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à.

Esempi

[callback] HRESULT DisplayString([in, string] char * p1);

Vedere anche

Matrici

Tipi di base MIDL

const

context_handle

Enum

File IDL (Interface Definition)

Ignorare

Locale

/Osf

Ref

Ptr

string

Struct

Unione

Unico

RpcCancelThread