MSGSERVICEENTRY
Aplica-se a: Outlook 2013 | Outlook 2016
Define um protótipo para uma função de ponto de entrada do serviço de mensagem para dar suporte à configuração do serviço de mensagem.
Propriedade | Valor |
---|---|
Arquivo de cabeçalho: |
Mapispi.h |
Função definida implementada por: |
Serviços de mensagem |
Função definida chamada por: |
MAPI |
HRESULT MSGSERVICEENTRY(
HINSTANCE hInstance,
LPMALLOC lpMalloc,
LPMAPISUP lpMAPISup,
ULONG_PTR ulUIParam,
ULONG ulFlags,
ULONG ulContext,
ULONG cValues,
LPSPropValue lpProps,
LPPROVIDERADMIN lpProviderAdmin,
LPMAPIERROR FAR * lppMapiError
);
Parâmetros
Hinstance
[in] Manipular a instância do provedor de serviçoSDLL. O identificador normalmente é usado para recuperar recursos.
lpMalloc
[in] Ponteiro para um objeto alocador de memória expondo a interface OLE IMalloc . O serviço de mensagem pode precisar usar esse método de alocação ao trabalhar com determinadas interfaces, como o IStream.
lpMAPISup
[in] Ponteiro para uma implementação de interface IMAPISupport : IUnknown .
ulUIParam
[in] Um valor específico da implementação usado para passar informações da interface do usuário para uma função ou zero. O parâmetro ulUIParam é o identificador de janela pai da caixa de diálogo de configuração e é do tipo HWND (lançado em um ULONG_PTR). Um valor de zero indica que não há uma janela pai.
ulFlags
[in] Bitmask de sinalizadores indicando opções para a função de entrada de serviço. Os seguintes sinalizadores podem ser definidos:
MAPI_UNICODE
As cadeias de caracteres passadas estão no formato Unicode. Se o sinalizador MAPI_UNICODE não estiver definido, as cadeias de caracteres estarão no formato ANSI.
MSG_SERVICE_UI_READ_ONLY
A interface do usuário de configuração do serviço deve exibir a configuração atual, mas não permitir que o usuário a altere.
SERVICE_UI_ALLOWED
Permite que uma caixa de diálogo de configuração seja exibida, se necessário. Quando o sinalizador SERVICE_UI_ALLOWED for definido, a caixa de diálogo só deve ser exibida se a matriz de valor da propriedade lpProps estiver vazia ou não contiver uma configuração válida. Se SERVICE_UI_ALLOWED não estiver definido, uma caixa de diálogo ainda poderá ser exibida se o sinalizador SERVICE_UI_ALWAYS estiver definido.
UI_CURRENT_PROVIDER_FIRST
Solicita que a caixa de diálogo de configuração do provedor ativo seja exibida em cima de outras caixas de diálogo.
SERVICE_UI_ALWAYS
Requer que o serviço de mensagem exiba uma caixa de diálogo de configuração. Se o sinalizador SERVICE_UI_ALWAYS não estiver definido, uma caixa de diálogo de configuração ainda poderá ser exibida se o sinalizador SERVICE_UI_ALLOWED estiver definido e as informações de configuração válidas não estiverem disponíveis na matriz de valor da propriedade lpProps . SERVICE_UI_ALLOWED ou SERVICE_UI_ALWAYS deve ser definido para permitir que uma interface do usuário seja exibida.
ulContext
[in] A operação de configuração que o MAPI está executando no momento. O parâmetro ulContext conterá um dos seguintes valores:
MSG_SERVICE_CONFIGURE
As alterações na configuração do serviço devem ser feitas no perfil. Se o sinalizador SERVICE_UI_ALWAYS estiver definido, o serviço deverá exibir sua caixa de diálogo de configuração. A caixa de diálogo também deve ser exibida se o sinalizador SERVICE_UI_ALLOWED estiver definido e o parâmetro lpProps estiver vazio ou não contiver dados de configuração válidos. Se lpProps contiver dados válidos, nenhuma caixa de diálogo deverá ser exibida e o serviço deverá usar esses dados para fazer a alteração de configuração.
MSG_SERVICE_CREATE
O serviço está sendo adicionado a um perfil. Se o sinalizador SERVICE_UI_ALWAYS ou SERVICE_UI_ALLOWED estiver definido, o serviço deverá exibir sua caixa de diálogo de configuração. Se nenhum dos sinalizadores estiver definido, o serviço deverá falhar.
MSG_SERVICE_DELETE
O serviço está sendo removido de um perfil. Depois de receber esse evento, o serviço deve retornar S_OK.
MSG_SERVICE_INSTALL
O serviço foi instalado na estação de trabalho do usuário de uma rede, disquete ou outro meio externo. Depois de receber esse evento, o serviço geralmente retorna S_OK.
MSG_SERVICE_PROVIDER_CREATE
Solicita que o serviço crie uma instância adicional de um provedor. Se o serviço der suporte a essa operação, ele deve chamar IProviderAdmin::CreateProvider. Se o serviço não der suporte a essa operação, ele poderá retornar MAPI_E_NO_SUPPORT.
MSG_SERVICE_PROVIDER_DELETE
Solicita que o serviço exclua uma instância do provedor. Se o serviço der suporte a essa operação, ele deve chamar IProviderAdmin::D eleteProvider. Se o serviço não der suporte a essa operação, ele poderá retornar MAPI_E_NO_SUPPORT.
MSG_SERVICE_UNINSTALL
O serviço está sendo removido. Depois de receber esse evento, o serviço pode executar todas as tarefas de limpeza que devem ser feitas antes do término do serviço e, em seguida, retornar com um valor de sucesso. Se o usuário cancelar a remoção, o serviço deverá retornar MAPI_E_USER_CANCEL.
cValues
[in] Contagem de valores de propriedade na matriz apontada pelo parâmetro lpProps . O valor do parâmetro cValues será zero se MAPI não estiver passando valores de propriedade.
lpProps
[in] Ponteiro para uma matriz opcional de estruturas SPropValue indicando valores para propriedades com suporte ao provedor que a função usará na configuração do serviço de mensagem. A função só usa esse parâmetro se o parâmetro ulContext estiver definido como MSG_SERVICE_CONFIGURE. Esse parâmetro é comumente usado para passar o caminho para um arquivo para um serviço baseado em arquivo, como um serviço de catálogo de endereços pessoal. Se o sinalizador MSG_SERVICE_CONFIGURE não for passado no parâmetro ulFlags , o parâmetro lpProps deverá ser zero.
lpProviderAdmin
[in] Ponteiro para uma interface IProviderAdmin:IUnknown que a função pode usar para localizar seções de perfil para um provedor específico no serviço de mensagens atual.
lppMapiError
[out] Ponteiro para uma estrutura MAPIERROR . A estrutura é alocada com a função MAPIAllocateBuffer . Todos os membros são opcionais, embora a maioria das estruturas contenha uma cadeia de caracteres de mensagem de erro válida no membro lpszError . Se os membros lpszComponent ou lpszError da estrutura estiverem presentes, sua memória deverá eventualmente ser liberada por uma única chamada para MAPIFreeBuffer na estrutura base.
Valor de retorno
S_OK
A chamada foi bem-sucedida e retornou o valor ou valores esperados.
MAPI_E_UNCONFIGURED
O provedor de serviços não foi configurado.
MAPI_E_USER_CANCEL
O usuário cancelou a operação, normalmente clicando no botão Cancelar em uma caixa de diálogo.
MAPI_E_NO_SUPPORT
O provedor não dá suporte a alterações em seus objetos ou não dá suporte à notificação de alterações.
MAPI_E_BAD_CHARWIDTH
O sinalizador MAPI_UNICODE foi definido e a implementação não dá suporte ao Unicode ou MAPI_UNICODE não foi definido e a implementação dá suporte apenas ao Unicode.
Comentários
Uma função definida usando o protótipo de função MSGSERVICEENTRY permite que os serviços de mensagem se configurem ou executem outras ações específicas do serviço. A função fornece principalmente uma caixa de diálogo na qual o usuário pode alterar configurações específicas para o serviço de mensagem. Ele também pode dar suporte à configuração programática usando a matriz de valor de propriedade passada no parâmetro lpProps . A configuração programática é opcional, a menos que o serviço dê suporte ao Assistente de Perfil, para o qual ele é necessário.
MAPI chama esse ponto de entrada do aplicativo Painel de Controle ou em resposta a um aplicativo cliente chamando IMsgServiceAdmin::CreateMsgService ou IMsgServiceAdmin::ConfigureMsgService.
O MAPI não coloca nenhuma restrição no nome da função que um serviço de mensagem usa para o protótipo MSGSERVICEENTRY , mas prefere o nome ServiceEntry. Não há restrição no ordinal para a função e uma única DLL de provedor pode conter mais de uma função. No entanto, apenas uma das funções pode ser chamada de ServiceEntry.
Um serviço de mensagem pode usar a função BuildDisplayTable e o método IMAPISupport::D oConfigPropsheet para simplificar a implementação da caixa de diálogo de configuração.
É possível que um usuário cancele uma operação de MSG_SERVICE_UNINSTALL. Nesse caso, a função ServiceEntry deve marcar com o usuário para verificar se o serviço não deve ser removido e retornar MAPI_E_USER_CANCEL se o serviço permanecer instalado.
Uma função baseada no protótipo MSGSERVICEENTRY retorna um dos valores HRESULT listados. O MAPI encaminha esse valor ao responder à chamada de um cliente para IMsgServiceAdmin::ConfigureMsgService.
Os serviços de mensagem que exportam uma função de entrada de serviço devem incluir as propriedades PR_SERVICE_DLL_NAME (PidTagServiceDllName) e PR_SERVICE_ENTRY_NAME (PidTagServiceEntryName) na seção serviço de mensagem de MAPISVC.INF.