attributo explicit_handle
L'attributo ACF [explicit_handle] specifica che ogni routine ha, come primo parametro, un handle primitivo, ad esempio un tipo di handle_t .
[
explicit_handle
]
interface interface-name
{
...
}
Parametri
-
interface-name
-
Specifica il nome dell'interfaccia.
Commenti
Quando si usa l'attributo [explicit_handle] , ogni routine ha un handle primitivo come primo parametro anche se il file IDL non contiene questo handle nell'elenco di parametri. I prototipi generati nel file di intestazione e nelle routine stub contengono il parametro aggiuntivo e tale parametro viene usato come handle per indirizzare la chiamata remota.
L'attributo [explicit_handle] influisce sulle procedure remote e sulle procedure di serializzazione. Per la serializzazione dei tipi, le routine di supporto vengono generate con il parametro iniziale come handle esplicito (serializzazione). Se l'attributo [explicit_handle] non viene usato, l'applicazione può comunque specificare che un'operazione dispone di un handle esplicito (binding o serializzazione) che indirizza la chiamata. A tale scopo, al file IDL viene fornito un prototipo con un argomento contenente un tipo di handle. Si noti che in modalità predefinita, un argomento che non viene visualizzato per primo può essere usato anche come handle che indirizza la chiamata.
Pertanto, mentre l'attributo [explicit_handle] è un modo per assegnare al prototipo IDL un attributo primitivo [explicit_handle] , non richiede necessariamente una modifica al file IDL. In modalità /osf solo il primo argomento può essere usato come tipo di handle esplicito.
L'attributo [explicit_handle] può essere usato come attributo di interfaccia o attributo dell'operazione. Come attributo di interfaccia, influisce su tutte le operazioni nell'interfaccia e su tutti i tipi che richiedono il supporto della serializzazione. Se, tuttavia, viene usato come attributo dell'operazione, influisce solo su quella particolare operazione. Se un metodo contiene uno o più handle di contesto [in], l'handle di contesto più a sinistra [in] viene usato come handle di associazione e non viene creato alcun handle esplicito aggiuntivo.
Esempi
/* ACF File */
[
explicit_handle
]
interface iface
{
// Interface definition statements.
};
Vedere anche