Compartilhar via


Criando uma rotina de retorno de chamada de gabinete

Como a API de Instalação não fornece uma rotina de retorno de chamada de gabinete padrão, você precisa fornecer uma rotina. A rotina de retorno de chamada que a função SetupIterateCabinet requer deve ter o mesmo formato que aqueles apontados por FileCallback.

A seguir está a sintaxe que SetupIterateCabinet usa para enviar uma notificação para a rotina de retorno de chamada.

MsgHandler(          //the specified callback routine
    Context,         //context used by the callback routine
    Notification,    //cabinet notification
    Param1,          //additional notification information
    Param2           //additional notification information
);

O parâmetro Context é um ponteiro nulo para uma variável de contexto ou estrutura que pode ser usada pela rotina de retorno de chamada para armazenar informações que precisam persistir entre chamadas subsequentes para a rotina de retorno de chamada.

A implementação desse contexto é especificada pela rotina de retorno de chamada e nunca é referenciada ou alterada por SetupIterateCabinet.

O parâmetro Notification é um inteiro sem sinal e será um dos valores a seguir.

Notificação Descrição
SPFILENOTIFY_FILEEXTRACTED O arquivo foi extraído do gabinete.
SPFILENOTIFY_FILEINCABINET Um arquivo é encontrado no gabinete.
SPFILENOTIFY_NEEDNEWCABINET O arquivo atual continua no próximo gabinete.

 

Os dois parâmetros finais, Param1 e Param2, também são inteiros sem sinal e contêm informações adicionais relevantes para a notificação. Para obter mais informações sobre as notificações enviadas por SetupIterateCabinet, consulte Notificações de arquivo de gabinete.

Uma rotina SP_FILE_NOTIFY_CALLBACK retorna um inteiro sem sinal. A rotina de retorno de chamada do gabinete deve retornar um dos valores a seguir, dependendo da notificação.

Para a notificação de SPFILENOTIFY_FILEINCABINET, SetupIterateCabinet espera que um dos valores a seguir seja retornado pela rotina de retorno de chamada.

Valor Significado
FILEOP_ABORT Anular o processamento do gabinete.
FILEOP_DOIT Extraia o arquivo atual.
FILEOP_SKIP Ignore o arquivo atual.

 

Para SPFILENOTIFY_NEEDNEWCABINET e SPFILENOTIFY_FILEEXTRACTED notificações, SetupIterateCabinet espera que um dos valores a seguir seja retornado pela rotina de retorno de chamada.

Valor Significado
NO_ERROR Nenhum erro foi encontrado, continue processando o gabinete.
ERROR_XXX Ocorreu um erro do tipo especificado. A função SetupIterateCabinet retornará FALSE e o código de erro especificado será retornado por uma chamada para GetLastError.

 

Se a rotina de retorno de chamada retornar FILEOP_DOIT, a rotina também deverá fornecer um caminho de destino completo. Para obter mais informações , consulte SPFILENOTIFY_FILEINCABINET.