ole32: Implement StgCreatePropStg.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
6e012b52cd
commit
004e9f94e1
|
@ -263,6 +263,7 @@
|
||||||
@ stdcall StgCreateDocfile(wstr long long ptr)
|
@ stdcall StgCreateDocfile(wstr long long ptr)
|
||||||
@ stdcall StgCreateDocfileOnILockBytes(ptr long long ptr)
|
@ stdcall StgCreateDocfileOnILockBytes(ptr long long ptr)
|
||||||
@ stdcall StgCreatePropSetStg(ptr long ptr)
|
@ stdcall StgCreatePropSetStg(ptr long ptr)
|
||||||
|
@ stdcall StgCreatePropStg(ptr ptr ptr long long ptr)
|
||||||
@ stdcall StgCreateStorageEx(wstr long long long ptr ptr ptr ptr)
|
@ stdcall StgCreateStorageEx(wstr long long long ptr ptr ptr ptr)
|
||||||
@ stub StgGetIFillLockBytesOnFile
|
@ stub StgGetIFillLockBytesOnFile
|
||||||
@ stub StgGetIFillLockBytesOnILockBytes
|
@ stub StgGetIFillLockBytesOnILockBytes
|
||||||
|
|
|
@ -2767,3 +2767,46 @@ SERIALIZEDPROPERTYVALUE* WINAPI StgConvertVariantToProperty(const PROPVARIANT *p
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT WINAPI StgCreatePropStg(IUnknown *unk, REFFMTID fmt, const CLSID *clsid,
|
||||||
|
DWORD flags, DWORD reserved, IPropertyStorage **prop_stg)
|
||||||
|
{
|
||||||
|
IStorage *stg;
|
||||||
|
IStream *stm;
|
||||||
|
HRESULT r;
|
||||||
|
|
||||||
|
TRACE("%p %s %s %08x %d %p\n", unk, debugstr_guid(fmt), debugstr_guid(clsid), flags, reserved, prop_stg);
|
||||||
|
|
||||||
|
if (!fmt || reserved)
|
||||||
|
{
|
||||||
|
r = E_INVALIDARG;
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & PROPSETFLAG_NONSIMPLE)
|
||||||
|
{
|
||||||
|
r = IUnknown_QueryInterface(unk, &IID_IStorage, (void **)&stg);
|
||||||
|
if (FAILED(r))
|
||||||
|
goto end;
|
||||||
|
|
||||||
|
/* FIXME: if (flags & PROPSETFLAG_NONSIMPLE), we need to create a
|
||||||
|
* storage, not a stream. For now, disallow it.
|
||||||
|
*/
|
||||||
|
FIXME("PROPSETFLAG_NONSIMPLE not supported\n");
|
||||||
|
IStorage_Release(stg);
|
||||||
|
r = STG_E_INVALIDFLAG;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
r = IUnknown_QueryInterface(unk, &IID_IStream, (void **)&stm);
|
||||||
|
if (FAILED(r))
|
||||||
|
goto end;
|
||||||
|
|
||||||
|
r = PropertyStorage_ConstructEmpty(stm, fmt, flags,
|
||||||
|
STGM_CREATE|STGM_READWRITE|STGM_SHARE_EXCLUSIVE, prop_stg);
|
||||||
|
}
|
||||||
|
|
||||||
|
end:
|
||||||
|
TRACE("returning 0x%08x\n", r);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue