Leaked source code of windows server 2003
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.
 
 
 
 
 
 

169 lines
4.6 KiB

//+-------------------------------------------------------------------------
//
// 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);
}