IABContainer::CreateEntry
Hace referencia a: Outlook 2013 | Outlook 2016
Crea una nueva entrada, que puede ser un usuario de mensajería, una lista de distribución u otro contenedor.
HRESULT CreateEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
ULONG ulCreateFlags,
LPMAPIPROP FAR * lppMAPIPropEntry
);
Parameters
cbEntryID
[in] Recuento de los bytes del identificador de entrada al que apunta el parámetro lpEntryID .
lpEntryID
[in] Puntero al identificador de entrada de una plantilla para crear nuevas entradas de un tipo determinado.
ulCreateFlags
[in] Máscara de bits de marcas que controla cómo se realiza la creación de entradas. Se pueden establecer las siguientes marcas:
CREATE_CHECK_DUP_LOOSE
Se debe realizar un nivel flexible de comprobación de entrada duplicada. La implementación de la comprobación de entrada duplicada flexible es específica del proveedor. Por ejemplo, un proveedor puede definir una coincidencia flexible como dos entradas que tengan el mismo nombre para mostrar.
CREATE_CHECK_DUP_STRICT
Se debe realizar un nivel estricto de comprobación de entrada duplicada. La implementación de la comprobación de entrada duplicada estricta es específica del proveedor. Por ejemplo, un proveedor puede definir una coincidencia estricta como dos entradas cualquiera que tengan el mismo nombre para mostrar y la misma dirección de mensajería.
CREATE_REPLACE
Una nueva entrada debe reemplazar una existente si se determina que los dos son duplicados.
lppMAPIPropEntry
[out] Puntero a un puntero a la entrada recién creada.
Valor devuelto
S_OK
La nueva entrada se creó correctamente.
Comentarios
El método IABContainer::CreateEntry crea una nueva entrada de un tipo determinado en el contenedor especificado, devolviendo un puntero a una implementación de interfaz para obtener más acceso a la entrada. La nueva entrada se crea mediante una plantilla que se ha seleccionado en la lista del contenedor de plantillas disponibles publicadas en su tabla única. Los llamadores acceden a la tabla única de un contenedor llamando a su método IMAPIProp::OpenProperty y solicitando la propiedad PR_CREATE_TEMPLATES (PidTagCreateTemplates).
Notas a los implementadores
Todos los contenedores que admiten el método IABContainer::CreateEntry deben ser modificables. Establezca la marca de AB_MODIFIABLE del contenedor en su propiedad PR_CONTAINER_FLAGS (PidTagContainerFlags) para indicar que se puede modificar.
Debe admitir todas las marcas ulCreateFlags . Sin embargo, la interpretación y el uso de estas marcas son específicos de la implementación, es decir, puede determinar lo que significa la semántica de CREATE_CHECK_DUP_LOOSE y CREATE_CHECK_DUP_STRICT en el contexto de la implementación. Si no puede determinar o no si una entrada es duplicada, permita siempre que se cree la entrada.
Algunos proveedores implementan la comprobación estricta de entradas haciendo coincidir el nombre para mostrar, la dirección de mensajería y la clave de búsqueda en una entrada; otros proveedores limitan la coincidencia a nombre para mostrar y dirección. La comprobación de entradas sueltas a menudo se implementa comprobando solo el nombre para mostrar.
Notas de los implementadores del proveedor de libretas de direcciones de host
Si el contenedor puede crear entradas a partir de las plantillas de otros proveedores, la implementación de CreateEntry debe proporcionar almacenamiento para algunas o todas las propiedades asociadas a las entradas creadas. Por ejemplo, si proporciona almacenamiento para la propiedad PR_DETAILS_TABLE (PidTagDetailsTable) de una entrada, puede generar su cuadro de diálogo de detalles sin tener que depender del proveedor externo.
Si el contenedor puede crear entradas que admitan la propiedad PR_TEMPLATEID (PidTagTemplateid), la implementación de CreateEntry debe hacer lo siguiente:
Llame al método IMAPISupport::OpenTemplateID . OpenTemplateID permite que el código del proveedor externo para la entrada se enlace a la nueva entrada que se va a crear. Los proveedores externos admiten este proceso de enlace para mantener el control sobre las entradas creadas a partir de sus plantillas en los contenedores de proveedores de libreta de direcciones de host.
Realice cualquier inicialización necesaria y rellene el nuevo objeto con todas las propiedades de la entrada del proveedor externo que el objeto devolvió en el parámetro lppMAPIPropNew de OpenTemplateID.
Si OpenTemplateID se ejecuta correctamente, copie las propiedades en la implementación a la que apunta el parámetro lppMAPIPropNew en lugar de directamente a la implementación a la que apunta el parámetro lpMAPIPropData . Inicialice la nueva entrada para su uso sin conexión como haría con cualquier otra entrada de un proveedor externo.
Si OpenTemplateID devuelve un error, CreateEntry debe producir un error. No permita que se cree la entrada. Dado que el proveedor externo puede hacer suposiciones sobre los datos del proveedor, no cree una entrada con un identificador de plantilla que no se haya enlazado correctamente al proveedor externo.
Notas para los llamadores
Cuando createentry devuelve, puede o no ser capaz de acceder inmediatamente al identificador de entrada de la nueva entrada. Algunos proveedores de libretas de direcciones no hacen que esté disponible hasta que haya llamado al método IMAPIProp::SaveChanges de la nueva entrada.
Aunque las marcas de comprobación duplicadas se pasan como parámetros a CreateEntry, la operación de comprobación de duplicados no se produce hasta que se llama a SaveChanges . Por lo tanto, SaveChanges devuelve errores relacionados como MAPI_E_COLLISION, que indica que se ha intentado crear una entrada ya existente, en lugar de CreateEntry.