亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? winpipes.cpp

?? 此壓縮包內有cast、blowfish、simple、des、cryptlib、rsa、mqueue、xtrcrypt、gf256、base32,base64、modexppc、network等一些的
?? CPP
字號:
// winpipes.cpp - written and placed in the public domain by Wei Dai

#include "pch.h"
#include "winpipes.h"

#ifdef WINDOWS_PIPES_AVAILABLE

#include "wait.h"

NAMESPACE_BEGIN(CryptoPP)

WindowsHandle::WindowsHandle(HANDLE h, bool own)
	: m_h(h), m_own(own)
{
}

WindowsHandle::~WindowsHandle()
{
	if (m_own)
	{
		try
		{
			CloseHandle();
		}
		catch (...)
		{
		}
	}
}

bool WindowsHandle::HandleValid() const
{
	return m_h && m_h != INVALID_HANDLE_VALUE;
}

void WindowsHandle::AttachHandle(HANDLE h, bool own)
{
	if (m_own)
		CloseHandle();

	m_h = h;
	m_own = own;
	HandleChanged();
}

HANDLE WindowsHandle::DetachHandle()
{
	HANDLE h = m_h;
	m_h = INVALID_HANDLE_VALUE;
	HandleChanged();
	return h;
}

void WindowsHandle::CloseHandle()
{
	if (m_h != INVALID_HANDLE_VALUE)
	{
		::CloseHandle(m_h);
		m_h = INVALID_HANDLE_VALUE;
		HandleChanged();
	}
}

// ********************************************************

void WindowsPipe::HandleError(const char *operation) const
{
	DWORD err = GetLastError();
	throw Err(GetHandle(), operation, err);
}

WindowsPipe::Err::Err(HANDLE s, const std::string& operation, int error)
	: OS_Error(IO_ERROR, "WindowsPipe: " + operation + " operation failed with error 0x" + IntToString(error, 16), operation, error)
	, m_h(s)
{
}

// *************************************************************

WindowsPipeReceiver::WindowsPipeReceiver()
	: m_resultPending(false), m_eofReceived(false)
{
	m_event.AttachHandle(CreateEvent(NULL, true, false, NULL), true);
	CheckAndHandleError("CreateEvent", m_event.HandleValid());
	memset(&m_overlapped, 0, sizeof(m_overlapped));
	m_overlapped.hEvent = m_event;
}

bool WindowsPipeReceiver::Receive(byte* buf, size_t bufLen)
{
	assert(!m_resultPending && !m_eofReceived);

	HANDLE h = GetHandle();
	// don't queue too much at once, or we might use up non-paged memory
	if (ReadFile(h, buf, UnsignedMin((DWORD)128*1024, bufLen), &m_lastResult, &m_overlapped))
	{
		if (m_lastResult == 0)
			m_eofReceived = true;
	}
	else
	{
		switch (GetLastError())
		{
		default:
			CheckAndHandleError("ReadFile", false);
		case ERROR_BROKEN_PIPE:
		case ERROR_HANDLE_EOF:
			m_lastResult = 0;
			m_eofReceived = true;
			break;
		case ERROR_IO_PENDING:
			m_resultPending = true;
		}
	}
	return !m_resultPending;
}

void WindowsPipeReceiver::GetWaitObjects(WaitObjectContainer &container, CallStack const& callStack)
{
	if (m_resultPending)
		container.AddHandle(m_event, CallStack("WindowsPipeReceiver::GetWaitObjects() - result pending", &callStack));
	else if (!m_eofReceived)
		container.SetNoWait(CallStack("WindowsPipeReceiver::GetWaitObjects() - result ready", &callStack));
}

unsigned int WindowsPipeReceiver::GetReceiveResult()
{
	if (m_resultPending)
	{
		HANDLE h = GetHandle();
		if (GetOverlappedResult(h, &m_overlapped, &m_lastResult, false))
		{
			if (m_lastResult == 0)
				m_eofReceived = true;
		}
		else
		{
			switch (GetLastError())
			{
			default:
				CheckAndHandleError("GetOverlappedResult", false);
			case ERROR_BROKEN_PIPE:
			case ERROR_HANDLE_EOF:
				m_lastResult = 0;
				m_eofReceived = true;
			}
		}
		m_resultPending = false;
	}
	return m_lastResult;
}

// *************************************************************

WindowsPipeSender::WindowsPipeSender()
	: m_resultPending(false), m_lastResult(0)
{
	m_event.AttachHandle(CreateEvent(NULL, true, false, NULL), true);
	CheckAndHandleError("CreateEvent", m_event.HandleValid());
	memset(&m_overlapped, 0, sizeof(m_overlapped));
	m_overlapped.hEvent = m_event;
}

void WindowsPipeSender::Send(const byte* buf, size_t bufLen)
{
	DWORD written = 0;
	HANDLE h = GetHandle();
	// don't queue too much at once, or we might use up non-paged memory
	if (WriteFile(h, buf, UnsignedMin((DWORD)128*1024, bufLen), &written, &m_overlapped))
	{
		m_resultPending = false;
		m_lastResult = written;
	}
	else
	{
		if (GetLastError() != ERROR_IO_PENDING)
			CheckAndHandleError("WriteFile", false);

		m_resultPending = true;
	}
}

void WindowsPipeSender::GetWaitObjects(WaitObjectContainer &container, CallStack const& callStack)
{
	if (m_resultPending)
		container.AddHandle(m_event, CallStack("WindowsPipeSender::GetWaitObjects() - result pending", &callStack));
	else
		container.SetNoWait(CallStack("WindowsPipeSender::GetWaitObjects() - result ready", &callStack));
}

unsigned int WindowsPipeSender::GetSendResult()
{
	if (m_resultPending)
	{
		HANDLE h = GetHandle();
		BOOL result = GetOverlappedResult(h, &m_overlapped, &m_lastResult, false);
		CheckAndHandleError("GetOverlappedResult", result);
		m_resultPending = false;
	}
	return m_lastResult;
}

NAMESPACE_END

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩午夜激情av| 午夜视黄欧洲亚洲| 精品久久久久久亚洲综合网| 欧美三级韩国三级日本三斤| 91色.com| 91在线观看免费视频| 不卡的电视剧免费网站有什么| 国产一本一道久久香蕉| 国产福利91精品一区二区三区| 精品写真视频在线观看| 国产麻豆欧美日韩一区| 国产经典欧美精品| 成人短视频下载| 一本久久精品一区二区| 欧美日韩一卡二卡三卡| 91精品国产综合久久久久久| 欧美电影免费观看高清完整版在线 | 国产夫妻精品视频| 亚洲精品成a人| 一级精品视频在线观看宜春院| 亚洲欧美激情视频在线观看一区二区三区| 中文字幕综合网| 亚洲香肠在线观看| 久久国产综合精品| 成人激情综合网站| 日本韩国一区二区| 日韩一区二区电影| 国产精品久久久久三级| 91精品欧美福利在线观看| 亚洲国产综合在线| 精品久久久久久久一区二区蜜臀| 日韩欧美一区中文| 国产精品免费av| 免费精品视频最新在线| 极品少妇xxxx精品少妇偷拍| 成年人国产精品| 欧美美女直播网站| 国产欧美精品一区二区色综合 | 中文字幕av不卡| 亚洲女人****多毛耸耸8| 日韩—二三区免费观看av| 国产精品一区三区| 欧美日韩视频在线第一区| 久久综合999| 天天影视色香欲综合网老头| 国产风韵犹存在线视精品| 国产麻豆视频一区二区| 亚洲综合一区在线| 精品亚洲aⅴ乱码一区二区三区| 91网站黄www| 精品精品欲导航| 亚洲一区二区免费视频| 丁香婷婷综合五月| 欧美一区二区啪啪| 亚洲综合色丁香婷婷六月图片| 精品写真视频在线观看| 欧美日韩一区三区| 亚洲欧洲av在线| 国产白丝网站精品污在线入口| 欧美剧在线免费观看网站| 亚洲素人一区二区| 成人一区二区三区视频在线观看| 日韩欧美精品三级| 日韩国产欧美在线播放| 欧美午夜精品一区二区三区| 国产精品电影院| 大胆亚洲人体视频| 久久久久久久久久久久久女国产乱| 日韩高清欧美激情| 欧美久久久久久久久| 亚洲伊人伊色伊影伊综合网| 91女厕偷拍女厕偷拍高清| 亚洲婷婷在线视频| 波多野结衣中文字幕一区 | 久久电影网站中文字幕 | 欧美精品一区男女天堂| 秋霞午夜鲁丝一区二区老狼| 欧美久久久久免费| 性做久久久久久久免费看| 欧美日韩一区二区三区高清| 亚洲精品国产视频| 欧美在线观看18| 丝袜美腿亚洲色图| 精品噜噜噜噜久久久久久久久试看| 日韩精品欧美精品| 精品国产乱码久久久久久久| 精品无码三级在线观看视频| 久久久久久毛片| 成人app网站| 亚洲国产视频在线| 欧美一级一级性生活免费录像| 免费成人深夜小野草| 欧美mv和日韩mv的网站| 国产99久久久国产精品潘金| 中文欧美字幕免费| 在线欧美一区二区| 日韩国产在线观看一区| 精品99999| 成人av第一页| 亚洲成人7777| 久久久久久电影| 91免费国产在线观看| 日韩精品午夜视频| 国产欧美日韩久久| 成人午夜私人影院| 成人av电影免费在线播放| 精品久久久久99| 国产精品1区2区3区| 亚洲欧美电影院| 69p69国产精品| 粉嫩aⅴ一区二区三区四区 | 国产精品99久久久| 亚洲精品国产精品乱码不99| 在线播放中文字幕一区| 丁香激情综合五月| 日本不卡一区二区| 国产精品高潮呻吟| 日韩一区二区电影在线| 色婷婷av一区二区三区大白胸| 亚洲一卡二卡三卡四卡五卡| 久久久久久久综合日本| 欧美精品第1页| 99天天综合性| 国内精品嫩模私拍在线| 亚洲综合久久久| 国产精品色在线| 欧美v国产在线一区二区三区| 91网页版在线| 成人小视频免费观看| 美脚の诱脚舐め脚责91 | 亚洲国产日产av| 国产精品久久网站| 欧美精品一区二区在线播放| 欧美日韩午夜在线视频| 99久久99久久精品国产片果冻| 久久99国产精品免费网站| 亚洲aaa精品| 亚洲自拍偷拍av| 亚洲人成网站精品片在线观看| 精品国产乱码久久久久久浪潮| 欧美日韩美少妇| 欧美亚男人的天堂| 99re这里只有精品首页| 丁香桃色午夜亚洲一区二区三区| 2020国产精品久久精品美国| 欧美激情在线免费观看| 韩国女主播一区| 日韩精品欧美成人高清一区二区| 亚洲婷婷在线视频| 国产精品乱码人人做人人爱| 久久久久久一二三区| 久久综合中文字幕| 欧美大尺度电影在线| 日韩欧美一区二区免费| 欧美精品九九99久久| 在线亚洲高清视频| 一本久久a久久免费精品不卡| 成人动漫一区二区| av亚洲精华国产精华精华 | 日韩一区二区在线看片| 51午夜精品国产| 精品区一区二区| 国产性天天综合网| 国产婷婷色一区二区三区在线| 欧美精品一区二区三区久久久| 久久综合色鬼综合色| 精品日韩一区二区三区免费视频| 亚洲欧美激情在线| 日韩欧美一二三| xfplay精品久久| 国产精品久久久久久久久果冻传媒| 国产精品水嫩水嫩| 亚洲欧洲综合另类在线| 午夜精品福利一区二区蜜股av| 日韩电影在线一区| 国产一区视频导航| 成人自拍视频在线观看| 91久久精品一区二区三区| 欧美麻豆精品久久久久久| 欧美tickle裸体挠脚心vk| 日本一区二区三区在线不卡| 亚洲欧美日韩国产手机在线| 亚洲大片一区二区三区| 激情综合五月天| 91丨九色丨尤物| 欧美大肚乱孕交hd孕妇| 亚洲欧美日韩国产综合| 蜜桃一区二区三区四区| 成人综合婷婷国产精品久久免费| 91污在线观看| 欧美大白屁股肥臀xxxxxx| 国产精品视频免费看| 日韩av午夜在线观看| 成人激情午夜影院| 欧美美女视频在线观看| 中文字幕 久热精品 视频在线 | 欧美手机在线视频| 国产调教视频一区| 日韩av在线免费观看不卡| 成人高清在线视频|