Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1155 lines
41 KiB

  1. // ITIFaces.h -- Interface definitions within the ITSS DLL
  2. #ifndef __ITIFACES_H__
  3. #define __ITIFACES_H__
  4. interface IITClassFactory : public CImpITUnknown
  5. {
  6. public:
  7. IITClassFactory(CITUnknown *pBackObj, IUnknown *punkOuter);
  8. // IClassFactory methods:
  9. virtual /* [local] */ HRESULT STDMETHODCALLTYPE CreateInstance(
  10. /* [unique][in] */ IUnknown __RPC_FAR *pUnkOuter,
  11. /* [in] */ REFIID riid,
  12. /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject) = 0;
  13. virtual /* [local] */ HRESULT STDMETHODCALLTYPE LockServer(
  14. /* [in] */ BOOL fLock) = 0;
  15. };
  16. inline IITClassFactory::IITClassFactory(CITUnknown *pBackObj, IUnknown *punkOuter)
  17. : CImpITUnknown(pBackObj, punkOuter)
  18. {
  19. }
  20. interface IITITStorage : public CImpITUnknown
  21. {
  22. public:
  23. IITITStorage(CITUnknown *pBackObj, IUnknown *punkOuter);
  24. // ITStorage methods:
  25. STDMETHOD(StgCreateDocfile)(const WCHAR * pwcsName, DWORD grfMode,
  26. DWORD reserved, IStorage ** ppstgOpen
  27. ) PURE;
  28. STDMETHOD(StgCreateDocfileOnILockBytes)(ILockBytes * plkbyt, DWORD grfMode,
  29. DWORD reserved, IStorage ** ppstgOpen
  30. ) PURE;
  31. STDMETHOD(StgIsStorageFile)(const WCHAR * pwcsName) PURE;
  32. STDMETHOD(StgIsStorageILockBytes)(ILockBytes * plkbyt) PURE;
  33. STDMETHOD(StgOpenStorage)(const WCHAR * pwcsName, IStorage * pstgPriority,
  34. DWORD grfMode, SNB snbExclude, DWORD reserved,
  35. IStorage ** ppstgOpen
  36. ) PURE;
  37. STDMETHOD(StgOpenStorageOnILockBytes)
  38. (ILockBytes * plkbyt, IStorage * pStgPriority, DWORD grfMode,
  39. SNB snbExclude, DWORD reserved, IStorage ** ppstgOpen
  40. ) PURE;
  41. STDMETHOD(StgSetTimes)(WCHAR const * lpszName, FILETIME const * pctime,
  42. FILETIME const * patime, FILETIME const * pmtime
  43. ) PURE;
  44. STDMETHOD(SetControlData)(PITS_Control_Data pControlData) PURE;
  45. STDMETHOD(DefaultControlData)(PITS_Control_Data *ppControlData) PURE;
  46. STDMETHOD(Compact)(const WCHAR * pwcsName, ECompactionLev iLev) PURE;
  47. };
  48. inline IITITStorage::IITITStorage(CITUnknown *pBackObj, IUnknown *punkOuter)
  49. : CImpITUnknown(pBackObj, punkOuter)
  50. {
  51. }
  52. interface IITITStorageEx : public IITITStorage
  53. {
  54. public:
  55. IITITStorageEx(CITUnknown *pBackObj, IUnknown *punkOuter);
  56. // ITStorageEx methods:
  57. STDMETHOD(StgCreateDocfileForLocale)
  58. (const WCHAR * pwcsName, DWORD grfMode, DWORD reserved, LCID lcid,
  59. IStorage ** ppstgOpen
  60. ) PURE;
  61. STDMETHOD(StgCreateDocfileForLocaleOnILockBytes)
  62. (ILockBytes * plkbyt, DWORD grfMode, DWORD reserved, LCID lcid,
  63. IStorage ** ppstgOpen
  64. ) PURE;
  65. STDMETHOD(QueryFileStampAndLocale)(const WCHAR *pwcsName, DWORD *pFileStamp,
  66. DWORD *pFileLocale) PURE;
  67. STDMETHOD(QueryLockByteStampAndLocale)(ILockBytes * plkbyt, DWORD *pFileStamp,
  68. DWORD *pFileLocale) PURE;
  69. };
  70. inline IITITStorageEx::IITITStorageEx(CITUnknown *pBackObj, IUnknown *punkOuter)
  71. : IITITStorage(pBackObj, punkOuter)
  72. {
  73. }
  74. interface IITParseDisplayName : public CImpITUnknown
  75. {
  76. public:
  77. IITParseDisplayName(CITUnknown *pBackObj, IUnknown *punkOuter);
  78. // IParseDisplayName methods:
  79. virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
  80. /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
  81. /* [in] */ LPOLESTR pszDisplayName,
  82. /* [out] */ ULONG __RPC_FAR *pchEaten,
  83. /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut) = 0;
  84. };
  85. inline IITParseDisplayName::IITParseDisplayName(CITUnknown *pBackObj, IUnknown *punkOuter)
  86. : CImpITUnknown(pBackObj, punkOuter)
  87. {
  88. }
  89. interface IITFSStorage : public CImpITUnknown
  90. {
  91. public:
  92. IITFSStorage(CITUnknown *pBackObj, IUnknown *punkOuter);
  93. // IFSStorage methods
  94. virtual HRESULT STDMETHODCALLTYPE FSCreateStorage
  95. (const WCHAR * pwcsName, DWORD grfMode, IStorage ** ppstgOpen) = 0;
  96. virtual HRESULT STDMETHODCALLTYPE FSOpenStorage
  97. (const WCHAR * pwcsName, DWORD grfMode, IStorage ** ppstgOpen) = 0;
  98. virtual HRESULT STDMETHODCALLTYPE FSCreateStream
  99. (const WCHAR *pwcsName, DWORD grfMode, IStream **ppStrm) = 0;
  100. virtual HRESULT STDMETHODCALLTYPE FSCreateTemporaryStream(IStream **ppStrm) = 0;
  101. virtual HRESULT STDMETHODCALLTYPE FSOpenStream
  102. (const WCHAR *pwcsName, DWORD grfMode, IStream **ppStrm) = 0;
  103. virtual HRESULT STDMETHODCALLTYPE FSCreateLockBytes
  104. (const WCHAR *pwcsName, DWORD grfMode, ILockBytes **ppLkb) = 0;
  105. virtual HRESULT STDMETHODCALLTYPE FSCreateTemporaryLockBytes(ILockBytes **ppLkb) = 0;
  106. virtual HRESULT STDMETHODCALLTYPE FSOpenLockBytes
  107. (const WCHAR *pwcsName, DWORD grfMode, ILockBytes **ppLkb) = 0;
  108. virtual HRESULT STDMETHODCALLTYPE FSStgSetTimes
  109. (WCHAR const * lpszName, FILETIME const * pctime,
  110. FILETIME const * patime, FILETIME const * pmtime
  111. ) = 0;
  112. };
  113. inline IITFSStorage::IITFSStorage
  114. (CITUnknown *pBackObj, IUnknown *punkOuter)
  115. : CImpITUnknown(pBackObj, punkOuter)
  116. {
  117. }
  118. typedef struct _PathInfo
  119. {
  120. union
  121. {
  122. struct
  123. {
  124. CULINT ullcbOffset; // Byte offset location of stream within lockbyte segment
  125. CULINT ullcbData; // Length of the stream in bytes
  126. };
  127. CLSID clsidStorage; // Class ID for a Storage object
  128. }; // NB: Storage paths end with '/'
  129. UINT uStateBits; // State bits for storages
  130. UINT iLockedBytesSegment; // Index to the containing lockbyte segment
  131. UINT cUnrecordedChanges;
  132. ULONG cwcStreamPath; // Length of path string name
  133. WCHAR awszStreamPath[MAX_PATH]; // Path string
  134. } PathInfo, *PPathInfo;
  135. interface IITLockBytes : public CImpITUnknown
  136. {
  137. public:
  138. IITLockBytes(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName);
  139. static HRESULT CopyLockBytes
  140. (ILockBytes *pilbSrc, CULINT ullBaseSrc, CULINT ullLimitSrc,
  141. ILockBytes *pilbDest, CULINT ullBaseDest
  142. );
  143. BOOL IsNamed(const WCHAR *pwszFileName);
  144. enum { CB_COPY_BUFFER = 8192 };
  145. virtual /* [local] */ HRESULT STDMETHODCALLTYPE ReadAt(
  146. /* [in] */ ULARGE_INTEGER ulOffset,
  147. /* [length_is][size_is][out] */ void __RPC_FAR *pv,
  148. /* [in] */ ULONG cb,
  149. /* [out] */ ULONG __RPC_FAR *pcbRead) = 0;
  150. virtual /* [local] */ HRESULT STDMETHODCALLTYPE WriteAt(
  151. /* [in] */ ULARGE_INTEGER ulOffset,
  152. /* [size_is][in] */ const void __RPC_FAR *pv,
  153. /* [in] */ ULONG cb,
  154. /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0;
  155. virtual HRESULT STDMETHODCALLTYPE Flush( void) = 0;
  156. virtual HRESULT STDMETHODCALLTYPE SetSize(
  157. /* [in] */ ULARGE_INTEGER cb) = 0;
  158. virtual HRESULT STDMETHODCALLTYPE LockRegion(
  159. /* [in] */ ULARGE_INTEGER libOffset,
  160. /* [in] */ ULARGE_INTEGER cb,
  161. /* [in] */ DWORD dwLockType) = 0;
  162. virtual HRESULT STDMETHODCALLTYPE UnlockRegion(
  163. /* [in] */ ULARGE_INTEGER libOffset,
  164. /* [in] */ ULARGE_INTEGER cb,
  165. /* [in] */ DWORD dwLockType) = 0;
  166. virtual HRESULT STDMETHODCALLTYPE Stat(
  167. /* [out] */ STATSTG __RPC_FAR *pstatstg,
  168. /* [in] */ DWORD grfStatFlag) = 0;
  169. private:
  170. WCHAR *m_pwcsName;
  171. };
  172. inline IITLockBytes::IITLockBytes(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName)
  173. : CImpITUnknown(pBackObj, punkOuter)
  174. {
  175. m_pwcsName = pwcsName;
  176. }
  177. inline BOOL IITLockBytes::IsNamed(const WCHAR *pwszFileName)
  178. {
  179. return !wcsicmp_0x0409(pwszFileName, m_pwcsName);
  180. }
  181. interface IITPersist : public CImpITUnknown
  182. {
  183. public:
  184. IITPersist(CITUnknown *pBackObj, IUnknown *punkOuter);
  185. virtual HRESULT STDMETHODCALLTYPE GetClassID(
  186. /* [out] */ CLSID __RPC_FAR *pClassID) = 0;
  187. };
  188. inline IITPersist::IITPersist(CITUnknown *pBackObj, IUnknown *punkOuter)
  189. : CImpITUnknown(pBackObj, punkOuter)
  190. {
  191. }
  192. interface IITPersistStream : public IITPersist
  193. {
  194. public:
  195. IITPersistStream(CITUnknown *pBackObj, IUnknown *punkOuter);
  196. virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0;
  197. virtual HRESULT STDMETHODCALLTYPE Load(
  198. /* [unique][in] */ IStream __RPC_FAR *pStm) = 0;
  199. virtual HRESULT STDMETHODCALLTYPE Save(
  200. /* [unique][in] */ IStream __RPC_FAR *pStm,
  201. /* [in] */ BOOL fClearDirty) = 0;
  202. virtual HRESULT STDMETHODCALLTYPE GetSizeMax(
  203. /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbSize) = 0;
  204. };
  205. inline IITPersistStream::IITPersistStream(CITUnknown *pBackObj, IUnknown *punkOuter)
  206. : IITPersist(pBackObj, punkOuter)
  207. {
  208. }
  209. interface IITMoniker : public IITPersistStream
  210. {
  211. public:
  212. IITMoniker(CITUnknown *pBackObj, IUnknown *punkOuter);
  213. // IMoniker methods:
  214. virtual /* [local] */ HRESULT STDMETHODCALLTYPE BindToObject(
  215. /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
  216. /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
  217. /* [in] */ REFIID riidResult,
  218. /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvResult) = 0;
  219. virtual /* [local] */ HRESULT STDMETHODCALLTYPE BindToStorage(
  220. /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
  221. /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
  222. /* [in] */ REFIID riid,
  223. /* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObj) = 0;
  224. virtual HRESULT STDMETHODCALLTYPE Reduce(
  225. /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
  226. /* [in] */ DWORD dwReduceHowFar,
  227. /* [unique][out][in] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkToLeft,
  228. /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkReduced) = 0;
  229. virtual HRESULT STDMETHODCALLTYPE ComposeWith(
  230. /* [unique][in] */ IMoniker __RPC_FAR *pmkRight,
  231. /* [in] */ BOOL fOnlyIfNotGeneric,
  232. /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkComposite) = 0;
  233. virtual HRESULT STDMETHODCALLTYPE Enum(
  234. /* [in] */ BOOL fForward,
  235. /* [out] */ IEnumMoniker __RPC_FAR *__RPC_FAR *ppenumMoniker) = 0;
  236. virtual HRESULT STDMETHODCALLTYPE IsEqual(
  237. /* [unique][in] */ IMoniker __RPC_FAR *pmkOtherMoniker) = 0;
  238. virtual HRESULT STDMETHODCALLTYPE Hash(
  239. /* [out] */ DWORD __RPC_FAR *pdwHash) = 0;
  240. virtual HRESULT STDMETHODCALLTYPE IsRunning(
  241. /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
  242. /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
  243. /* [unique][in] */ IMoniker __RPC_FAR *pmkNewlyRunning) = 0;
  244. virtual HRESULT STDMETHODCALLTYPE GetTimeOfLastChange(
  245. /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
  246. /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
  247. /* [out] */ FILETIME __RPC_FAR *pFileTime) = 0;
  248. virtual HRESULT STDMETHODCALLTYPE Inverse(
  249. /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmk) = 0;
  250. virtual HRESULT STDMETHODCALLTYPE CommonPrefixWith(
  251. /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
  252. /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkPrefix) = 0;
  253. virtual HRESULT STDMETHODCALLTYPE RelativePathTo(
  254. /* [unique][in] */ IMoniker __RPC_FAR *pmkOther,
  255. /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkRelPath) = 0;
  256. virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
  257. /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
  258. /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
  259. /* [out] */ LPOLESTR __RPC_FAR *ppszDisplayName) = 0;
  260. virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
  261. /* [unique][in] */ IBindCtx __RPC_FAR *pbc,
  262. /* [unique][in] */ IMoniker __RPC_FAR *pmkToLeft,
  263. /* [in] */ LPOLESTR pszDisplayName,
  264. /* [out] */ ULONG __RPC_FAR *pchEaten,
  265. /* [out] */ IMoniker __RPC_FAR *__RPC_FAR *ppmkOut) = 0;
  266. virtual HRESULT STDMETHODCALLTYPE IsSystemMoniker(
  267. /* [out] */ DWORD __RPC_FAR *pdwMksys) = 0;
  268. };
  269. inline IITMoniker::IITMoniker(CITUnknown *pBackObj, IUnknown *punkOuter)
  270. : IITPersistStream(pBackObj, punkOuter)
  271. {
  272. }
  273. interface IITPersistStreamInit : public IITPersist
  274. {
  275. public:
  276. IITPersistStreamInit(CITUnknown *pBackObj, IUnknown *punkOuter);
  277. virtual HRESULT STDMETHODCALLTYPE IsDirty( void) = 0;
  278. virtual HRESULT STDMETHODCALLTYPE Load(
  279. /* [in] */ LPSTREAM pStm) = 0;
  280. virtual HRESULT STDMETHODCALLTYPE Save(
  281. /* [in] */ LPSTREAM pStm,
  282. /* [in] */ BOOL fClearDirty) = 0;
  283. virtual HRESULT STDMETHODCALLTYPE GetSizeMax(
  284. /* [out] */ ULARGE_INTEGER __RPC_FAR *pCbSize) = 0;
  285. virtual HRESULT STDMETHODCALLTYPE InitNew( void) = 0;
  286. };
  287. inline IITPersistStreamInit::IITPersistStreamInit(CITUnknown *pBackObj, IUnknown *punkOuter)
  288. : IITPersist(pBackObj, punkOuter)
  289. {
  290. }
  291. interface IITSequentialStream : public CImpITUnknown
  292. {
  293. public:
  294. IITSequentialStream(CITUnknown *pBackObj, IUnknown *punkOuter);
  295. virtual /* [local] */ HRESULT STDMETHODCALLTYPE Read(
  296. /* [length_is][size_is][out] */ void __RPC_FAR *pv,
  297. /* [in] */ ULONG cb,
  298. /* [out] */ ULONG __RPC_FAR *pcbRead) = 0;
  299. virtual /* [local] */ HRESULT STDMETHODCALLTYPE Write(
  300. /* [size_is][in] */ const void __RPC_FAR *pv,
  301. /* [in] */ ULONG cb,
  302. /* [out] */ ULONG __RPC_FAR *pcbWritten) = 0;
  303. };
  304. inline IITSequentialStream::IITSequentialStream(CITUnknown *pBackObj, IUnknown *punkOuter)
  305. : CImpITUnknown(pBackObj, punkOuter)
  306. {
  307. }
  308. interface IITStream : public IITSequentialStream
  309. {
  310. public:
  311. IITStream(CITUnknown *pBackObj, IUnknown *punkOuter);
  312. virtual /* [local] */ HRESULT STDMETHODCALLTYPE Seek(
  313. /* [in] */ LARGE_INTEGER dlibMove,
  314. /* [in] */ DWORD dwOrigin,
  315. /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition) = 0;
  316. virtual HRESULT STDMETHODCALLTYPE SetSize(
  317. /* [in] */ ULARGE_INTEGER libNewSize) = 0;
  318. virtual /* [local] */ HRESULT STDMETHODCALLTYPE CopyTo(
  319. /* [unique][in] */ IStream __RPC_FAR *pstm,
  320. /* [in] */ ULARGE_INTEGER cb,
  321. /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbRead,
  322. /* [out] */ ULARGE_INTEGER __RPC_FAR *pcbWritten) = 0;
  323. virtual HRESULT STDMETHODCALLTYPE Commit(
  324. /* [in] */ DWORD grfCommitFlags) = 0;
  325. virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0;
  326. virtual HRESULT STDMETHODCALLTYPE LockRegion(
  327. /* [in] */ ULARGE_INTEGER libOffset,
  328. /* [in] */ ULARGE_INTEGER cb,
  329. /* [in] */ DWORD dwLockType) = 0;
  330. virtual HRESULT STDMETHODCALLTYPE UnlockRegion(
  331. /* [in] */ ULARGE_INTEGER libOffset,
  332. /* [in] */ ULARGE_INTEGER cb,
  333. /* [in] */ DWORD dwLockType) = 0;
  334. virtual HRESULT STDMETHODCALLTYPE Stat(
  335. /* [out] */ STATSTG __RPC_FAR *pstatstg,
  336. /* [in] */ DWORD grfStatFlag) = 0;
  337. virtual HRESULT STDMETHODCALLTYPE Clone(
  338. /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0;
  339. };
  340. inline IITStream::IITStream(CITUnknown *pBackObj, IUnknown *punkOuter)
  341. : IITSequentialStream(pBackObj, punkOuter)
  342. {
  343. }
  344. interface IITStreamITEx : public IITStream
  345. {
  346. public:
  347. IITStreamITEx(CITUnknown *pBackObj, IUnknown *punkOuter);
  348. virtual HRESULT STDMETHODCALLTYPE SetDataSpaceName(const WCHAR * pwcsDataSpaceName) = 0;
  349. virtual HRESULT STDMETHODCALLTYPE GetDataSpaceName( WCHAR **ppwcsDataSpaceName) = 0;
  350. virtual HRESULT STDMETHODCALLTYPE Flush() = 0;
  351. };
  352. inline IITStreamITEx::IITStreamITEx(CITUnknown *pBackObj, IUnknown *punkOuter)
  353. : IITStream(pBackObj, punkOuter)
  354. {
  355. }
  356. interface IIT_IStorage : public CImpITUnknown
  357. {
  358. public:
  359. IIT_IStorage(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName);
  360. BOOL IsNamed(const WCHAR *pwszFileName);
  361. virtual HRESULT STDMETHODCALLTYPE CreateStream(
  362. /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
  363. /* [in] */ DWORD grfMode,
  364. /* [in] */ DWORD reserved1,
  365. /* [in] */ DWORD reserved2,
  366. /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0;
  367. virtual /* [local] */ HRESULT STDMETHODCALLTYPE OpenStream(
  368. /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
  369. /* [unique][in] */ void __RPC_FAR *reserved1,
  370. /* [in] */ DWORD grfMode,
  371. /* [in] */ DWORD reserved2,
  372. /* [out] */ IStream __RPC_FAR *__RPC_FAR *ppstm) = 0;
  373. virtual HRESULT STDMETHODCALLTYPE CreateStorage(
  374. /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
  375. /* [in] */ DWORD grfMode,
  376. /* [in] */ DWORD dwStgFmt,
  377. /* [in] */ DWORD reserved2,
  378. /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg) = 0;
  379. virtual HRESULT STDMETHODCALLTYPE OpenStorage(
  380. /* [string][unique][in] */ const OLECHAR __RPC_FAR *pwcsName,
  381. /* [unique][in] */ IStorage __RPC_FAR *pstgPriority,
  382. /* [in] */ DWORD grfMode,
  383. /* [unique][in] */ SNB snbExclude,
  384. /* [in] */ DWORD reserved,
  385. /* [out] */ IStorage __RPC_FAR *__RPC_FAR *ppstg) = 0;
  386. virtual HRESULT STDMETHODCALLTYPE CopyTo(
  387. /* [in] */ DWORD ciidExclude,
  388. /* [size_is][unique][in] */ const IID __RPC_FAR *rgiidExclude,
  389. /* [unique][in] */ SNB snbExclude,
  390. /* [unique][in] */ IStorage __RPC_FAR *pstgDest) = 0;
  391. virtual HRESULT STDMETHODCALLTYPE MoveElementTo(
  392. /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
  393. /* [unique][in] */ IStorage __RPC_FAR *pstgDest,
  394. /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName,
  395. /* [in] */ DWORD grfFlags) = 0;
  396. virtual HRESULT STDMETHODCALLTYPE Commit(
  397. /* [in] */ DWORD grfCommitFlags) = 0;
  398. virtual HRESULT STDMETHODCALLTYPE Revert( void) = 0;
  399. virtual /* [local] */ HRESULT STDMETHODCALLTYPE EnumElements(
  400. /* [in] */ DWORD reserved1,
  401. /* [size_is][unique][in] */ void __RPC_FAR *reserved2,
  402. /* [in] */ DWORD reserved3,
  403. /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
  404. virtual HRESULT STDMETHODCALLTYPE DestroyElement(
  405. /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName) = 0;
  406. virtual HRESULT STDMETHODCALLTYPE RenameElement(
  407. /* [string][in] */ const OLECHAR __RPC_FAR *pwcsOldName,
  408. /* [string][in] */ const OLECHAR __RPC_FAR *pwcsNewName) = 0;
  409. virtual HRESULT STDMETHODCALLTYPE SetElementTimes(
  410. /* [string][in] */ const OLECHAR __RPC_FAR *pwcsName,
  411. /* [in] */ const FILETIME __RPC_FAR *pctime,
  412. /* [in] */ const FILETIME __RPC_FAR *patime,
  413. /* [in] */ const FILETIME __RPC_FAR *pmtime) = 0;
  414. virtual HRESULT STDMETHODCALLTYPE SetClass(
  415. /* [in] */ REFCLSID clsid) = 0;
  416. virtual HRESULT STDMETHODCALLTYPE SetStateBits(
  417. /* [in] */ DWORD grfStateBits,
  418. /* [in] */ DWORD grfMask) = 0;
  419. virtual HRESULT STDMETHODCALLTYPE Stat(
  420. /* [out] */ STATSTG __RPC_FAR *pstatstg,
  421. /* [in] */ DWORD grfStatFlag) = 0;
  422. private:
  423. WCHAR *m_pwcsName;
  424. };
  425. inline IIT_IStorage::IIT_IStorage(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName)
  426. : CImpITUnknown(pBackObj, punkOuter)
  427. {
  428. m_pwcsName = pwcsName;
  429. }
  430. inline BOOL IIT_IStorage::IsNamed(const WCHAR *pwszFileName)
  431. {
  432. return !wcsicmp_0x0409(pwszFileName, m_pwcsName);
  433. }
  434. interface IIT_IStorageITEx : public IIT_IStorage
  435. {
  436. public:
  437. IIT_IStorageITEx(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName);
  438. virtual HRESULT STDMETHODCALLTYPE GetCheckSum(ULARGE_INTEGER *puli) = 0;
  439. virtual HRESULT STDMETHODCALLTYPE CreateStreamITEx
  440. (const WCHAR * pwcsName, const WCHAR *pwcsDataSpaceName,
  441. DWORD grfMode, DWORD reserved1, DWORD reserved2,
  442. IStreamITEx ** ppstm
  443. ) = 0;
  444. virtual HRESULT STDMETHODCALLTYPE OpenStreamITEx
  445. (const WCHAR * pwcsName, void * reserved1, DWORD grfMode,
  446. DWORD reserved2, IStreamITEx ** ppstm) = 0;
  447. };
  448. inline IIT_IStorageITEx::IIT_IStorageITEx(CITUnknown *pBackObj, IUnknown *punkOuter, WCHAR *pwcsName)
  449. : IIT_IStorage(pBackObj, punkOuter, pwcsName)
  450. {
  451. }
  452. #undef GetFreeSpace // To avoid a collision with the GetFreeSpace function below
  453. interface IITFileSystem; // A forward declaration
  454. interface IFreeList : public IPersistStreamInit
  455. {
  456. virtual HRESULT STDMETHODCALLTYPE InitNew(IITFileSystem *pITFS, CULINT cbBias) = 0;
  457. virtual HRESULT STDMETHODCALLTYPE InitNew(IITFileSystem *pITFS, CULINT cbBias, UINT cEntriesMax) = 0;
  458. virtual HRESULT STDMETHODCALLTYPE InitLoad(IITFileSystem *pITFS) = 0;
  459. virtual HRESULT STDMETHODCALLTYPE LazyInitNew(IITFileSystem *pITFS) = 0;
  460. virtual HRESULT STDMETHODCALLTYPE RecordFreeList() = 0;
  461. virtual HRESULT STDMETHODCALLTYPE PutFreeSpace(CULINT ullBase, CULINT ullCB) = 0;
  462. virtual HRESULT STDMETHODCALLTYPE GetFreeSpace(CULINT *pullBase, CULINT *pullcb) = 0;
  463. virtual HRESULT STDMETHODCALLTYPE GetFreeSpaceAt(CULINT ullBase, CULINT *pullcb) = 0;
  464. virtual HRESULT STDMETHODCALLTYPE GetEndingFreeSpace
  465. (CULINT *pullBase, CULINT *pullcb) = 0;
  466. virtual HRESULT STDMETHODCALLTYPE GetStatistics
  467. (CULINT *pcbLost, CULINT *pcbSpace) = 0;
  468. };
  469. DECLARE_INTERFACE_(IITFreeList, IITPersistStreamInit)
  470. {
  471. public:
  472. IITFreeList(CITUnknown *pBackObj, IUnknown *punkOuter);
  473. BEGIN_INTERFACE
  474. virtual HRESULT STDMETHODCALLTYPE InitNew(IITFileSystem *pITFS, CULINT cbBias) = 0;
  475. virtual HRESULT STDMETHODCALLTYPE InitNew(IITFileSystem *pITFS, CULINT cbBias, UINT cEntriesMax) = 0;
  476. virtual HRESULT STDMETHODCALLTYPE InitLoad(IITFileSystem *pITFS) = 0;
  477. virtual HRESULT STDMETHODCALLTYPE LazyInitNew(IITFileSystem *pITFS) = 0;
  478. virtual HRESULT STDMETHODCALLTYPE RecordFreeList() = 0;
  479. virtual HRESULT STDMETHODCALLTYPE PutFreeSpace(CULINT ullBase, CULINT ullCB) = 0;
  480. virtual HRESULT STDMETHODCALLTYPE GetFreeSpace(CULINT *pullBase, CULINT *pullcb) = 0;
  481. virtual HRESULT STDMETHODCALLTYPE GetFreeSpaceAt(CULINT ullBase, CULINT *pullcb) = 0;
  482. virtual HRESULT STDMETHODCALLTYPE GetEndingFreeSpace
  483. (CULINT *pullBase, CULINT *pullcb) = 0;
  484. virtual HRESULT STDMETHODCALLTYPE GetStatistics
  485. (CULINT *pcbLost, CULINT *pcbSpace) = 0;
  486. virtual HRESULT STDMETHODCALLTYPE SetFreeListEmpty() = 0;
  487. virtual HRESULT STDMETHODCALLTYPE SetSpaceSize(ULARGE_INTEGER uliCbSpace) = 0;
  488. END_INTERFACE
  489. };
  490. typedef IITFreeList *PIFreeList;
  491. inline IITFreeList::IITFreeList(CITUnknown *pBackObj, IUnknown *punkOuter)
  492. :IITPersistStreamInit(pBackObj, punkOuter)
  493. {
  494. }
  495. interface IEntryHandler : public IUnknown
  496. {
  497. virtual HRESULT STDMETHODCALLTYPE BindInstanceData(LCID lcidInstance, IStream *pStrmInstance) = 0;
  498. virtual HRESULT STDMETHODCALLTYPE SkipEncodedKey (const BYTE **ppbEncodedKey) = 0;
  499. virtual HRESULT STDMETHODCALLTYPE SkipEncodedEntry(const BYTE **ppbEncodedRecord) = 0;
  500. virtual HRESULT STDMETHODCALLTYPE EncodeEntry(PVOID pvEntry, PBYTE pbEncodeBuffer,
  501. UINT cbEncodeBuffer, PUINT pcbEncodedEntry
  502. ) = 0;
  503. virtual HRESULT STDMETHODCALLTYPE DecodeEntry(PVOID pvEntry, const BYTE **ppbEncodedEntry) = 0;
  504. virtual HRESULT STDMETHODCALLTYPE ScanLeafSet(PVOID pvKey, const BYTE *pbStart,
  505. const BYTE *pbLimit,
  506. BYTE **pbEntry,
  507. BYTE **pbEntryLimit
  508. ) = 0;
  509. virtual HRESULT STDMETHODCALLTYPE ScanInternalSet(PVOID pvKey, const BYTE *pbStart,
  510. const BYTE *pbLimit,
  511. BYTE **pbKey,
  512. BYTE **pbKeyLimit
  513. ) = 0;
  514. };
  515. interface IITEntryHandler : public CImpITUnknown
  516. {
  517. IITEntryHandler(CITUnknown *pBackObj, IUnknown *punkOuter);
  518. virtual HRESULT STDMETHODCALLTYPE BindInstanceData(IStream *pStrmInstance) = 0;
  519. virtual HRESULT STDMETHODCALLTYPE SkipEncodedKey (const BYTE **ppbEncodedKey) = 0;
  520. virtual HRESULT STDMETHODCALLTYPE SkipEncodedEntry(const BYTE **ppbEncodedRecord) = 0;
  521. virtual HRESULT STDMETHODCALLTYPE EncodeEntry(PVOID pvEntry, PBYTE pbEncodeBuffer,
  522. UINT cbEncodeBuffer, PUINT pcbEncodedEntry
  523. ) = 0;
  524. virtual HRESULT STDMETHODCALLTYPE DecodeEntry(PVOID pvEntry, const BYTE **ppbEncodedEntry);
  525. virtual HRESULT STDMETHODCALLTYPE ScanLeafSet(PVOID pvKey, const BYTE *pbStart,
  526. const BYTE *pbLimit,
  527. BYTE **pbEntry,
  528. BYTE **pbEntryLimit
  529. ) = 0;
  530. virtual HRESULT STDMETHODCALLTYPE ScanInternalSet(PVOID pvKey, const BYTE *pbStart,
  531. const BYTE *pbLimit,
  532. BYTE **pbKey,
  533. BYTE **pbKeyLimit
  534. ) = 0;
  535. };
  536. inline IITEntryHandler::IITEntryHandler(CITUnknown *pBackObj, IUnknown *punkOuter)
  537. : CImpITUnknown(pBackObj, punkOuter)
  538. {
  539. }
  540. interface IPathManger : public IPersist
  541. {
  542. public:
  543. virtual HRESULT STDMETHODCALLTYPE FlushToLockBytes() = 0;
  544. virtual HRESULT STDMETHODCALLTYPE FindEntry (PPathInfo pSI ) = 0;
  545. virtual HRESULT STDMETHODCALLTYPE CreateEntry(PPathInfo pSINew,
  546. PPathInfo pSIOld,
  547. BOOL fReplace ) = 0;
  548. virtual HRESULT STDMETHODCALLTYPE DeleteEntry(PPathInfo pSI ) = 0;
  549. virtual HRESULT STDMETHODCALLTYPE UpdateEntry(PPathInfo pSI ) = 0;
  550. virtual HRESULT STDMETHODCALLTYPE EnumFromObject
  551. (IUnknown *punkOuter, const WCHAR *pwszPrefix, UINT cwcPrefix,
  552. REFIID riid, PVOID *ppv
  553. ) = 0;
  554. };
  555. interface IITPathManager : public IITPersist
  556. {
  557. public:
  558. IITPathManager(CITUnknown *pBackObj, IUnknown *punkOuter);
  559. virtual HRESULT STDMETHODCALLTYPE FlushToLockBytes() = 0;
  560. virtual HRESULT STDMETHODCALLTYPE FindEntry (PPathInfo pSI ) = 0;
  561. virtual HRESULT STDMETHODCALLTYPE CreateEntry(PPathInfo pSINew,
  562. PPathInfo pSIOld,
  563. BOOL fReplace ) = 0;
  564. virtual HRESULT STDMETHODCALLTYPE DeleteEntry(PPathInfo pSI ) = 0;
  565. virtual HRESULT STDMETHODCALLTYPE UpdateEntry(PPathInfo pSI ) = 0;
  566. virtual HRESULT STDMETHODCALLTYPE EnumFromObject
  567. (IUnknown *punkOuter, const WCHAR *pwszPrefix, UINT cwcPrefix,
  568. REFIID riid, PVOID *ppv
  569. ) = 0;
  570. virtual HRESULT STDMETHODCALLTYPE GetPathDB(IStreamITEx *pTempPDBStrm, BOOL fCompact) = 0;
  571. virtual HRESULT STDMETHODCALLTYPE ForceClearDirty() = 0;
  572. };
  573. inline IITPathManager::IITPathManager(CITUnknown *pBackObj, IUnknown *punkOuter)
  574. : IITPersist(pBackObj, punkOuter)
  575. {
  576. }
  577. interface IITEnumSTATSTG : public CImpITUnknown
  578. {
  579. public:
  580. IITEnumSTATSTG(CITUnknown *pBackObj, IUnknown *punkOuter);
  581. virtual /* [local] */ HRESULT STDMETHODCALLTYPE Next(
  582. /* [in] */ ULONG celt,
  583. /* [in] */ STATSTG __RPC_FAR *rgelt,
  584. /* [out] */ ULONG __RPC_FAR *pceltFetched) = 0;
  585. virtual HRESULT STDMETHODCALLTYPE Skip(
  586. /* [in] */ ULONG celt) = 0;
  587. virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
  588. virtual HRESULT STDMETHODCALLTYPE Clone(
  589. /* [out] */ IEnumSTATSTG __RPC_FAR *__RPC_FAR *ppenum) = 0;
  590. #if 1
  591. virtual HRESULT STDMETHODCALLTYPE GetNextEntryInSeq(/* [in] */ULONG celt,
  592. /* [out] */ PathInfo *rgelt,
  593. /* [out] */ ULONG *pceltFetched) = 0;
  594. virtual HRESULT STDMETHODCALLTYPE GetFirstEntryInSeq(
  595. /* [out] */ PathInfo *rgelt) = 0;
  596. #endif
  597. };
  598. inline IITEnumSTATSTG::IITEnumSTATSTG(CITUnknown *pBackObj, IUnknown *punkOuter)
  599. : CImpITUnknown(pBackObj, punkOuter)
  600. {
  601. }
  602. class CImpITUnknown;
  603. interface IITFileSystem : public CImpITUnknown
  604. {
  605. public:
  606. IITFileSystem(CITUnknown *pBackObj, IUnknown *punkOuter);
  607. // Interface methods
  608. virtual HRESULT __stdcall DeactivateSpace(UINT iSpace) = 0;
  609. virtual CITCriticalSection& CriticalSection() = 0;
  610. virtual HRESULT __stdcall FlushToLockBytes() = 0;
  611. virtual HRESULT __stdcall CreateStorage (IUnknown *pUnkOuter, const WCHAR *pwcsPathPrefix,
  612. DWORD grfMode, IStorageITEx **ppStg) = 0;
  613. virtual HRESULT __stdcall OpenStorage (IUnknown *pUnkOuter, const WCHAR *pwcsPath,
  614. DWORD grfMode, IStorageITEx **ppstg) = 0;
  615. virtual HRESULT __stdcall CreateLockBytes(IUnknown *pUnkOuter, const WCHAR *pwcsPath,
  616. const WCHAR *pwcsDataSpaceName,
  617. BOOL fOverwrite, ILockBytes **ppLKB) = 0;
  618. virtual HRESULT __stdcall OpenLockBytes(IUnknown *pUnkOuter, const WCHAR *pwcsPath,
  619. ILockBytes **ppLKB) = 0;
  620. virtual HRESULT __stdcall CreateStream(IUnknown *pUnkOuter, const WCHAR *pwcsPath,
  621. DWORD grfMode, IStreamITEx **ppStrm) = 0;
  622. virtual HRESULT __stdcall CreateStream
  623. (IUnknown *pUnkOuter, const WCHAR * pwcsName, const WCHAR *pwcsDataSpaceName,
  624. DWORD grfMode, IStreamITEx ** ppstm
  625. ) = 0;
  626. virtual HRESULT __stdcall OpenStream(IUnknown *pUnkOuter, const WCHAR *pwcsPath,
  627. DWORD grfMode, IStreamITEx **ppStream) = 0;
  628. virtual HRESULT __stdcall ConnectStorage(CImpITUnknown *pStg) = 0;
  629. virtual HRESULT __stdcall ConnectLockBytes(CImpITUnknown *pStg) = 0;
  630. virtual HRESULT __stdcall DeleteItem(WCHAR const *pwcsName) = 0;
  631. virtual HRESULT __stdcall RenameItem(WCHAR const *pwcsOldName, WCHAR const *pwcsNewName) = 0;
  632. virtual HRESULT __stdcall UpdatePathInfo(PathInfo *pPathInfo) = 0;
  633. virtual HRESULT __stdcall SetITFSTimes(FILETIME const * pctime,
  634. FILETIME const * patime,
  635. FILETIME const * pmtime
  636. ) = 0;
  637. virtual HRESULT __stdcall GetITFSTimes(FILETIME * pctime,
  638. FILETIME * patime,
  639. FILETIME * pmtime
  640. ) = 0;
  641. virtual HRESULT __stdcall ReallocEntry(PathInfo *pPathInfo, CULINT ullcbNew,
  642. BOOL fCopyContent
  643. ) = 0;
  644. virtual HRESULT __stdcall ReallocInPlace(PathInfo *pPathInfo, CULINT ullcbNew) = 0;
  645. virtual HRESULT __stdcall EnumeratePaths(WCHAR const *pwcsPathPrefix,
  646. IEnumSTATSTG **ppEnumStatStg
  647. ) = 0;
  648. virtual HRESULT __stdcall IsWriteable() = 0;
  649. virtual HRESULT __stdcall FSObjectReleased() = 0;
  650. virtual BOOL __stdcall IsCompacting() = 0;
  651. virtual HRESULT __stdcall QueryFileStampAndLocale(DWORD *pFileStamp,
  652. DWORD *pFileLocale
  653. ) = 0;
  654. virtual HRESULT __stdcall CountWrites() = 0;
  655. };
  656. inline IITFileSystem::IITFileSystem(CITUnknown *pBackObj, IUnknown *punkOuter)
  657. : CImpITUnknown(pBackObj, punkOuter)
  658. {
  659. }
  660. // Need to fix the interface declarations below to reflect the
  661. // revised design for managing transforms and data spaces.
  662. /*
  663. // {A55895FC-89E1-11d0-9E14-00A0C922E6EC}
  664. DEFINE_GUID(IID_ITransformServices,
  665. 0xa55895fc, 0x89e1, 0x11d0, 0x9e, 0x14, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xec);
  666. */
  667. interface IITTransformServices : public CImpITUnknown
  668. {
  669. public:
  670. IITTransformServices(CITUnknown *pBackObj, IUnknown *punkOuter);
  671. virtual HRESULT STDMETHODCALLTYPE PerTransformStorage
  672. (REFCLSID rclsidXForm, IStorage **ppStg) = 0;
  673. virtual HRESULT STDMETHODCALLTYPE PerTransformInstanceStorage
  674. (REFCLSID rclsidXForm, const WCHAR *pwszDataSpace, IStorage **ppStg) = 0;
  675. virtual HRESULT STDMETHODCALLTYPE SetKeys
  676. (REFCLSID rclsidXForm, const WCHAR *pwszDataSpace,
  677. PBYTE pbReadKey, UINT cbReadKey,
  678. PBYTE pbWriteKey, UINT cbWriteKey
  679. ) = 0;
  680. virtual HRESULT STDMETHODCALLTYPE CreateTemporaryStream(IStream **ppStrm) = 0;
  681. };
  682. inline IITTransformServices::IITTransformServices(CITUnknown *pBackObj, IUnknown *punkOuter)
  683. : CImpITUnknown(pBackObj, punkOuter)
  684. {
  685. }
  686. /*
  687. // {7C01FD0C-7BAA-11d0-9E0C-00A0C922E6EC}
  688. DEFINE_GUID(IID_ITransform,
  689. 0x7c01fd0c, 0x7baa, 0x11d0, 0x9e, 0xc, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xec);
  690. */
  691. interface IITTransformFactory : public CImpITUnknown
  692. {
  693. public:
  694. IITTransformFactory(CITUnknown *pBackObj, IUnknown *punkOuter);
  695. virtual HRESULT STDMETHODCALLTYPE DefaultControlData
  696. (XformControlData **ppXFCD) = 0;
  697. virtual HRESULT STDMETHODCALLTYPE CreateTransformInstance
  698. (ITransformInstance *pXFormMedium, // Container data span for transformed data
  699. ULARGE_INTEGER cbUntransformedSize, // Untransformed size of data
  700. PXformControlData pXFCD, // Control data for this instance
  701. const CLSID *rclsidXForm, // Transform Class ID
  702. const WCHAR *pwszDataSpaceName, // Data space name for this instance
  703. ITransformServices *pXformServices, // Utility routines
  704. IKeyInstance *pKeyManager, // Interface to get enciphering keys
  705. ITransformInstance **ppTransformInstance // Out: Instance transform interface
  706. ) = 0;
  707. };
  708. inline IITTransformFactory::IITTransformFactory(CITUnknown *pBackObj, IUnknown *punkOuter)
  709. : CImpITUnknown(pBackObj, punkOuter)
  710. {
  711. }
  712. interface IITTransformInstance : public CImpITUnknown
  713. {
  714. public:
  715. IITTransformInstance(CITUnknown *pBackObj, IUnknown *punkOuter);
  716. virtual HRESULT STDMETHODCALLTYPE ReadAt
  717. (ULARGE_INTEGER ulOffset, void *pv, ULONG cb, ULONG *pcbRead,
  718. ImageSpan *pSpan
  719. ) = 0;
  720. virtual HRESULT STDMETHODCALLTYPE WriteAt
  721. (ULARGE_INTEGER ulOffset, const void *pv, ULONG cb, ULONG *pcbWritten,
  722. ImageSpan *pSpan
  723. ) = 0;
  724. virtual HRESULT STDMETHODCALLTYPE Flush() = 0;
  725. virtual HRESULT STDMETHODCALLTYPE SpaceSize(ULARGE_INTEGER *puliSize) = 0;
  726. // Note: SpaceSize returns the high water mark for the space. That is, the largest
  727. // limit value (uliOffset + uliSize) for any transformed lockbytes created within
  728. // the base (*pXLKB).
  729. };
  730. inline IITTransformInstance::IITTransformInstance(CITUnknown *pBackObj, IUnknown *punkOuter)
  731. : CImpITUnknown(pBackObj, punkOuter)
  732. {
  733. }
  734. /*
  735. // {7C01FD0E-7BAA-11d0-9E0C-00A0C922E6EC}
  736. DEFINE_GUID(IID_ITransformedStream,
  737. 0x7c01fd0e, 0x7baa, 0x11d0, 0x9e, 0xc, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xec);
  738. */
  739. interface IITTransformedStream : public CImpITUnknown
  740. {
  741. public:
  742. IITTransformedStream(CITUnknown *pBackObj, IUnknown *punkOuter);
  743. virtual HRESULT STDMETHODCALLTYPE GetXFormInfo
  744. (PUINT pcbSyncInterval, PUINT pcXforms, PUINT pcdwXformControlData,
  745. CLSID *paclsid, PXformControlData pxfcd, CLSID *pclsidCipher
  746. ) = 0;
  747. virtual HRESULT STDMETHODCALLTYPE Import
  748. (IStorage *pStg, const WCHAR * pwszElementName) = 0;
  749. virtual HRESULT STDMETHODCALLTYPE Export
  750. (IStorage *pStg, const WCHAR * pwszElementName) = 0;
  751. virtual HRESULT STDMETHODCALLTYPE ImportSpace(IStorage *pStg) = 0;
  752. };
  753. inline IITTransformedStream::IITTransformedStream(CITUnknown *pBackObj, IUnknown *punkOuter)
  754. : CImpITUnknown(pBackObj, punkOuter)
  755. {
  756. }
  757. /*
  758. // {7C01FD0F-7BAA-11d0-9E0C-00A0C922E6EC}
  759. DEFINE_GUID(IID_ITransformManager,
  760. 0x7c01fd0f, 0x7baa, 0x11d0, 0x9e, 0xc, 0x0, 0xa0, 0xc9, 0x22, 0xe6, 0xec);
  761. */
  762. interface IITTransformManager : public CImpITUnknown
  763. {
  764. public:
  765. IITTransformManager(CITUnknown *pBackObj, IUnknown *punkOuter);
  766. virtual HRESULT STDMETHODCALLTYPE CreateTransformedStream
  767. (const WCHAR *pwszTransformedStream, UINT cbSyncInterval, UINT cXforms,
  768. const CLSID *paclsidXform, PXformControlData pxfcd,
  769. REFCLSID rclsidCipher,
  770. PBYTE pbEncipherKey, UINT cbEncipherKey,
  771. PBYTE pbDecipherKey, UINT cbDecipherKey,
  772. IITTransformedStream *pITCmpStrm
  773. ) = 0;
  774. virtual HRESULT STDMETHODCALLTYPE OpenTransformedStream
  775. (const WCHAR *pwszTransformedStream,
  776. PBYTE pbEncipherKey, UINT cbEncipherKey,
  777. PBYTE pbDecipherKey, UINT cbDecipherKey,
  778. IITTransformedStream *pITCmpStrm
  779. ) = 0;
  780. virtual HRESULT STDMETHODCALLTYPE DiscardTransformedStream
  781. (const WCHAR *pwszTransformedStream) = 0;
  782. virtual HRESULT STDMETHODCALLTYPE EnumTransformedStreams
  783. (IEnumSTATSTG ** ppenum) = 0;
  784. };
  785. inline IITTransformManager::IITTransformManager(CITUnknown *pBackObj, IUnknown *punkOuter)
  786. : CImpITUnknown(pBackObj, punkOuter)
  787. {
  788. }
  789. interface IOITnetProtocolRoot : public CImpITUnknown
  790. {
  791. public:
  792. IOITnetProtocolRoot(CITUnknown *pBackObj, IUnknown *punkOuter);
  793. virtual HRESULT STDMETHODCALLTYPE Start(
  794. /* [in] */ LPCWSTR szUrl,
  795. /* [in] */ IOInetProtocolSink __RPC_FAR *pOIProtSink,
  796. /* [in] */ IOInetBindInfo __RPC_FAR *pOIBindInfo,
  797. /* [in] */ DWORD grfSTI,
  798. /* [in] */ DWORD dwReserved) = 0;
  799. virtual HRESULT STDMETHODCALLTYPE Continue(
  800. /* [in] */ PROTOCOLDATA __RPC_FAR *pProtocolData) = 0;
  801. virtual HRESULT STDMETHODCALLTYPE Abort(
  802. /* [in] */ HRESULT hrReason,
  803. /* [in] */ DWORD dwOptions) = 0;
  804. virtual HRESULT STDMETHODCALLTYPE Terminate(
  805. /* [in] */ DWORD dwOptions) = 0;
  806. virtual HRESULT STDMETHODCALLTYPE Suspend( void) = 0;
  807. virtual HRESULT STDMETHODCALLTYPE Resume( void) = 0;
  808. };
  809. inline IOITnetProtocolRoot::IOITnetProtocolRoot
  810. (CITUnknown *pBackObj, IUnknown *punkOuter)
  811. : CImpITUnknown(pBackObj, punkOuter)
  812. {
  813. }
  814. interface IOITnetProtocol : public IOITnetProtocolRoot
  815. {
  816. public:
  817. IOITnetProtocol(CITUnknown *pBackObj, IUnknown *punkOuter);
  818. virtual HRESULT STDMETHODCALLTYPE Read(
  819. /* [length_is][size_is][out] */ void __RPC_FAR *pv,
  820. /* [in] */ ULONG cb,
  821. /* [out] */ ULONG __RPC_FAR *pcbRead) = 0;
  822. virtual HRESULT STDMETHODCALLTYPE Seek(
  823. /* [in] */ LARGE_INTEGER dlibMove,
  824. /* [in] */ DWORD dwOrigin,
  825. /* [out] */ ULARGE_INTEGER __RPC_FAR *plibNewPosition) = 0;
  826. virtual HRESULT STDMETHODCALLTYPE LockRequest(
  827. /* [in] */ DWORD dwOptions) = 0;
  828. virtual HRESULT STDMETHODCALLTYPE UnlockRequest( void) = 0;
  829. };
  830. inline IOITnetProtocol::IOITnetProtocol
  831. (CITUnknown *pBackObj, IUnknown *punkOuter)
  832. : IOITnetProtocolRoot(pBackObj, punkOuter)
  833. {
  834. }
  835. interface IOITnetProtocolInfo : public CImpITUnknown
  836. {
  837. public:
  838. IOITnetProtocolInfo(CITUnknown *pBackObj, IUnknown *punkOuter);
  839. virtual HRESULT STDMETHODCALLTYPE ParseUrl(
  840. /* [in] */ LPCWSTR pwzUrl,
  841. /* [in] */ PARSEACTION ParseAction,
  842. /* [in] */ DWORD dwParseFlags,
  843. /* [out] */ LPWSTR pwzResult,
  844. /* [in] */ DWORD cchResult,
  845. /* [out] */ DWORD __RPC_FAR *pcchResult,
  846. /* [in] */ DWORD dwReserved) = 0;
  847. virtual HRESULT STDMETHODCALLTYPE CombineUrl(
  848. /* [in] */ LPCWSTR pwzBaseUrl,
  849. /* [in] */ LPCWSTR pwzRelativeUrl,
  850. /* [in] */ DWORD dwCombineFlags,
  851. /* [out] */ LPWSTR pwzResult,
  852. /* [in] */ DWORD cchResult,
  853. /* [out] */ DWORD __RPC_FAR *pcchResult,
  854. /* [in] */ DWORD dwReserved) = 0;
  855. virtual HRESULT STDMETHODCALLTYPE CompareUrl(
  856. /* [in] */ LPCWSTR pwzUrl1,
  857. /* [in] */ LPCWSTR pwzUrl2,
  858. /* [in] */ DWORD dwCompareFlags) = 0;
  859. virtual HRESULT STDMETHODCALLTYPE QueryInfo(
  860. /* [in] */ LPCWSTR pwzUrl,
  861. /* [in] */ QUERYOPTION OueryOption,
  862. /* [in] */ DWORD dwQueryFlags,
  863. /* [size_is][out][in] */ LPVOID pBuffer,
  864. /* [in] */ DWORD cbBuffer,
  865. /* [out][in] */ DWORD __RPC_FAR *pcbBuf,
  866. /* [in] */ DWORD dwReserved) = 0;
  867. };
  868. inline IOITnetProtocolInfo::IOITnetProtocolInfo
  869. (CITUnknown *pBackObj, IUnknown *punkOuter)
  870. : CImpITUnknown(pBackObj, punkOuter)
  871. {
  872. }
  873. #endif // __ITIFACES_H__