Properties-Only オブジェクトをデバイスに転送する

前のトピックの例では、プロパティとデータの両方で構成されるデバイスでのコンテンツの作成を示しましたが、このトピックでは、プロパティのみのオブジェクトの作成に焦点を当てています。

プロパティのみの転送は、次の表で説明するインターフェイスを使用して実行されます。

インターフェイス 説明
IPortableDeviceContent インターフェイス コンテンツ固有のメソッドへのアクセスを提供します。
IPortableDeviceValues インターフェイス コンテンツを記述するプロパティを取得するために使用されます。

 

サンプル アプリケーションの ContentTransfer.cpp モジュールの関数は TransferContactToDevice 、アプリケーションが PC から接続されたデバイスに連絡先情報を転送する方法を示しています。 この特定のサンプルでは、転送された連絡先名はハードコーディングされた "JohnKane" で、転送された連絡先電話番号は常に "425-555-0123" です。

この関数によって実行される最初の TransferContactToDevice タスクは、(コンテンツが転送される) デバイス上の親オブジェクトのオブジェクト識別子を入力するようにユーザーに求めます。

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

次の手順は、サンプルがデバイスに新しい連絡先を書き込むときに使用される連絡先プロパティの取得です。 接触プロパティの取得は、ヘルパー関数によって GetRequiredPropertiesForPropertiesOnlyContact 実行されます。

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

この関数は、 IPortableDeviceValues オブジェクトに次のデータを書き込みます。

  • デバイス上の連絡先の親のオブジェクト識別子。 (これは、デバイスがオブジェクトを格納する宛先です)。
  • オブジェクトの種類 (連絡先)。
  • 連絡先名 ("JohnKane" のハードコーディングされた文字列)。
  • 連絡先の電話番号 ("425-555-0123" というハードコーディングされた文字列)。

最後の手順では、(ヘルパー関数によって設定されたプロパティを使用して) デバイス上にプロパティのみのオブジェクトを GetRequiredPropertiesForPropertiesOnlyContact 作成します。 これは、 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 インターフェイス

IPortableDeviceContent インターフェイス

IPortableDeviceValues インターフェイス

プログラミング ガイド