//+------------------------------------------------------------------------- // // Microsoft Windows // Copyright (c) Microsoft Corporation. All rights reserved. // // File: IDirectory.idl // // Contents: IDirectory interface definition // // History: 14-Jun-1995 HenryLee initial version // //-------------------------------------------------------------------------- import "unknwn.idl"; import "transact.idl"; interface IEnumSTATDIR; typedef enum tagSTGFMT { STGFMT_DOCUMENT = 0, STGFMT_DIRECTORY = 1, STGFMT_CATALOG = 2, STGFMT_FILE = 3, STGFMT_ANY = 4, STGFMT_DOCFILE = 5, STGFMT_STORAGE = 6, STGFMT_JUNCTION = 7 } STGFMT; cpp_quote("#define STGFMT_FLATFILE STGFMT_FILE") typedef struct tagSTGTEMPLATE { IUnknown * pUnkTemplate; DWORD ciidTemplate; IID * riidTemplate; } STGTEMPLATE; typedef struct tagOBJECT_SECURITY_INIT { TRUSTEE_W * pTrusteeOwner; TRUSTEE_W * pTrusteeGroup; DWORD cAccessRightsLength; EXPLICIT_ACCESS_W *pAccessRightsList; DWORD cAuditEntriesLength; EXPLICIT_ACCESS_W *pAuditEntriesList; } OBJECT_SECURITY_INIT; typedef struct tagSTGCREATE { DWORD grfAttrs; STGTEMPLATE *pTemplate; OBJECT_SECURITY_INIT *pSecurity; } STGCREATE; typedef struct tagSTGOPEN { STGFMT stgfmt; DWORD grfMode; DWORD grfFlags; ITransaction * pTransaction; } STGOPEN; typedef struct tagSTATDIR { WCHAR * pwcsName; STGFMT stgfmt; DWORD grfAttrs; ULARGE_INTEGER cbSize; FILETIME mtime; FILETIME atime; FILETIME ctime; DWORD grfMode; CLSID clsid; DWORD grfStateBits; } STATDIR; [ object, uuid(5c036ea0-b556-11ce-b33a-00aa00680937), pointer_default(unique) ] interface IDirectory : IUnknown { [local] HRESULT __stdcall CreateElement ([in] const WCHAR * pwcsName, [in] STGCREATE * pStgCreate, [in] STGOPEN * pStgOpen, [in] REFIID riid, [out] void ** ppObjectOpen); [call_as(CreateElement)] HRESULT __stdcall RemoteCreateElement ([in] const WCHAR * pwcsName, [in] STGCREATE * pStgCreate, [in] STGOPEN * pStgOpen, [in] REFIID riid, [out, iid_is(riid)] IUnknown ** ppObjectOpen); [local] HRESULT __stdcall OpenElement ([in] const WCHAR *pwcsName, [in] STGOPEN * pStgOpen, [in] REFIID riid, [out] STGFMT * pStgfmt, [out] void ** ppObjectOpen); [call_as(OpenElement)] HRESULT __stdcall RemoteOpenElement ([in] const WCHAR *pwcsName, [in] STGOPEN * pStgOpen, [in] REFIID riid, [out] STGFMT * pStgfmt, [out, iid_is(riid)] IUnknown ** ppObjectOpen); HRESULT MoveElement ([in] const WCHAR *pwcsName, [in, unique] IDirectory * pdirDest, [in, unique] const WCHAR * pwcsNewName, [in] DWORD grfFlags); HRESULT CommitDirectory ([in] DWORD grfCommitFlags); HRESULT RevertDirectory (); HRESULT DeleteElement ([in] const WCHAR *pwcsName); HRESULT SetTimes ([in, unique] const WCHAR *pwcsName, [in, unique] const FILETIME * pctime, [in, unique] const FILETIME * patime, [in, unique] const FILETIME * pmtime); HRESULT SetDirectoryClass ([in] REFCLSID clsid); // redudant ? HRESULT SetAttributes ([in, unique] const WCHAR * pwcsName, [in] DWORD grfAttrs); HRESULT StatElement ([in, unique] const WCHAR *pwcsName, [out] STATDIR *pstatdir, [in] DWORD grfStatFlag); HRESULT EnumDirectoryElements ([out] IEnumSTATDIR ** ppenum); } [ object, uuid(74c76b90-b556-11ce-b33a-00aa00680937), pointer_default(unique) ] interface IEnumSTATDIR : IUnknown { [local] HRESULT __stdcall Next( [in] ULONG celt, [in] STATDIR * rgelt, [out] ULONG * pceltFetched ); [call_as(Next)] HRESULT __stdcall RemoteNext( [in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATDIR * rgelt, [out] ULONG * pceltFetched ); HRESULT Skip([in] ULONG celt); HRESULT Reset(); HRESULT Clone([out] IEnumSTATDIR ** ppenum); }