IMAPIProp::SetProps
Hace referencia a: Outlook 2013 | Outlook 2016
Novedades una o varias propiedades.
HRESULT SetProps(
ULONG cValues,
LPSPropValue lpPropArray,
LPSPropProblemArray FAR * lppProblems
);
Parameters
cValues
[in] Recuento de valores de propiedad a los que apunta el parámetro lpPropArray . El parámetro cValues no debe ser 0.
lpPropArray
[in] Puntero a una matriz de estructuras SPropValue que contienen valores de propiedad que se van a actualizar.
lppProblems
[entrada, salida] En la entrada, un puntero a un puntero a una estructura SPropProblemArray ; de lo contrario, NULL, que indica que no se necesita información de error. Si lppProblems es un puntero válido en la entrada, SetProps devuelve información detallada sobre los errores al actualizar una o varias propiedades.
Valor devuelto
S_OK
Las propiedades se actualizaron correctamente.
Los siguientes valores se pueden devolver en la estructura SPropProblemArray , pero no como valores devueltos para SetProps:
MAPI_E_BAD_CHARWIDTH
Se estableció la marca de MAPI_UNICODE y la implementación no admite Unicode, o MAPI_UNICODE no se estableció y la implementación solo admite Unicode.
MAPI_E_COMPUTED
La propiedad no se puede actualizar porque es de solo lectura, calculada por el proveedor de servicios responsable del objeto.
MAPI_E_INVALID_TYPE
El tipo de propiedad no es válido.
MAPI_E_NO_ACCESS
Se intentó modificar un objeto de solo lectura o acceder a un objeto para el que el usuario no tiene permisos suficientes.
MAPI_E_NOT_ENOUGH_MEMORY
La propiedad no se puede actualizar porque es mayor que el tamaño del búfer de llamada a procedimiento remoto (RPC).
MAPI_E_UNEXPECTED_TYPE
El tipo de propiedad no es el tipo esperado por la implementación de llamada.
Notas a los implementadores
Omita la etiqueta de propiedad PR_NULL (PidTagNull) y todas las propiedades con un tipo de PT_ERROR. No realice cambios ni notifique problemas en la estructura SPropProblemArray .
Devuelve MAPI_E_INVALID_PARAMETER si se incluye una propiedad de tipo PT_OBJECT en la matriz de valores de propiedad. También devuelve este error si se incluye una propiedad de varios valores en la matriz y su miembro cValues está establecido en 0.
Si la llamada se realiza correctamente en general, pero hay problemas para establecer algunas de las propiedades, devuelva S_OK y coloque información sobre los problemas en la entrada adecuada de la estructura SPropProblemArray a la que apunta el parámetro lppProblems .
Notas para los llamadores
En función del proveedor de servicios, también puede cambiar el tipo de propiedad pasando una etiqueta de propiedad que contiene un tipo diferente al que se usó anteriormente con un identificador de propiedad determinado.
Si incluye una etiqueta de propiedad para una propiedad que no es compatible con el objeto y la implementación de SetProps permite la creación de nuevas propiedades, la propiedad se agrega al objeto . Se descarta cualquier valor anterior almacenado con el identificador de propiedad que se usó para la nueva propiedad.
Tenga en cuenta que el valor devuelto S_OK no garantiza que todas las propiedades se actualizaron correctamente. Algunos proveedores almacenan en caché las llamadas a SetProps hasta que reciben una llamada que requiere la intervención del proveedor, como IMAPIProp::SaveChanges o IMAPIProp::GetProps. Por lo tanto, es posible recibir valores de error relacionados con la llamada SetProps con las llamadas posteriores.
Si SetProps devuelve S_OK, compruebe la estructura SPropProblemArray a la que apunta lppProblems para ver si hay problemas para actualizar propiedades individuales. Si SetProps devuelve un error, no compruebe la matriz de problemas de propiedad. En su lugar, llame al método IMAPIProp::GetLastError del objeto.
Al actualizar propiedades grandes, SetProps puede producir un error y devolver MAPI_E_NOT_ENOUGH_MEMORY. No hay ningún tamaño máximo para las propiedades y los distintos objetos pueden tener límites diferentes. Si trata con propiedades potencialmente grandes, esté preparado para llamar al método IMAPIProp::OpenProperty con IID_IStream como identificador de interfaz si SetProps devuelve este valor de error.
Llame a la función MAPIFreeBuffer para liberar la estructura SPropProblemArray .
Referencia de MFCMAPI
Para obtener un ejemplo de código de MFCMAPI, vea la siguiente tabla.
Archivo | Función | Comment |
---|---|---|
PropertyEditor.cpp |
CPropertyEditor::WriteSPropValueToObject |
MFCMAPI usa el método IMAPIProp::SetProps para escribir una propiedad en un objeto una vez editada la propiedad. |