將Properties-Only物件傳送至裝置
雖然上一個主題中的範例示範如何在包含屬性和資料之裝置上建立內容,但本主題著重于建立僅限屬性的物件。
僅屬性傳輸是使用下表中所述的介面來完成。
介面 | 描述 |
---|---|
IPortableDeviceContent 介面 | 提供內容特定方法的存取權。 |
IPortableDeviceValues 介面 | 用來擷取描述內容的屬性。 |
範例 TransferContactToDevice
應用程式 ContentTransfer.cpp 模組中的函式示範應用程式如何將連絡人資訊從電腦傳送到連線的裝置。 在此特定範例中,已轉移的連絡人名稱是硬式編碼的 「John Kane」,而已轉移的連絡人電話號碼一律為 「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 物件。
- 裝置上連絡人父系的物件識別碼。 (這是裝置將儲存 object.)
- 物件類型 (連絡人) 。
- 連絡人名稱 (硬式編碼字串 「John Kane」) 。
- 連絡人電話號碼 (「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;
}
相關主題