Compartilhar via


Transferindo um objeto Properties-Only para o dispositivo

Embora o exemplo no tópico anterior tenha demonstrado a criação de conteúdo em um dispositivo que consiste em propriedades e dados, este tópico se concentra na criação de um objeto somente propriedades.

As transferências somente propriedades são realizadas usando as interfaces descritas na tabela a seguir.

Interface Descrição
IPortableDeviceContent Interface Fornece acesso aos métodos específicos do conteúdo.
IPortableDeviceValues Interface Usado para recuperar propriedades que descrevem o conteúdo.

 

A TransferContactToDevice função no módulo ContentTransfer.cpp do aplicativo de exemplo demonstra como um aplicativo pode transferir informações de contato de um computador para um dispositivo conectado. Neste exemplo específico, o nome de contato transferido é um "John Kane" codificado e o número de telefone de contato transferido é sempre "425-555-0123".

A primeira tarefa realizada pela TransferContactToDevice função é solicitar que o usuário insira um identificador de objeto para o objeto pai no dispositivo (sob o qual o conteúdo será transferido).

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

A próxima etapa é a recuperação de propriedades de contato, que serão usadas quando o exemplo gravar o novo contato no dispositivo. A recuperação de propriedades de contato é executada pela GetRequiredPropertiesForPropertiesOnlyContact função auxiliar.

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

Essa função grava os dados a seguir em um objeto IPortableDeviceValues .

  • O identificador de objeto para o pai do contato no dispositivo. (Este é o destino em que o dispositivo armazenará o objeto.)
  • O tipo de objeto (um contato).
  • O nome do contato (uma cadeia de caracteres codificada em código de "John Kane").
  • O número de telefone de contato (uma cadeia de caracteres embutida em código de "425-555-0123").

A etapa final cria o objeto somente propriedades no dispositivo (usando as propriedades definidas pela GetRequiredPropertiesForPropertiesOnlyContact função auxiliar). Isso é feito chamando o 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 Interface

IPortableDeviceContent Interface

IPortableDeviceValues Interface

Guia de programação