atributo explicit_handle
O atributo ACF [explicit_handle] especifica que cada procedimento tem, como seu primeiro parâmetro, um identificador primitivo, como um tipo de handle_t .
[
explicit_handle
]
interface interface-name
{
...
}
Parâmetros
-
interface-name
-
Especifica o nome da interface.
Comentários
Quando você usa o atributo [explicit_handle] , cada procedimento tem um identificador primitivo como seu primeiro parâmetro, mesmo que o arquivo IDL não contenha esse identificador em sua lista de parâmetros. Os protótipos emitidos para o arquivo de cabeçalho e as rotinas stub contêm o parâmetro adicional e esse parâmetro é usado como o identificador para direcionar a chamada remota.
O atributo [explicit_handle] afeta procedimentos remotos e procedimentos de serialização. Para serialização de tipo, as rotinas de suporte são geradas com o parâmetro inicial como um identificador explícito (serialização). Se o atributo [explicit_handle] não for usado, o aplicativo ainda poderá especificar que uma operação tenha um identificador explícito (associação ou serialização) direcionando a chamada. Para fazer isso, um protótipo com um argumento que contém um tipo de identificador é fornecido ao arquivo IDL. Observe que, no modo padrão, um argumento que não aparece primeiro também pode ser usado como um identificador que direciona a chamada.
Portanto, embora o atributo [explicit_handle] seja uma maneira de dar ao protótipo de IDL um atributo primitivo [explicit_handle] , ele não requer necessariamente uma alteração no arquivo IDL. No modo /osf , somente o primeiro argumento pode ser usado como um tipo de identificador explícito.
O atributo [explicit_handle] pode ser usado como um atributo de interface ou um atributo de operação. Como um atributo de interface, ele afeta todas as operações na interface e todos os tipos que exigem suporte à serialização. Se, no entanto, ele for usado como um atributo de operação, ele afetará apenas essa operação específica. Se um método contiver um ou mais identificadores de contexto [in], o identificador de contexto mais à esquerda [in] será usado como o identificador de associação e nenhum identificador explícito adicional será criado.
Exemplos
/* ACF File */
[
explicit_handle
]
interface iface
{
// Interface definition statements.
};
Confira também