atributo handle
El atributo [handle] especifica un tipo de identificador definido por el usuario o "personalizado".
typedef [handle] typename;
handle_t __RPC_USER typename_bind (typename);
void __RPC_USER typename_unbind (typename, handle_t);
Parámetros
-
typename
-
Especifica el nombre del tipo de identificador de enlace definido por el usuario.
Observaciones
Los identificadores definidos por el usuario permiten a los desarrolladores diseñar identificadores que sean significativos para la aplicación. Un identificador definido por el usuario solo se puede definir en una declaración de tipo, no en un declarador de función.
Se usa un parámetro de un tipo definido por el atributo [handle] para determinar el enlace de la llamada y se transmite al procedimiento llamado.
El usuario debe proporcionar rutinas de enlace y desenlace para convertir entre tipos de identificador primitivos y definidos por el usuario. Dado un identificador definido por el usuario de typename, el usuario debe proporcionar las rutinas typename_bind y typename_unbind. Por ejemplo, si el tipo de identificador definido por el usuario se denomina MYHANDLE, las rutinas se denominan MYHANDLE_bind y MYHANDLE_unbind.
Si se ejecuta correctamente, la rutina typename_bind debe devolver un identificador de enlace primitivo válido. Si no se realiza correctamente, la rutina debe devolver un valor NULL. Si la rutina devuelve NULL, no se llamará a la rutina typename_unbind . Si la rutina de enlace devuelve un identificador de enlace no válido distinto de NULL, el comportamiento del código auxiliar no está definido.
Cuando el procedimiento remoto tiene un identificador definido por el usuario como parámetro o como identificador implícito, los códigos auxiliares de cliente llaman a la rutina de enlace antes de llamar al procedimiento remoto. Los códigos auxiliares del cliente llaman a la rutina de desenlace después de la llamada remota.
En DCE IDL, un parámetro con el atributo [handle] debe aparecer como primer parámetro de la lista de argumentos de procedimiento remoto. Los parámetros posteriores, incluidos otros atributos [handle], se tratan como parámetros normales. Microsoft admite una extensión a DCE IDL que permite que el parámetro [handle] definido por el usuario aparezca en posiciones distintas del primer parámetro.
Ejemplos
typedef [handle] struct
{
char machine[8];
char nmpipe[256];
} h_service;
handle_t __RPC_USER h_service_bind(h_service);
void __RPC_USER h_service_unbind(h_service, handle_t);
Vea también