いつもお世話になっております。
自己レスですが、IShellFolder->GetDisplayNameOf で取得できることが
わかりました。
ありがとうございました。
サンプルソース
TCHAR szDisplayName[256];
STRRET strret;
PITEMID_CHILD pidlChild;
PITEMID_CHILD pidlDrives;
IShellFolder *pDesktopFolder;
IShellFolder *pMyComputer;
IEnumIDList *pEnumIdList;
CoInitialize(NULL);
SHGetDesktopFolder(&pDesktopFolder);
SHGetFolderLocation(NULL, CSIDL_DRIVES, NULL, 0, &pidlDrives);
pDesktopFolder->BindToObject(pidlDrives, NULL, IID_IShellFolder, (void **)&pMyComputer);
if (pMyComputer->EnumObjects(NULL, SHCONTF_FOLDERS, &pEnumIdList) != S_OK) {
pMyComputer->Release();
pDesktopFolder->Release();
return 0;
}
while (pEnumIdList->Next(1, &pidlChild, NULL) == S_OK) {
pMyComputer->GetDisplayNameOf(pidlChild, SHGDN_NORMAL, &strret);
StrRetToBuf(&strret, pidlChild, szDisplayName, sizeof(szDisplayName) / sizeof(TCHAR));
printf("%s\n", szDisplayName);
CoTaskMemFree(pidlChild);
}
pEnumIdList->Release();
pMyComputer->Release();
pDesktopFolder->Release();
CoUninitialize();