So, ich habs jetzt geschafft
Es schien deswegen nicht zu funktionieren, weil ganz einfach die Property VolumeName nicht gesetzt war und somit einen leeren BSTR enthielt. Da hab ich natürlich gedacht, ich hab was falsch gemacht
Also hab ich mal zum Test einen eigenen VolumeName angegeben, und siehe da: Beim Auslesen krieg ich ihn wieder zu sehen *g*
An die Nachwelt: Hier mein funktionierender Code
Delphi-Quellcode:
aJDMaster.GetJolietProperties(pPropStg);
pPropStg.Enum(penumprop);
while (pEnumProp.Next(1, sps, @fetched) = S_OK) do
begin
ZeroMemory(@propSpec, sizeof(TPropSpec));
ZeroMemory(@PropVar, sizeof(TPropVariant));
propSpec.ulkind := PRSPEC_PROPID;
propSpec.propid := sps.propid;
hr2 := pPropstg.ReadMultiple(1, @propSpec, @propvar);
if sps.lpwstrName = 'VolumeName' then
begin
propvar.bstrVal := 'MEINECD';
pPropStg.WriteMultiple(1, @propspec, @propvar, sps.propid);
if propvar.vt = VT_BSTR then
if propvar.bstrVal <> '' then
ShowMessage(propvar.bstrVal)
else
ShowMessage('CD hat keinen VolumeNamen');
end;
end;
Entschuldigt bitte den u.U. chaotisch wirkendenden Code, aber der ist ja nur da, um zu sehen/zeigen, dass/ob es klappt
Julian J. Pracht