1 //---------------------------------------------------------------------------
6 //---------------------------------------------------------------------------
8 const GUID CLSID_Document =
9 {0x40942a6c,0x1520,0x4132,{0xbd,0xf8,0xbd,0xc1,0xf7,0x1f,0x54,0x7b}};
11 #define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
12 const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
14 MIDL_DEFINE_GUID(IID, IID_IDocument,0xD4073843,0xA58A,0x469A,0xA8,0xE2,0xCF,0xF3,0xFF,0x77,0xEE,0x4E);
19 #define _Deref_out_opt_
22 typedef __POSITION* POSITION;
24 typedef /* [v1_enum] */
31 class IFilterChunkValue;
36 IDocument() : m_refCount(0)
47 return InterlockedIncrement((long*)&m_refCount);
50 virtual LONG Release()
52 //__assert__(m_refCount > 0);
53 if (InterlockedDecrement((long*)&m_refCount) == 0)
62 virtual HRESULT LoadFromStream(
63 _Inout_ IStream* pStream,
64 _In_ DWORD grfMode) = 0;
65 virtual void InitializeSearchContent() = 0;
66 virtual void BeginReadChunks() = 0;
68 virtual BOOL GetThumbnail(
71 _Out_ WTS_ALPHATYPE* pdwAlpha) = 0;
73 virtual void ClearChunkList() = 0;
74 virtual BOOL SetChunkValue(
75 _In_ IFilterChunkValue* value) = 0;
76 virtual BOOL ReadNextChunkValue(
77 _Deref_out_opt_ IFilterChunkValue** value) = 0;
78 virtual void RemoveChunk(
81 virtual POSITION FindChunk(
85 virtual LPVOID GetContainer() const = 0;
88 volatile LONG m_refCount;
93 int main(int argc, char* argv[])
103 HRESULT hr = CoInitialize(0);
105 IDocument *IDobj = NULL;
106 hr = ::CoCreateInstance(CLSID_Document, NULL, CLSCTX_ALL, IID_IDocument, (void**)&IDobj);
109 hr = IDobj->Create(AsciiToBSTR("H:\\temp\\nishikawat\\amodi\\2014-12-02-151156.bmp"));
115 IDobj->Release(); //TODO: stack
\82ð
\89ó
\82µ
\82Ä
\82µ
\82Ü
\82¤