Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: Outlook 2013 | Outlook 2016
Todos os provedores de serviços devem implementar um objeto de status e fornecer propriedades dele para a tabela de status da sessão. Você pode incluir uma ou mais linhas na tabela de status, dependendo do número de recursos que você controla. Um provedor de transporte, por exemplo, deve criar uma linha na tabela de status para cada fila de mensagens que gerencia. Quando ocorrem alterações, a linha da tabela de status apropriada deve ser atualizada. Objetos Status são implementados para fornecer acesso às informações incluídas na tabela status e às informações adicionais não incluídas na tabela.
Para implementar um objeto de status
Implemente o método OpenStatusEntry do objeto de logon. Quando os clientes querem abrir seu objeto de status, eles chamam IMAPISession::OpenEntry. O MAPI atende à solicitação aberta chamando o método OpenStatusEntry do provedor, fazendo com que o provedor abra seu objeto de status e retorne ao cliente um ponteiro para sua implementação IMAPIStatus. Em sua implementação OpenStatusEntry , conclua as seguintes etapas:
Execute as seguintes tarefas se o objeto de logon ainda não tiver criado um objeto de status:
Chame o método IMAPISupport::OpenProfileSection do objeto de suporte para acessar a seção de perfil do provedor.
Crie um novo objeto de status.
Armazene uma referência à seção de perfil no objeto de status do provedor e chame o método IUnknown::AddRef da seção de perfil para incrementar sua contagem de referência.
Armazene uma referência ao objeto de logon no objeto de status do provedor e chame o método IUnknown::AddRef do objeto de logon para incrementar sua contagem de referência.
Armazene uma referência ao objeto de status no objeto de logon do provedor.
Chame o método IUnknown::AddRef do objeto de status para incrementar sua contagem de referência no objeto de logon.
Defina a propriedade PR_OBJECT_TYPE do objeto status (PidTagObjectType) como MAPI_STATUS.
Defina o parâmetro de saída lppMAPIStatus para apontar para o objeto de status e retornar.
Verifique o parâmetro de entrada ulFlags . Se ele estiver definido como MAPI_MODIFY e o provedor der suporte ao acesso de leitura/gravação ao objeto status, retorne um objeto gravável. No entanto, se o provedor não der suporte ao acesso de leitura/gravação ao objeto de status, não falhe. Retornar um objeto de status que seja somente leitura. Os clientes que esperam receber objetos de status de leitura/gravação devem verificar se a permissão de leitura/gravação foi concedida antes de tentar fazer qualquer alteração.
Defina todas as propriedades necessárias do objeto de status e da tabela de status. As propriedades incluídas na linha da tabela de status devem estar disponíveis por meio do objeto status, exceto as propriedades calculadas por MAPI. As propriedades necessárias são as seguintes:
PR_DISPLAY_NAME (PidTagDisplayName)
PR_PROVIDER_DLL_NAME (PidTagProviderDllName)
PR_PROVIDER_DISPLAY (PidTagProviderDisplay)
PR_RESOURCE_TYPE (PidTagResourceType)
PR_RESOURCE_METHODS (PidTagResourceMethods)
PR_RESOURCE_FLAGS (PidTagResourceFlags)
PR_STATUS_CODE (PidTagStatusCode)
Implemente os métodos IMAPIStatus : IMAPIProp apropriados para seu provedor. Dependendo do seu provedor, você não precisa implementar todos os quatro métodos no IMAPIStatus. Cada provedor deve implementar uma versão somente leitura dos métodos da interface IMAPIProp : IUnknown e o método IMAPIStatus::ValidateState .
Os provedores de transporte também devem implementar IMAPIStatus::FlushQueues e todos os provedores devem dar suporte a IMAPIStatus::SettingsDialog. No entanto, o suporte para IMAPIStatus::ChangePassword é opcional. Somente os provedores de serviços que exigem senhas e desejam permitir que os usuários as alterem programaticamente precisam implementar esse método. Para cada método com suporte, defina o bit correspondente na propriedade PR_RESOURCE_METHODS . Por exemplo, se você der suporte apenas a ValidateState e SettingsDialog , defina PR_RESOURCE_METHODS como o seguinte:
STATUS_VALIDATE_STATE | STATUS_SETTINGS_DIALOGOs clientes devem marcar o valor de PR_RESOURCE_METHODS antes de tentar chamar seu objeto status. Lide com chamadas para qualquer um dos seus métodos sem suporte retornando MAPI_E_NO_SUPPORT.
Chame IMAPISupport::ModifyStatusRow durante o logon para adicionar sua linha ou linhas à tabela de status. Transmita uma matriz de valor de propriedade que contenha as informações da coluna para a linha e 0 para o parâmetro ulFlags . Se, em algum momento posterior da sessão, a status do provedor for alterada e for necessário atualizar as informações da coluna, chame ModifyStatusRow novamente com o sinalizador STATUSROW_UPDATE definido.
Para obter mais informações sobre objetos de status, consulte Objetos de status MAPI.