Compartir a través de


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;
}

IPortableDevice (interfaz)

IPortableDeviceContent (Interfaz)

IPortableDeviceValues (Interfaz)

Guía de programación