writefileevent.cpp
来自「IO函数调用测试」· C++ 代码 · 共 116 行
CPP
116 行
#include "stdafx.h"
#include "IOExplorer.h"
#include "DataArray.h"
#include "TraceEvent.h"
#include "WriteFileEvent.h"
/****************************************************************************
* WriteFileEvent::WriteFileEvent
* Inputs:
* CString s: Name of handle
* HANDLE hv: Actual handle, or 0 if not known
* CDataArray BytesToWrite
* Effect:
* Initializes the WriteFileEvent
****************************************************************************/
WriteFileEvent::WriteFileEvent(CString s, HANDLE hv, CDataArray & BytesToWrite)
{
h = hv;
name = s;
NumberOfBytesToWrite = BytesToWrite.GetSize();
this->BytesToWrite.Copy(BytesToWrite);
NumberOfBytesWritten = 0;
}
CString WriteFileEvent::display_result()
{
CString s;
if(result)
s.LoadString(IDS_TRUE);
else
s.LoadString(IDS_FALSE);
return s;
}
/****************************************************************************
* WriteFileEvent::execute
* Result: LRESULT
* (LRESULT)TRUE if successful
* (LRESULT)FALSE if failure
* Effect:
* Closes the handle whose handle value is supplied in the event block
****************************************************************************/
LRESULT WriteFileEvent::execute()
{
if(h == NULL)
{ /* invalid handle */
lasterror = ERROR_INVALID_HANDLE;
return FALSE; // bogus
} /* invalid handle */
CWaitCursor c;
result = WriteFile(h, &BytesToWrite.ElementAt(0), NumberOfBytesToWrite,
&NumberOfBytesWritten, NULL);
if(result)
lasterror = 0;
else
lasterror = ::GetLastError();
return result;
}
/****************************************************************************
* WriteFileEvent::display
* Result: CString
* Display string for the event
* Effect:
* Creates a displayable string
****************************************************************************/
CString WriteFileEvent::display()
{
CString handle;
if(h == NULL)
{ /* no handle */
if(name.GetLength() == 0)
{ /* no name */
handle = _T("");
} /* no name */
else
{ /* has name */
handle = name;
} /* has name */
} /* no handle */
else
{ /* valid handle */
handle = name;
} /* valid handle */
CString rf;
rf.Format(_T("WriteFile(%s, &buffer, %d, &BytesWritten, NULL)"),
handle, NumberOfBytesToWrite);
return rf;
}
/****************************************************************************
* WriteFileEvent::copy
* Result: TraceEvent *
* A copy of the WriteFileEvent
* Effect:
* Makes a complete copy of the WriteFileEvent information
****************************************************************************/
TraceEvent * WriteFileEvent::copy()
{
WriteFileEvent * e = new WriteFileEvent(name, h, BytesToWrite);
e->NumberOfBytesToWrite = NumberOfBytesToWrite;
e->NumberOfBytesWritten = NumberOfBytesWritten;
copyTraceData(e);
return e;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?