Transfert d’un objet Properties-Only vers l’appareil
Alors que l’exemple de la rubrique précédente a montré la création de contenu sur un appareil constitué à la fois de propriétés et de données, cette rubrique se concentre sur la création d’un objet de propriétés uniquement.
Les transferts de propriété uniquement sont effectués à l’aide des interfaces décrites dans le tableau suivant.
Interface | Description |
---|---|
IPortableDeviceContent, interface | Fournit l’accès aux méthodes spécifiques au contenu. |
IPortableDeviceValues, interface | Utilisé pour récupérer les propriétés qui décrivent le contenu. |
La TransferContactToDevice
fonction dans le module ContentTransfer.cpp de l’exemple d’application montre comment une application peut transférer des informations de contact d’un PC vers un appareil connecté. Dans cet exemple particulier, le nom du contact transféré est un « John Kane » codé en dur et le numéro de téléphone du contact transféré est toujours « 425-555-0123 ».
La première tâche accomplie par la TransferContactToDevice
fonction consiste à inviter l’utilisateur à entrer un identificateur d’objet pour l’objet parent sur l’appareil (sous lequel le contenu sera transféré).
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");
}
L’étape suivante consiste à récupérer les propriétés de contact, qui seront utilisées lorsque l’exemple écrit le nouveau contact sur l’appareil. La récupération des propriétés de contact est effectuée par la fonction d’assistance 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);
}
}
Cette fonction écrit les données suivantes dans un objet IPortableDeviceValues .
- Identificateur d’objet du parent du contact sur l’appareil. (Il s’agit de la destination où l’appareil stockera l’objet.)
- Type d’objet (un contact).
- Nom du contact (chaîne codée en dur de « John Kane »).
- Numéro de téléphone du contact (chaîne codée en dur « 425-555-0123 »).
La dernière étape crée l’objet properties-only sur l’appareil (à l’aide des propriétés définies par la fonction d’assistance GetRequiredPropertiesForPropertiesOnlyContact
). Pour ce faire, appelez la méthode 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;
}
Rubriques connexes