#ifndef __DATAIO_H__ #define __DATAIO_H__ /***************************************************************************************************************** FILENAME: DataIo.h COPYRIGHT© 2001 Microsoft Corporation and Executive Software International, Inc. DESCRIPTION: Header file for the Data IO. *****************************************************************************************************************/ //#include //#include // File Rescue GUIDS // {912F3920-B440-11d0-90DB-0060975EC077} DEFINE_GUID(CLSID_EsiUndelNtfs, 0x912f3920, 0xb440, 0x11d0, 0x90, 0xdb, 0x0, 0x60, 0x97, 0x5e, 0xc0, 0x77); // {E2B090D0-BAA3-11d0-90DE-0060975EC077} DEFINE_GUID(CLSID_EsiUndeleteUI, 0xe2b090d0, 0xbaa3, 0x11d0, 0x90, 0xde, 0x0, 0x60, 0x97, 0x5e, 0xc0, 0x77); // {260546E1-E9B4-11d0-910F-0060975EC077} DEFINE_GUID(CLSID_EsiRescueBin, 0x260546e1, 0xe9b4, 0x11d0, 0x91, 0xf, 0x0, 0x60, 0x97, 0x5e, 0xc0, 0x77); // {94665C20-C645-11d0-90EE-0060975EC077} DEFINE_GUID(CLSID_EsiUndelFat, 0x94665c20, 0xc645, 0x11d0, 0x90, 0xee, 0x0, 0x60, 0x97, 0x5e, 0xc0, 0x77); // {C2BD5645-F09A-11d0-9969-0060975B6ADB} DEFINE_GUID(CLSID_EsiFrFtrCtl, 0xc2bd5645, 0xf09a, 0x11d0, 0x99, 0x69, 0x0, 0x60, 0x97, 0x5b, 0x6a, 0xdb); /****************************************************************************************************************/ // DKMS GUIDS // {AE6EFB51-2FBD-11d1-A1FC-0080C88593A5} DEFINE_GUID(CLSID_DfrgCtlDataIo, 0xae6efb51, 0x2fbd, 0x11d1, 0xa1, 0xfc, 0x0, 0x80, 0xc8, 0x85, 0x93, 0xa5); // {80EE4901-33A8-11d1-A213-0080C88593A5} DEFINE_GUID(CLSID_DfrgNtfs, 0x80ee4901, 0x33a8, 0x11d1, 0xa2, 0x13, 0x0, 0x80, 0xc8, 0x85, 0x93, 0xa5); // {80EE4902-33A8-11d1-A213-0080C88593A5} DEFINE_GUID(CLSID_DfrgFat, 0x80ee4902, 0x33a8, 0x11d1, 0xa2, 0x13, 0x0, 0x80, 0xc8, 0x85, 0x93, 0xa5); /****************************************************************************************************************/ typedef struct { WORD dwID; // ESI data structre ID always = 0x4553 'ES' WORD dwType; // Type of data structure WORD dwVersion; // Version number WORD dwCompatibilty;// Compatibilty number ULONG ulDataSize; // Data size - zero = no data WPARAM wparam; // LOWORD(wparam) = Command TCHAR cData; // Start of data - NULL = no data } DATA_IO, *PDATA_IO; /****************************************************************************************************************/ class CClassFactory : public IClassFactory { public: // IUnknown STDMETHODIMP QueryInterface (REFIID riid, void** ppv); STDMETHODIMP_(ULONG) AddRef(void) { return 1; }; STDMETHODIMP_(ULONG) Release(void) { return 1; } // IClassFactory STDMETHODIMP CreateInstance (LPUNKNOWN punkOuter, REFIID iid, void **ppv); STDMETHODIMP LockServer (BOOL fLock) { return E_FAIL; }; }; /****************************************************************************************************************/ class EsiDataObject : public IDataObject { protected: FORMATETC m_aFormatEtc[2]; public: // IUnknown STDMETHOD(QueryInterface)(REFIID riid,void** ppv); STDMETHODIMP_(ULONG) AddRef(void) { return InterlockedIncrement(&m_cRef); }; STDMETHODIMP_(ULONG) Release(void); STDMETHOD(GetData)(LPFORMATETC pformatetcIn, LPSTGMEDIUM pmedium ); STDMETHOD(GetDataHere)(LPFORMATETC pformatetc, LPSTGMEDIUM pmedium ); STDMETHOD(QueryGetData)(LPFORMATETC pformatetc ); STDMETHOD(GetCanonicalFormatEtc)(LPFORMATETC pformatetc, LPFORMATETC pformatetcOut); STDMETHOD(SetData)(LPFORMATETC pformatetc, STGMEDIUM FAR * pmedium, BOOL fRelease); STDMETHOD(EnumFormatEtc)(DWORD dwDirection, LPENUMFORMATETC FAR* ppenumFormatEtc); STDMETHOD(DAdvise)(FORMATETC FAR* pFormatetc, DWORD advf, LPADVISESINK pAdvSink, DWORD FAR* pdwConnection); STDMETHOD(DUnadvise)(DWORD dwConnection); STDMETHOD(EnumDAdvise)(LPENUMSTATDATA FAR* ppenumAdvise); EsiDataObject(void); ~EsiDataObject(void); HANDLE hDataIn; HANDLE hDataOut; private: LONG m_cRef; }; /****************************************************************************************************************/ DWORD InitializeDataIo( IN REFCLSID refCLSID, DWORD dwRegCls ); BOOL ExitDataIo( ); #endif //__DATAIO_H__