return S_FALSE;
}
+static HRESULT WINAPI propsys_QueryInterface(IPropertySystem *iface, REFIID riid, void **obj)
+{
+ *obj = NULL;
+
+ if (IsEqualIID(riid, &IID_IPropertySystem) || IsEqualIID(riid, &IID_IUnknown)) {
+ *obj = iface;
+ IPropertySystem_AddRef(iface);
+ return S_OK;
+ }
+
+ FIXME("%s\n", debugstr_guid(riid));
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI propsys_AddRef(IPropertySystem *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI propsys_Release(IPropertySystem *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI propsys_GetPropertyDescription(IPropertySystem *iface,
+ REFPROPERTYKEY propkey, REFIID riid, void **ppv)
+{
+ return PSGetPropertyDescription(propkey, riid, ppv);
+}
+
+static HRESULT WINAPI propsys_GetPropertyDescriptionByName(IPropertySystem *iface,
+ LPCWSTR canonical_name, REFIID riid, void **ppv)
+{
+ FIXME("%s %s %p: stub\n", debugstr_w(canonical_name), debugstr_guid(riid), ppv);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI propsys_GetPropertyDescriptionListFromString(IPropertySystem *iface,
+ LPCWSTR proplist, REFIID riid, void **ppv)
+{
+ return PSGetPropertyDescriptionListFromString(proplist, riid, ppv);
+}
+
+static HRESULT WINAPI propsys_EnumeratePropertyDescriptions(IPropertySystem *iface,
+ PROPDESC_ENUMFILTER filter, REFIID riid, void **ppv)
+{
+ FIXME("%d %s %p: stub\n", filter, debugstr_guid(riid), ppv);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI propsys_FormatForDisplay(IPropertySystem *iface,
+ REFPROPERTYKEY key, REFPROPVARIANT propvar, PROPDESC_FORMAT_FLAGS flags,
+ LPWSTR dest, DWORD destlen)
+{
+ FIXME("%p %p %x %p %d: stub\n", key, propvar, flags, dest, destlen);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI propsys_FormatForDisplayAlloc(IPropertySystem *iface,
+ REFPROPERTYKEY key, REFPROPVARIANT propvar, PROPDESC_FORMAT_FLAGS flags,
+ LPWSTR *text)
+{
+ FIXME("%p %p %x %p: stub\n", key, propvar, flags, text);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI propsys_RegisterPropertySchema(IPropertySystem *iface, LPCWSTR path)
+{
+ return PSRegisterPropertySchema(path);
+}
+
+static HRESULT WINAPI propsys_UnregisterPropertySchema(IPropertySystem *iface, LPCWSTR path)
+{
+ return PSUnregisterPropertySchema(path);
+}
+
+static HRESULT WINAPI propsys_RefreshPropertySchema(IPropertySystem *iface)
+{
+ return PSRefreshPropertySchema();
+}
+
+static const IPropertySystemVtbl propsysvtbl = {
+ propsys_QueryInterface,
+ propsys_AddRef,
+ propsys_Release,
+ propsys_GetPropertyDescription,
+ propsys_GetPropertyDescriptionByName,
+ propsys_GetPropertyDescriptionListFromString,
+ propsys_EnumeratePropertyDescriptions,
+ propsys_FormatForDisplay,
+ propsys_FormatForDisplayAlloc,
+ propsys_RegisterPropertySchema,
+ propsys_UnregisterPropertySchema,
+ propsys_RefreshPropertySchema
+};
+
+static IPropertySystem propsys = { &propsysvtbl };
+
+HRESULT WINAPI PSGetPropertySystem(REFIID riid, void **obj)
+{
+ return IPropertySystem_QueryInterface(&propsys, riid, obj);
+}
+
HRESULT WINAPI PSRegisterPropertySchema(PCWSTR path)
{
FIXME("%s stub\n", debugstr_w(path));