📄 3901.htm
字号:
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>//SeqStream.h</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>#if !defined (CSEQSTREAM_H)</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>#define CSEQSTREAM_H</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>class CSeqStream : public ISequentialStream</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>{</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>public:</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>//Constructors</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>CSeqStream();</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>virtual ~CSeqStream();</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>virtual BOOL Seek(ULONG iPos);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>virtual BOOL Clear();</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>virtual BOOL CompareData(void* pBuffer);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>virtual ULONG Length()<SPAN style="mso-spacerun: yes"> </SPAN>{ return m_cBufSize; };</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>virtual operator void* const() { return m_pBuffer; };</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>STDMETHODIMP_(ULONG)<SPAN style="mso-spacerun: yes"> </SPAN>AddRef(void);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>STDMETHODIMP_(ULONG)<SPAN style="mso-spacerun: yes"> </SPAN>Release(void);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppv);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>STDMETHODIMP Read( </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>/* [out] */ void __RPC_FAR *pv,</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>/* [in]<SPAN style="mso-spacerun: yes"> </SPAN>*/ ULONG cb,</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>/* [out] */ ULONG __RPC_FAR *pcbRead);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>STDMETHODIMP Write( </SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>/* [in] */ const void __RPC_FAR *pv,</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>/* [in] */ ULONG cb,</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>/* [out]*/ ULONG __RPC_FAR *pcbWritten);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-tab-count: 1"> </SPAN>void ResetPosition();</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>protected:</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>//Data</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>private:</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>ULONG<SPAN style="mso-spacerun: yes"> </SPAN>m_cRef;<SPAN style="mso-spacerun: yes"> </SPAN>// reference count</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>void*<SPAN style="mso-spacerun: yes"> </SPAN><SPAN style="mso-spacerun: yes"> </SPAN>m_pBuffer;<SPAN style="mso-spacerun: yes"> </SPAN>// buffer</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>ULONG<SPAN style="mso-spacerun: yes"> </SPAN>m_cBufSize;<SPAN style="mso-spacerun: yes"> </SPAN>// buffer size</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>ULONG<SPAN style="mso-spacerun: yes"> </SPAN>m_iPos;<SPAN style="mso-spacerun: yes"> </SPAN>// current index position in the buffer</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>};</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>#endif</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">实现文件如下(</SPAN><SPAN lang=EN-US>SeqStream.cpp</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">):</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>#include "stdafx.h"</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>#include "SeqStream.h "</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>CSeqStream::CSeqStream()</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>{</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>m_iPos<SPAN style="mso-spacerun: yes"> </SPAN>= 0;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>m_cRef<SPAN style="mso-spacerun: yes"> </SPAN>= 0;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>m_pBuffer<SPAN style="mso-spacerun: yes"> </SPAN>= NULL;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>m_cBufSize<SPAN style="mso-spacerun: yes"> </SPAN>= 0;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>//The constructor AddRef's</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>AddRef();</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>}</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>CSeqStream::~CSeqStream()</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>{</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>//Shouldn't have any references left</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>//<SPAN style="mso-spacerun: yes"> </SPAN>ASSERT(m_cRef == 0);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>CoTaskMemFree(m_pBuffer);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>}</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>ULONG<SPAN style="mso-spacerun: yes"> </SPAN>CSeqStream::AddRef(void)</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>{</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>return ++m_cRef;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>}</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>ULONG<SPAN style="mso-spacerun: yes"> </SPAN>CSeqStream::Release(void)</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>{</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>//<SPAN style="mso-spacerun: yes"> </SPAN>ASSERT(m_cRef);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>if(--m_cRef)</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN><SPAN style="mso-spacerun: yes"> </SPAN>return m_cRef;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>delete this;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>return 0;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>}</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>HRESULT CSeqStream::QueryInterface(REFIID riid, void** ppv)</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>{</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US>//<SPAN style="mso-spacerun: yes"> </SPAN>ASSERT(ppv);</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>*ppv = NULL;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>if (riid == IID_IUnknown)</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>*ppv = this;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>if (riid == IID_ISequentialStream)</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>*ppv = this;</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US> <o:p></o:p></SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>if(*ppv)</SPAN></P>
<P class=MsoNormal style="TEXT-INDENT: 21pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"> </SPAN>{</SPAN></P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -