//------------------------------------------------------- // // ITrackFile // // This interface can be used to create a reliable link // to a file. This interface is not remotable. // //------------------------------------------------------- cpp_quote( "EXTERN_C const CLSID CLSID_TrackFile; // {8790c947-a30b-11d0-8cab-00c04fd90f85}" ) [ local, uuid(8790c948-a30b-11d0-8cab-00c04fd90f85), object, pointer_default(unique), version(1.0) ] interface ITrackFile : IUnknown { import "unknwn.idl"; // Get necessary link state from a path HRESULT CreateFromPath( [in, string] const OLECHAR * poszPath ); // Use state from CreateFromPath to determine // the current path HRESULT Resolve( [in, out] DWORD * pcbPath, [out, size_is(*pcbPath), string] OLECHAR * poszPath, [in] DWORD dwMillisecondTimeout ); // Open the file. Use the path as a hint, but ensure that the // correct object ID is opened. This method will Resolve if // necessary. HRESULT Open( [in, out] DWORD * pcbPathHint, [in, out, size_is(*pcbPathHint), string] OLECHAR * poszPathHint, [in] DWORD dwMillisecondTimeout, [in] DWORD dwDesiredAccess, // access (read-write) mode [in] DWORD dwShareMode, // share mode [in] DWORD dwFlags, [out] HANDLE * phFile ); } //------------------------------------------------------- // // ITrackStorage // // This interface can be used to create a reliable link // to a structured storage. This interface is remotable. // //------------------------------------------------------- [ uuid(8790c94a-a30b-11d0-8cab-00c04fd90f85), object, pointer_default(unique), version(1.0) ] interface ITrackStorage : IUnknown { import "unknwn.idl"; // Get necessary link state from a path HRESULT CreateFromPath( [in, string] const OLECHAR * poszPath ); // Use state from CreateFromPath to determine // the current path HRESULT Resolve( [in, out] DWORD * pcbPath, [out, size_is(*pcbPath), string] OLECHAR * poszPath, [in] DWORD dwMillisecondTimeout ); // Open the storage. Use the path as a hint, but ensure that the // correct object ID is opened. This method will Resolve if // necessary. The parameters are the same as in StgOpenStorageEx. HRESULT OpenStorageEx( [in, out] DWORD * pcbPathHint, [in, out, size_is(*pcbPathHint), string] OLECHAR * poszPathHint, [in] DWORD dwMillisecondTimeout, [in] DWORD grfMode, [in] DWORD stgfmt, // enum [in] DWORD grfAttrs, // reserved [in] REFIID riid, [out, iid_is(riid)] void ** ppObjectOpen ); } //------------------------------------------------------- // // ITrackFileRestricted // // This interface is used for testing purposed only. // It is equivalent to ITrackFile, except the Resolve // method allows for special restrictions. // //------------------------------------------------------- [ local, uuid(8790c949-a30b-11d0-8cab-00c04fd90f85), object, pointer_default(unique), version(1.0) ] interface ITrackFileRestricted : IUnknown { import "unknwn.idl"; cpp_quote("") cpp_quote("// 'Restrictions' flags") typedef enum _TrkMendRestrictions { TRK_MEND_DEFAULT = 0, TRK_MEND_LAST_ONLY = 1, TRK_MEND_DONT_USE_LOG = 2, TRK_MEND_DONT_USE_DC = 4, TRK_MEND_SLEEP_DURING_SEARCH = 8, TRK_MEND_DONT_SEARCH_ALL_VOLUMES = 16, TRK_MEND_DONT_USE_VOLIDS = 32 } TrkMendRestrictions; // Get necessary link state from a path HRESULT CreateFromPath( [in, string] const OLECHAR * poszPath ); // Use state from CreateFromPath to determine // the current path HRESULT Resolve( [in, out] DWORD * pcbPath, [out, size_is(*pcbPath), string] OLECHAR * poszPath, [in] DWORD dwMillisecondTimeout, [in] DWORD Restrictions ); // Open the file. Use the path as a hint, but ensure that the // correct object ID is opened. This method will Resolve if // necessary. HRESULT Open ([in, out] DWORD * pcbPathHint, [in, out, size_is(*pcbPathHint), string] OLECHAR * poszPathHint, [in] DWORD dwMillisecondTimeout, [in] DWORD dwDesiredAccess, // access (read-write) mode [in] DWORD dwShareMode, // share mode [in] DWORD dwFlags, [out] HANDLE * phFile ); }