Atributo de devolución de llamada

El [ atributo ] de devolución de llamada declara una función de devolución de llamada estática que existe en el lado cliente de la aplicación distribuida. Las funciones de devolución de llamada proporcionan una manera de que el servidor ejecute código en el cliente.

[callback [ , function-attr-list] ] type-specifier [ptr-declarator] function-name(
        [ [attribute-list] ] type-specifier [declarator]
        , ...);

Parámetros

function-attr-list

Especifica cero o más atributos que se aplican a la función. Los atributos de función válidos son locales; el atributo de puntero [ ] [ ref ] , [ unique ] o [ ptr; ] [ ] [ ] [ _ ] y la cadena de atributos de uso , ignore y el identificador de contexto . Separe varios atributos con comas.

type-specifier

Especifica un tipo base , struct, union, enum type o type identifier. _ Una especificación de almacenamiento opcional puede preceder al especificador de tipo.

ptr-declarator

Especifica cero o más declaradores de puntero. Un declarador de puntero es el mismo que el declarador de puntero usado en C; se construye a partir del * designador, modificadores como , y el calificador const.

function-name

Especifica el nombre del procedimiento remoto.

attribute-list

Especifica cero o más atributos direccionales, atributos de campo, atributos de uso y atributos de puntero adecuados para el tipo de parámetro especificado. Separe varios atributos con comas.

declarador

Especifica un declarador de C estándar, como identificadores, declaradores de puntero y declaradores de matriz. Para obtener más información, vea Array and Sized-Pointer Attributes, arrays, and Arrays and Pointers. El identificador de nombre de parámetro es opcional.

Observaciones

La [ función ] de devolución de llamada es útil cuando el servidor debe obtener información del cliente. Si las aplicaciones de servidor se admiten en Windows 3. x, el servidor podría realizar una llamada a un procedimiento remoto en el Windows 3. x server para obtener la información necesaria. La función de devolución de llamada realiza el mismo propósito y permite al servidor consultar al cliente para obtener información en el contexto de la llamada original.

Las devoluciones de llamada son casos especiales de llamadas remotas que se ejecutan como parte de un único subproceso. Se emite una devolución de llamada en el contexto de una llamada remota. Cualquier procedimiento remoto definido como parte de la misma interfaz que la función de devolución de llamada estática puede llamar a la función de devolución de llamada.

Es importante tener en cuenta que no se recomienda el uso de la devolución de [ llamada en la ] programación multiproceso. Como función de programación de un solo subproceso, no está equipado para admitir las demandas de seguridad que proporciona un entorno de varios subprocesos.

La función RpcCancelThread no se puede usar para cancelar una llamada que pueda enviar una devolución de llamada estática. Si una llamada a procedimiento remoto determinada nunca dará como resultado una devolución de llamada, se puede cancelar. De lo contrario, solo se puede cancelar una llamada si se puede garantizar que no se ha emitido una devolución de llamada para ella.

Solo las secuencias de protocolo local y orientadas a la conexión admiten el atributo de devolución de llamada. El tamaño de los datos de salida para las devoluciones de llamada a través de la [ secuencia de protocolo local está limitado a ] 150 bytes. Si una interfaz RPC usa una secuencia de protocolo sin conexión (datagrama), se producirá un error en las llamadas a procedimientos con el atributo de devolución de llamada.

Los identificadores no se pueden usar como parámetros en las funciones de devolución de llamada. Dado que las devoluciones de llamada siempre se ejecutan en el contexto de una llamada, el identificador de enlace utilizado por el cliente para realizar la llamada al servidor también se usa como identificador de enlace del servidor al cliente.

Las devoluciones de llamada se pueden anidar en cualquier profundidad.

Ejemplos

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

Vea también

Matrices

Tipos base midl

const

identificador de _ contexto

Enum

Archivo de definición de interfaz (IDL)

Ignorar

Local

/osf

ref

Ptr

Cadena

Estructura

union

Único

RpcCancelThread