同步方式处理的话如果多个文件有可能有处理不到的文件。采用异步方式可以解决这个问题。
基于IO完成端口实现的封装类class P2PFileShare:
#if !defined(AFX_P2PFILESHARE_H__5CFE59EF_7A09_4715_885F_FED4E2992470__INCLUDED_)
#define AFX_P2PFILESHARE_H__5CFE59EF_7A09_4715_885F_FED4E2992470__INCLUDED_
#include "stdafx.h"
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define _WIN32_IE 0x0501
#define _WIN32_DCOM
class P2PFileShare
{
typedef struct
{
OVERLAPPED ov;
BYTE buff[65536];
LPTSTR path;
DWORD flag;
HANDLE handle;
}PATH_OV, *LPPATH_OV;
public :
P2PFileShare()
:mh_IOCP(NULL)
,mn_OVPtr(0)
,mp_OVPtr(NULL)
{
::InitializeCriticalSection(&m_cs);
}