Browse Source

* several small fixes, ipropertystorage related.

git-svn-id: trunk@10216 -
marco 17 years ago
parent
commit
17c021d3d2
2 changed files with 83 additions and 3 deletions
  1. 83 1
      packages/winunits-base/src/activex.pp
  2. 0 2
      packages/winunits-base/src/shlobj.pp

+ 83 - 1
packages/winunits-base/src/activex.pp

@@ -35,12 +35,14 @@ type
    LargeUInt = Types.LargeUInt;
    PLargeInt = Types.PLargeInt;
    PLargeUInt = Types.PLargeUInt;
+   FMTID  =  ^GUID;
+   pFMTID = pGUID;
 
 {Glue types, should be linked to the proper windows unit types}
-TYPE
      Size_t              = DWord;       {??, probably, like Unix, typecastable to pointer?!?}
      OleChar             = WChar;
      LPOLESTR            = ^OLECHAR;
+     PLPOLESTR		 = ^LPOLESTR;
      PROPID = ULONG;
      TPROPID= PROPID;
      PPROPID= ^PROPID;
@@ -1537,6 +1539,40 @@ TYPE
   PPROPVARIANT		         = ^TPROPVARIANT;
 
 
+
+  tagPROPSPEC = record
+                  ulKind : ULONG ;
+                  case boolean of
+                    false : ( propid:propid);
+                    true  :  (lpwstr: LPOLEStr);	   
+                    end; 
+         
+  PROPSPEC= tagPROPSPEC;
+  TPROPSPEC = PROPSPEC;
+  PPROPSPEC = ^TPROPSPEC;
+              
+  tagSTATPROPSTG = record
+                    lpwstrName : LPOLESTR ;
+                    propid:PROPID ;
+                    vt : VARTYPE;
+                    end;
+  STATPROPSTG = tagSTATPROPSTG;
+  TSTATPROPSTG = STATPROPSTG;
+  PSTATPROPSTG = ^TSTATPROPSTG;
+
+      tagSTATPROPSETSTG = record
+          fmtid : FMTID;
+          clsid : CLSID;
+          grfFlags : DWORD;
+          mtime : FILETIME;
+          ctime : FILETIME;
+          atime : FILETIME;
+          dwOSVersion : DWORD;
+       end;
+  STATPROPSETSTG = tagSTATPROPSETSTG;
+  TSTATPROPSETSTG = STATPROPSETSTG;
+  PSTATPROPSETSTG = ^STATPROPSETSTG;
+      
    tagVersionedStream = record
         guidVersion : TGUID;
         pStream : pointer; {IStream}
@@ -1689,6 +1725,8 @@ TYPE
    ICallFactory        = Interface;
    ISynchronize        = Interface;
    ITypeLib            = Interface;
+   IPropertyStorage    = Interface;
+   IEnumSTATPROPSETSTG = interface;
 
    TPROPVARIANT = record
           vt : VARTYPE;
@@ -1776,6 +1814,8 @@ TYPE
 
 // IUnknown is in classesh.inc
 
+
+
    AsyncIUnknown = Interface( IUnknown)
       ['{000e0000-0000-0000-C000-000000000046}']
         Function Begin_QueryInterface(Const riid : TIID): HResult; StdCall;
@@ -3232,6 +3272,48 @@ Type
      function EnumReqCategoriesOfClass(rclsid:pclsid;out ppenumclsid : IEnumClsID):HResult; StdCall;
      end;
 
+    IPropertySetStorage = Interface(IUnknown)
+     ['{0000013A-0000-0000-C000-000000000046}']
+     function Create(rfmtid:pFMTID; pclsid:pCLSID; grfFlags:DWORD; grfMode:DWORD; out ppprstg:IPropertyStorage):HRESULT;
+     function Open(rfmtid:pFMTID; grfMode:DWORD; out ppprstg:IPropertyStorage):HRESULT; StdCall;
+     function Delete(rfmtid:pFMTID):HRESULT; StdCall;
+     function Enum(out ppenum:IEnumSTATPROPSETSTG):HRESULT; StdCall;
+     end;
+ 
+   IEnumSTATPROPSTG = interface( IUnknown)
+     ['{00000139-0000-0000-C000-000000000046}']
+     function Next(celt:ULONG; rgelt:pSTATPROPSTG; pceltFetched:pULONG):HRESULT; StdCall;
+     function Skip(celt:ULONG):HRESULT; StdCall;
+     function Reset:HRESULT; StdCall;
+     function Clone(out ppenum:IEnumSTATPROPSTG):HRESULT; StdCall;
+     end;
+
+   IEnumSTATPROPSETSTG = interface( IUnknown)
+     ['{0000013B-0000-0000-C000-000000000046}']
+     function Next(celt:ULONG; rgelt:pSTATPROPSETSTG; pceltFetched:pULONG):HRESULT; StdCall;
+     function Skip(celt:ULONG):HRESULT; StdCall;
+     function Reset:HRESULT; StdCall;
+     function Clone(out ppenum:IEnumSTATPROPSETSTG):HRESULT; StdCall;
+     end;
+
+
+
+   IPropertyStorage = interface(IUnknown)
+     ['{00000138-0000-0000-C000-000000000046}']
+     function ReadMultiple(cpspec:ULONG; rgpspec:pPROPSPEC; rgpropvar:pPROPVARIANT):HRESULT; StdCall;
+     function WriteMultiple(cpspec:ULONG; rgpspec:pPROPSPEC; rgpropvar:pPROPVARIANT; propidNameFirst:PROPID):HRESULT; StdCall;
+     function DeleteMultiple(cpspec:ULONG; rgpspec:pPROPSPEC):HRESULT; StdCall;
+     function ReadPropertyNames(cpspec:ULONG; rgpropid:pPROPID; rgpropvar:plpolestr):HRESULT; StdCall;
+     function WritePropertyNames(cpspec:ULONG; rgpspec:pPROPID; rgpropvar:plpolestr; rglpwstrName:LPOLESTR):HRESULT; StdCall;
+     function DeletePropertyNames(cpspec:ULONG; rgpspec:pPROPid):HRESULT; StdCall;
+     function Commit(grfCommitFlags:DWORD):HRESULT; StdCall;
+     function Revert:HRESULT; StdCall;
+     function Enum(out ppenum:IEnumSTATPROPSTG):HRESULT; StdCall;
+     function SetTimes(pctime:PFILETIME; patime:PFILETIME; pmtime:PFILETIME):HRESULT; StdCall;
+     function SetClass(clsid:pCLSID):HRESULT; StdCall;
+     function Stat(pstatpsstg:pSTATPROPSETSTG):HRESULT; StdCall;
+     end;
+
 { ole2.h }
 
   type

+ 0 - 2
packages/winunits-base/src/shlobj.pp

@@ -684,8 +684,6 @@ Type
       SFGAOF = ULONG;
       TSFGAOF = SFGAOF;
       PSFGAOF = ^SFGAOF;
-      FMTID  =  ^GUID;
-      pFMTID = pGUID;
       PROPERTYUI_NAME_FLAGS = DWord; // enum
       PROPERTYUI_FORMAT_FLAGS = DWord;
       PROPERTYUI_FLAGS = Dword;