HRESULT _CreateSeparatorLink(IShellLink **ppsl) { IPropertyStore *pps; HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pps)); if (SUCCEEDED(hr)) { PROPVARIANT propvar; hr = InitPropVariantFromBoolean(TRUE, &propvar); if (SUCCEEDED(hr)) { hr = pps->SetValue(PKEY_AppUserModel_IsDestListSeparator, propvar); if (SUCCEEDED(hr)) { hr = pps->Commit(); if (SUCCEEDED(hr)) { hr = pps->QueryInterface(IID_PPV_ARGS(ppsl)); } } PropVariantClear(&propvar); } pps->Release(); } return hr; }
// returns an instance of a memory property store (IPropertyStore) or related interface in the output HRESULT ClonePropertyStoreToMemory(IPropertyStore *ppsSource, REFIID riid, void **ppv) { *ppv = NULL; IPropertyStore *ppsMemory; HRESULT hr = PSCreateMemoryPropertyStore(IID_PPV_ARGS(&ppsMemory)); if (SUCCEEDED(hr)) { hr = CopyPropertyStores(ppsMemory, ppsSource); if (SUCCEEDED(hr)) { hr = ppsMemory->QueryInterface(riid, ppv); } ppsMemory->Release(); } return hr; }