Transferencia de un objeto Properties-Only al dispositivo
Aunque en el ejemplo del tema anterior se mostró la creación de contenido en un dispositivo que consta de propiedades y datos, este tema se centra en la creación de un objeto de solo propiedades.
Las transferencias solo de propiedad se realizan mediante las interfaces descritas en la tabla siguiente.
Interfaz | Descripción |
---|---|
IPortableDeviceContent (Interfaz) | Proporciona acceso a los métodos específicos del contenido. |
IPortableDeviceValues (Interfaz) | Se usa para recuperar propiedades que describen el contenido. |
La TransferContactToDevice
función del módulo ContentTransfer.cpp de la aplicación de ejemplo muestra cómo una aplicación podría transferir información de contacto de un equipo a un dispositivo conectado. En este ejemplo concreto, el nombre de contacto transferido es un "John Kane" codificado de forma rígida y el número de teléfono de contacto transferido siempre es "425-555-0123".
La primera tarea realizada por la TransferContactToDevice
función es pedir al usuario que escriba un identificador de objeto para el objeto primario en el dispositivo (en el que se transferirá el contenido).
HRESULT hr = S_OK;
WCHAR szSelection[81] = {0};
CComPtr<IPortableDeviceValues> pFinalObjectProperties;
CComPtr<IPortableDeviceContent> pContent;
// Prompt user to enter an object identifier for the parent object on the device to transfer.
printf("Enter the identifer of the parent object which the contact will be transferred under.\n>");
hr = StringCbGetsW(szSelection,sizeof(szSelection));
if (FAILED(hr))
{
printf("An invalid object identifier was specified, aborting content transfer\n");
}
El siguiente paso es la recuperación de las propiedades de contacto, que se usarán cuando el ejemplo escriba el nuevo contacto en el dispositivo. La función auxiliar realiza la GetRequiredPropertiesForPropertiesOnlyContact
recuperación de las propiedades de contacto.
// 2) Get the properties that describe the object being created on the device
if (SUCCEEDED(hr))
{
hr = GetRequiredPropertiesForPropertiesOnlyContact(szSelection, // Parent to transfer the data under
&pFinalObjectProperties); // Returned properties describing the data
if (FAILED(hr))
{
printf("! Failed to get required properties needed to transfer an image file to the device, hr = 0x%lx\n", hr);
}
}
Esta función escribe los siguientes datos en un objeto IPortableDeviceValues .
- Identificador de objeto del elemento primario del contacto en el dispositivo. (Este es el destino donde el dispositivo almacenará el objeto).
- Tipo de objeto (un contacto).
- Nombre de contacto (una cadena codificada de forma rígida de "John Kane").
- Número de teléfono de contacto (una cadena codificada de forma rígida de "425-555-0123").
El paso final crea el objeto de solo propiedades en el dispositivo (mediante las propiedades establecidas por la GetRequiredPropertiesForPropertiesOnlyContact
función auxiliar). Esto se logra llamando al método IPortableDeviceContent::CreateObjectWithPropertiesOnly .
if (SUCCEEDED(hr))
{
PWSTR pszNewlyCreatedObject = NULL;
hr = pContent->CreateObjectWithPropertiesOnly(pFinalObjectProperties, // Properties describing the object data
&pszNewlyCreatedObject);
if (SUCCEEDED(hr))
{
printf("The contact was transferred to the device.\nThe newly created object's ID is '%ws'\n",pszNewlyCreatedObject);
}
if (FAILED(hr))
{
printf("! Failed to transfer contact object to the device, hr = 0x%lx\n",hr);
}
// Free the object identifier string returned from CreateObjectWithPropertiesOnly
CoTaskMemFree(pszNewlyCreatedObject);
pszNewlyCreatedObject = NULL;
}
Temas relacionados