Tabla de estado y objetos de estado
Hace referencia a: Outlook 2013 | Outlook 2016
MAPI proporciona una tabla con información sobre el estado del subsistema MAPI, la cola MAPI, la libreta de direcciones o un proveedor de servicios determinado. Puede acceder a esta tabla llamando a IMAPISession::GetStatusTable.
Cada fila de la tabla de estado representa un objeto de estado implementado por MAPI o un proveedor de servicios. Puede usar un objeto de estado para mostrar la hoja de propiedades de configuración de un proveedor, cambiar la contraseña de un proveedor, cargar o descargar mensajes y comunicarse con un proveedor de transporte determinado.
Hay dos maneras de acceder a un objeto de estado:
A través de la tabla de estado
A través del método OpenStatusEntry de un objeto de inicio de sesión
Dado que los objetos de inicio de sesión no están disponibles para los clientes, debe usar la tabla de estado para acceder a los objetos de estado. El enfoque de la tabla de estado es indirecto, lo que requiere algunas llamadas antes de que se abra el objeto de estado y se devuelva un puntero a su implementación IMAPIStatus .
Para usar la tabla de estado para abrir un objeto de estado
Llame a IMAPIStatus::GetStatusTable para recuperar un puntero IMAPITable .
Llame al método IMAPITable::SetColumns de la tabla de estado para limitar la columna establecida a PR_ENTRYID (PidTagEntryId), PR_RESOURCE_TYPE (PidTagResourceType) y PR_DISPLAY_NAME (PidTagDisplayName).
Limite la vista de tabla a un objeto de estado determinado. En el caso de las implementaciones MAPI, un cliente puede definir una restricción de propiedad mediante PR_RESOURCE_TYPE. Para las implementaciones del proveedor de servicios, un cliente puede restringir en PR_PROVIDER_DISPLAY (PidTagProviderDisplay), el nombre del proveedor o en PR_PROVIDER_DLL_NAME (PidTagProviderDllName), el nombre del archivo DLL del proveedor.
Llame a IMAPITable::Restrict para establecer la restricción.
Llame a HrQueryAllRows, pasando la estructura SPropertyRestriction , para recuperar la fila que representa el estado del proveedor.
Llame a IMAPISession::OpenEntry, especificando el identificador de entrada de la fila de la tabla de estado, para abrir el objeto de estado y recuperar un puntero IMAPIStatus .
Para mostrar una hoja de propiedades, llame al método IMAPIStatus::SettingsDialog del objeto de estado para el proveedor de destino. SettingsDialog muestra una hoja de propiedades para ver y, en algunos casos, cambiar las propiedades de configuración de un proveedor.
Para comunicarse con un proveedor de transporte, llame al método IMAPIStatus::ValidateState de su objeto de estado. ValidateState puede volver a configurar un proveedor de transporte, impedir que el proveedor muestre una interfaz de usuario y controlar una sesión que implique la descarga de encabezados de mensaje desde un servidor remoto, en función de las marcas que se pasen. Por ejemplo, para cancelar la descarga de encabezados remotos, pase la marca ABORT_XP_HEADER_OPERATION a ValidateState. Para conectarse o desconectarse del servidor remoto, pase FORCE_XP_CONNECT o FORCE_XP_DISCONNECT. Para volver a configurar el proveedor, pase CONFIG_CHANGED.
Los clientes que implementan el envío o la recepción de mensajes a petición llaman al método IMAPIStatus::FlushQueues de un proveedor de transporte o de la cola MAPI. Puede pasar tres marcas al método: FLUSH_UPLOAD, FLUSH_DOWNLOAD y FLUSH_FORCE. FLUSH_UPLOAD indica al proveedor o a la cola MAPI que envíe los mensajes que esperan en la cola de salida mientras FLUSH_DOWNLOAD indica al proveedor o a la cola MAPI que reciba los mensajes entrantes. FLUSH_FORCE se puede establecer con cualquiera de las otras marcas para que el objeto de estado realice el vaciado independientemente del tiempo.
No esperes poder llamar a SettingsDialog o ChangePassword en ninguno de los objetos de estado del subsistema MAPI, cola MAPI o libreta de direcciones. Tanto el subsistema como los objetos de estado de la libreta de direcciones solo admiten ValidateState; El objeto de estado de cola MAPI admite FlushQueues además de ValidateState.