⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objidl.idl

📁 本源码是vc环境下的usb程序
💻 IDL
📖 第 1 页 / 共 5 页
字号:
    typedef [unique] IPersistFile *LPPERSISTFILE;

    HRESULT IsDirty
    (
        void
    );

    HRESULT Load
    (
        [in] LPCOLESTR pszFileName,
        [in] DWORD dwMode
    );

    HRESULT Save
    (
        [in, unique] LPCOLESTR pszFileName,
        [in] BOOL fRemember
    );

    HRESULT SaveCompleted
    (
        [in, unique] LPCOLESTR pszFileName
    );

    HRESULT GetCurFile
    (
        [out] LPOLESTR *ppszFileName
    );
}

[
    object,
    uuid(0000010a-0000-0000-C000-000000000046),
    pointer_default(unique)
]

interface IPersistStorage : IPersist
{

    typedef [unique] IPersistStorage *LPPERSISTSTORAGE;

    HRESULT IsDirty
    (
        void
    );

    HRESULT InitNew
    (
        [in, unique] IStorage *pStg
    );

    HRESULT Load
    (
        [in, unique] IStorage *pStg
    );

    HRESULT Save
    (
        [in, unique] IStorage *pStgSave,
        [in] BOOL fSameAsLoad
    );

    HRESULT SaveCompleted
    (
        [in, unique] IStorage *pStgNew
    );

    HRESULT HandsOffStorage
    (
        void
    );
}

[
    object,
    uuid(0000000a-0000-0000-C000-000000000046),
    pointer_default(unique)
]

interface ILockBytes : IUnknown
{

    typedef [unique] ILockBytes *LPLOCKBYTES;

    [local]
    HRESULT ReadAt(
        [in] ULARGE_INTEGER ulOffset,
        [out, size_is(cb), length_is(*pcbRead)]
        void *pv,
        [in] ULONG cb,
        [out] ULONG *pcbRead);

    [call_as(ReadAt)]
    HRESULT _stdcall RemoteReadAt(
        [in] ULARGE_INTEGER ulOffset,
        [out, size_is(cb), length_is(*pcbRead)]
        byte *pv,
        [in] ULONG cb,
        [out] ULONG *pcbRead);

    [local]
    HRESULT WriteAt(
        [in] ULARGE_INTEGER ulOffset,
        [in, size_is(cb)] void const *pv,
        [in] ULONG cb,
        [out] ULONG *pcbWritten);

    [call_as(WriteAt)]
    HRESULT RemoteWriteAt(
        [in] ULARGE_INTEGER ulOffset,
        [in, size_is(cb)] byte const *pv,
        [in] ULONG cb,
        [out] ULONG *pcbWritten);

    HRESULT Flush();

    HRESULT SetSize(
        [in] ULARGE_INTEGER cb);

    HRESULT LockRegion(
        [in] ULARGE_INTEGER libOffset,
        [in] ULARGE_INTEGER cb,
        [in] DWORD dwLockType);

    HRESULT UnlockRegion(
        [in] ULARGE_INTEGER libOffset,
        [in] ULARGE_INTEGER cb,
        [in] DWORD dwLockType);

    HRESULT Stat(
        [out] STATSTG *pstatstg,
        [in] DWORD grfStatFlag);
}

[
    object,
    uuid(00000103-0000-0000-C000-000000000046),
    pointer_default(unique)
]

interface IEnumFORMATETC : IUnknown
{

    typedef [unique] IEnumFORMATETC *LPENUMFORMATETC;


    typedef struct tagDVTARGETDEVICE {
        DWORD tdSize;
        WORD tdDriverNameOffset;
        WORD tdDeviceNameOffset;
        WORD tdPortNameOffset;
        WORD tdExtDevmodeOffset;
        [size_is(tdSize - sizeof(DWORD) - 4*sizeof(WORD))]
        BYTE tdData[];
    }DVTARGETDEVICE;


    typedef CLIPFORMAT *LPCLIPFORMAT;

    typedef struct tagFORMATETC {
        CLIPFORMAT cfFormat;
        [unique] DVTARGETDEVICE * ptd;
        DWORD dwAspect;
        LONG lindex;
        DWORD tymed;
    }FORMATETC, *LPFORMATETC;

    [local]
    HRESULT Next(
        [in] ULONG celt,
        [out, size_is(celt), length_is(*pceltFetched )]
        FORMATETC *rgelt,
        [out] ULONG *pceltFetched);

    [call_as(Next)]
    HRESULT RemoteNext(
        [in] ULONG celt,
        [out, size_is(celt), length_is(*pceltFetched )]
        FORMATETC *rgelt,
        [out] ULONG *pceltFetched);

    HRESULT Skip(
        [in] ULONG celt);

    HRESULT Reset();

    HRESULT Clone(
        [out] IEnumFORMATETC **ppenum);
}

[
    object,
    uuid(00000105-0000-0000-C000-000000000046),
    pointer_default(unique)
]

interface IEnumSTATDATA : IUnknown
{

    typedef [unique] IEnumSTATDATA *LPENUMSTATDATA;

    //Advise Flags
    typedef enum tagADVF
    {
        ADVF_NODATA = 1,
        ADVF_PRIMEFIRST = 2,
        ADVF_ONLYONCE = 4,
        ADVF_DATAONSTOP = 64,
        ADVFCACHE_NOHANDLER = 8,
        ADVFCACHE_FORCEBUILTIN = 16,
        ADVFCACHE_ONSAVE = 32
    } ADVF;


    // Stats for data; used by several enumerations and by at least one
    // implementation of IDataAdviseHolder; if a field is not used, it
    // will be NULL.

    typedef struct tagSTATDATA
    {                              // field used by:
        FORMATETC formatetc;       // EnumAdvise, EnumData (cache), EnumFormats
        DWORD advf;                // EnumAdvise, EnumData (cache)
        [unique] IAdviseSink * pAdvSink; // EnumAdvise
        DWORD dwConnection;        // EnumAdvise
    } STATDATA;
    typedef STATDATA *LPSTATDATA;

    [local]
    HRESULT Next(
        [in] ULONG celt,
        [out, size_is(celt), length_is(*pceltFetched)]
        STATDATA *rgelt,
        [out] ULONG *pceltFetched);

    [call_as(Next)]
    HRESULT RemoteNext(
        [in] ULONG celt,
        [out, size_is(celt), length_is(*pceltFetched)]
        STATDATA *rgelt,
        [out] ULONG *pceltFetched);

    HRESULT Skip(
        [in] ULONG celt);

    HRESULT Reset();

    HRESULT Clone(
        [out] IEnumSTATDATA **ppenum);
}

[
    object,
    uuid(00000012-0000-0000-C000-000000000046),
    pointer_default(unique)
]

interface IRootStorage : IUnknown
{

    typedef [unique] IRootStorage *LPROOTSTORAGE;

    HRESULT SwitchToFile
    (
        [in] LPOLESTR pszFile
    );
}


/****************************************************************************
 *  Notification Interfaces
 ****************************************************************************/

[
    object,
    uuid(0000010f-0000-0000-C000-000000000046),
#if (__midl >= 500)
    async_uuid(00000150-0000-0000-C000-000000000046),
#endif
    pointer_default(unique)
]

interface IAdviseSink : IUnknown
{

    typedef IAdviseSink *LPADVISESINK;

    typedef [v1_enum] enum tagTYMED {
        TYMED_HGLOBAL = 1,
        TYMED_FILE = 2,
        TYMED_ISTREAM = 4,
        TYMED_ISTORAGE = 8,
        TYMED_GDI = 16,
        TYMED_MFPICT = 32,
        TYMED_ENHMF = 64,
        TYMED_NULL = 0
    } TYMED;

    cpp_quote("#ifndef RC_INVOKED")
    cpp_quote("#if _MSC_VER >= 1200")
    cpp_quote("#pragma warning(push)")
    cpp_quote("#endif")
    cpp_quote("#pragma warning(disable:4200)")
    cpp_quote("#endif")

    typedef struct tagRemSTGMEDIUM {
        DWORD tymed;
        DWORD dwHandleType;
        unsigned long pData;
        unsigned long pUnkForRelease;
        unsigned long cbData;
        [size_is(cbData)] byte data[];
    } RemSTGMEDIUM;
    cpp_quote("#ifndef RC_INVOKED")
    cpp_quote("#if _MSC_VER >= 1200")
    cpp_quote("#pragma warning(pop)")
    cpp_quote("#else")
    cpp_quote("#pragma warning(default:4200)")
    cpp_quote("#endif")
    cpp_quote("#endif")


cpp_quote("#ifdef NONAMELESSUNION")
cpp_quote("typedef struct tagSTGMEDIUM {")
cpp_quote("    DWORD tymed;")
cpp_quote("    union {")
cpp_quote("        HBITMAP hBitmap;")
cpp_quote("        HMETAFILEPICT hMetaFilePict;")
cpp_quote("        HENHMETAFILE hEnhMetaFile;")
cpp_quote("        HGLOBAL hGlobal;")
cpp_quote("        LPOLESTR lpszFileName;")
cpp_quote("        IStream *pstm;")
cpp_quote("        IStorage *pstg;")
cpp_quote("        } u;")
cpp_quote("    IUnknown *pUnkForRelease;")
cpp_quote("}uSTGMEDIUM;")
cpp_quote("#else")

    typedef struct tagSTGMEDIUM {
    DWORD tymed;
    [switch_type(DWORD), switch_is((DWORD) tymed)]
        union
        {
        [case(TYMED_GDI)]
            HBITMAP hBitmap;
        [case(TYMED_MFPICT)]
            HMETAFILEPICT hMetaFilePict;
        [case(TYMED_ENHMF)]
            HENHMETAFILE hEnhMetaFile;
        [case(TYMED_HGLOBAL)]
            HGLOBAL hGlobal;
        [case(TYMED_FILE)]
            LPOLESTR lpszFileName;
        [case(TYMED_ISTREAM)]
            IStream *pstm;
        [case(TYMED_ISTORAGE)]
            IStorage *pstg;
        [default]
                ;
        };
        [unique] IUnknown *pUnkForRelease;
    }uSTGMEDIUM;

cpp_quote("#endif /* !NONAMELESSUNION */")


//
//  wireSTGMEDIUM
//
// These flags are #defined (not enumerated) in wingdi.
// We need to repeat #defines to avoid conflict in the generated file.
//

/* Object Definitions for EnumObjects() */
#define OBJ_PEN             1
#define OBJ_BRUSH           2
#define OBJ_DC              3
#define OBJ_METADC          4
#define OBJ_PAL             5
#define OBJ_FONT            6
#define OBJ_BITMAP          7
#define OBJ_REGION          8
#define OBJ_METAFILE        9
#define OBJ_MEMDC           10
#define OBJ_EXTPEN          11
#define OBJ_ENHMETADC       12
#define OBJ_ENHMETAFILE     13

    typedef union _GDI_OBJECT switch( DWORD ObjectType ) u
    {
        case OBJ_BITMAP:    wireHBITMAP     hBitmap;
        case OBJ_PAL:       wireHPALETTE    hPalette;
        default:            wireHGLOBAL     hGeneric;
    } GDI_OBJECT;

    typedef struct _userSTGMEDIUM
    {
        union _STGMEDIUM_UNION switch( DWORD tymed ) u
        {
        case TYMED_NULL:        ;
        case TYMED_MFPICT:      wireHMETAFILEPICT   hMetaFilePict;
        case TYMED_ENHMF:       wireHENHMETAFILE    hHEnhMetaFile;
        case TYMED_GDI:         GDI_OBJECT *        hGdiHandle;
        case TYMED_HGLOBAL:     wireHGLOBAL         hGlobal;
        case TYMED_FILE:        LPOLESTR            lpszFileName;
        case TYMED_ISTREAM:     BYTE_BLOB *         pstm;
        case TYMED_ISTORAGE:    BYTE_BLOB *         pstg;
        };
        IUnknown *              pUnkForRelease;
    } userSTGMEDIUM;

    typedef [unique] userSTGMEDIUM  * wireSTGMEDIUM;
    typedef [wire_marshal( wireSTGMEDIUM )] uSTGMEDIUM STGMEDIUM;

    typedef [unique] userSTGMEDIUM  * wireASYNC_STGMEDIUM;
    typedef [wire_marshal( wireASYNC_STGMEDIUM )] STGMEDIUM ASYNC_STGMEDIUM;

    typedef STGMEDIUM *LPSTGMEDIUM;

    typedef struct _userFLAG_STGMEDIUM
    {
        long                ContextFlags;
        long                fPassOwnership;
        userSTGMEDIUM       Stgmed;
    } userFLAG_STGMEDIUM;

    typedef [unique] userFLAG_STGMEDIUM  * wireFLAG_STGMEDIUM;

    typedef [wire_marshal( wireFLAG_STGMEDIUM )]
        struct _FLAG_STGMEDIUM
        {
                long                ContextFlags;
                long                fPassOwnership;
                STGMEDIUM           Stgmed;
        } FLAG_STGMEDIUM;


    [local]
    void OnDataChange(
        [in, unique] FORMATETC *pFormatetc,
        [in, unique] STGMEDIUM *pStgmed);

    [local]
    void OnViewChange(
        [in] DWORD dwAspect,
        [in] LONG lindex);

    [local]
    void OnRename(
        [in] IMoniker *pmk);

    [local]
    void OnSave();

    [local]
    void OnClose();

#if (__midl >= 500)
// Currently used temporary definitons.

    [call_as(OnDataChange)]
    HRESULT  RemoteOnDataChange(
        [in, unique] FORMATETC *pFormatetc,
        [in, unique] ASYNC_STGMEDIUM *pStgmed);

    [call_as(OnViewChange)]
    HRESULT  RemoteOnViewChange(
        [in] DWORD dwAspect,
        [in] LONG lindex);

    [call_as(OnRename)]
    HRESULT  RemoteOnRename(
        [in] IMoniker *pmk);

    [call_as(OnSave)]
    HRESULT  RemoteOnSave(
        );
#elif (__midl > 302)
// Currently used temporary definitons.

    [call_as(OnDataChange), async]
    HRESULT  RemoteOnDataChange(
        [in] IAsyncManager **ppIAM,
        [in, unique] FORMATETC *pFormatetc,
        [in, unique] ASYNC_STGMEDIUM *pStgmed);

    [call_as(OnViewChange), async]
    HRESULT  RemoteOnViewChange(
        [in] IAsyncManager **ppIAM,
        [in] DWORD dwAspect,
        [in] LONG lindex);

    [call_as(OnRename), async]
    HRESULT  RemoteOnRename(
        [in] IAsyncManager **ppIAM,
        [in] IMoniker *pmk);

    [call_as(OnSave), async]
    HRESULT  RemoteOnSave(
        [in] IAsyncManager **ppIAM
        );
#else
// Old definitions kept for convenience.

    [call_as(OnDataChange), async]
    void RemoteOnDataChange(
        [in, unique] FORMATETC *pFormatetc,
        [in, unique] ASYNC_STGMEDIUM *pStgmed);

    [call_as(OnViewChange), async]
    void RemoteOnViewChange(
        [in] DWORD dwAspect,
        [in] LONG lindex);

    [call_as(OnRename), async]
    void RemoteOnRename(
        [in] IMoniker *pmk);

    [call_as(OnSave), async]
    void RemoteOnSave();

#endif  // MIDL > 302

    [call_as(OnClose)]
    HRESULT RemoteOnClose();
}

[
    object,
    uuid(00000125-0000-0000-C000-000000000046),
#if (__midl >= 500)
    async_uuid(00000151-0000-0000-C000-000000000046),
#endif
    pointer_default(unique)
]

interface IAdviseSink2 : IAdviseSink
{

    typedef [unique] IAdviseSink2 *LPADVISESINK2;

    [local]
    void OnLinkSrcChange(
        [in, unique] IMoniker *pmk);

#if (__midl >= 500)
// Currently used temporary definiton

    [call_as(OnLinkSrcChange)]
    HRESULT RemoteOnLinkSrcChange(
        [in, unique] IMoniker *pmk);
#elif (__midl > 302)
// Currently used temporary definiton

    [call_as(OnLinkSrcChange), async]
    HRESULT RemoteOnLinkSrcChange(
        [in] IAsyncManager **ppIAM,
        [in, unique] IMoniker *pmk);
#else
// Old one for convenience.
    [call_as(OnLinkSrcChange), async]
    void RemoteOnLinkSrcChange(
        [in, unique] IMoniker *pmk);
#endif
}

[
    object,
    uuid(0000010e-0000-0000-C000-000000000046),
    pointer_default(unique)
]

interface IDataObject : IUnknown
{

    typedef [unique] IDataObject *LPDATAOBJECT;

    //DATA format DIRection

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -