Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Хотя в примере в предыдущем разделе показано создание содержимого на устройстве, состоящем из свойств и данных, в этом разделе основное внимание уделяется созданию объекта только свойств.
Передача только свойств выполняется с помощью интерфейсов, описанных в следующей таблице.
Интерфейс | Описание |
---|---|
интерфейс IPortableDeviceContent | Предоставляет доступ к методам, специфичным для содержимого. |
интерфейс IPortableDeviceValues | Используется для получения свойств, описывающих содержимое. |
Функция TransferContactToDevice
в модуле ContentTransfer.cpp примера приложения демонстрирует, как приложение может передавать контактные данные с компьютера на подключенное устройство. В этом примере переданное имя контакта является жестко закодированным именем "Джон Кейн", и переданный контактный номер телефона всегда "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.
- Идентификатор родительского объекта контакта на устройстве. (Это место назначения, в котором устройство будет хранить объект.)
- Тип объекта (контакт).
- Имя контакта (жестко закодированная строка "Джон Кейн").
- Номер телефона контакта (жестко закодированная строка "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;
}
Связанные разделы