Bonjour,
Je tente de générer une ligne de texte mais je bloque sur un changement de type.
J'ai des valeurs en PWSTR qui de base devrait aller dans un char xx[4096]. Je n'ai pas de réel préférence pour le type de destination. Le but est de la récupérer en String dans VB.
J'ai passé ma soirée à chercher une solution mais je ne trouve rien ou je n'ai pas su implémenté ce que j'ai trouvé.
Les infos sur les éléments récupérés :
typedef struct _STORAGE_DEPENDENCY_INFO_TYPE_2 {
DEPENDENT_DISK_FLAG DependencyTypeFlags;
ULONG ProviderSpecificFlags;
VIRTUAL_STORAGE_TYPE VirtualStorageType;
ULONG AncestorLevel;
PWSTR DependencyDeviceName;
PWSTR HostVolumeName;
PWSTR DependentVolumeName;
PWSTR DependentVolumeRelativePath;
} STORAGE_DEPENDENCY_INFO_TYPE_2, *PSTORAGE_DEPENDENCY_INFO_TYPE_2;
Et voici le code :
BSTR __stdcall GetStorageDependencyInfo(LPCWSTR Disk)
{
char SDI[4096];
sprintf_s(SDI, "");
...
for (entry = 0; entry < pInfo->NumberEntries; entry++)
{
//wprintf(L"%u:\n", entry);
//wprintf(L" %u\n", pInfo->Version2Entries[entry].AncestorLevel);
//wprintf(L" %s\n", pInfo->Version2Entries[entry].DependencyDeviceName);
//wprintf(L" %s\n", pInfo->Version2Entries[entry].HostVolumeName);
//wprintf(L" %s\n", pInfo->Version2Entries[entry].DependentVolumeName);
//wprintf(L" %s\n", pInfo->Version2Entries[entry].DependentVolumeRelativePath);
//if (entry > 0) sprintf_s(SDI, "%s$", SDI);
sprintf_s(SDI, "%s%u§", SDI, entry);
sprintf_s(SDI, "%s%u§", SDI, pInfo->Version2Entries[entry].AncestorLevel);
sprintf_s(SDI, "%s%s§", SDI, pInfo->Version2Entries[entry].DependencyDeviceName);
sprintf_s(SDI, "%s%s§", SDI, pInfo->Version2Entries[entry].HostVolumeName);
sprintf_s(SDI, "%s%s§", SDI, pInfo->Version2Entries[entry].DependentVolumeName);
sprintf_s(SDI, "%s%s$", SDI, pInfo->Version2Entries[entry].DependentVolumeRelativePath);
}
...
return SysAllocStringByteLen(SDI, lstrlen(L"SDI"));
}
D'avance, merci pour votre aide,
Nicolas H.
Afficher la suite