1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use shared::minwindef::DWORD;
7 use shared::wtypes::PROPERTYKEY;
8 use um::propidl::{PROPVARIANT, REFPROPVARIANT};
9 use um::propkeydef::REFPROPERTYKEY;
10 use um::unknwnbase::{IUnknown, IUnknownVtbl};
11 use um::winnt::HRESULT;
12 pub type IPropertyDescriptionList = IUnknown; // TODO
13 RIDL!{#[uuid(0x886d8eeb, 0x8cf2, 0x4446, 0x8d, 0x02, 0xcd, 0xba, 0x1d, 0xbd, 0xcf, 0x99)]
14 interface IPropertyStore(IPropertyStoreVtbl): IUnknown(IUnknownVtbl) {
15     fn GetCount(
16         cProps: *mut DWORD,
17     ) -> HRESULT,
18     fn GetAt(
19         iProp: DWORD,
20         pkey: *mut PROPERTYKEY,
21     ) -> HRESULT,
22     fn GetValue(
23         key: REFPROPERTYKEY,
24         pv: *mut PROPVARIANT,
25     ) -> HRESULT,
26     fn SetValue(
27         key: REFPROPERTYKEY,
28         propvar: REFPROPVARIANT,
29     ) -> HRESULT,
30     fn Commit() -> HRESULT,
31 }}
32 ENUM!{enum GETPROPERTYSTOREFLAGS {
33     GPS_DEFAULT = 0,
34     GPS_HANDLERPROPERTIESONLY = 0x1,
35     GPS_READWRITE = 0x2,
36     GPS_TEMPORARY = 0x4,
37     GPS_FASTPROPERTIESONLY = 0x8,
38     GPS_OPENSLOWITEM = 0x10,
39     GPS_DELAYCREATION = 0x20,
40     GPS_BESTEFFORT = 0x40,
41     GPS_NO_OPLOCK = 0x80,
42     GPS_PREFERQUERYPROPERTIES = 0x100,
43     GPS_EXTRINSICPROPERTIES = 0x200,
44     GPS_EXTRINSICPROPERTIESONLY = 0x400,
45     GPS_MASK_VALID = 0x7ff,
46 }}
47