⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sh_smem.h

📁 rsa算法打的一个包
💻 H
字号:
// SH_SMem.h: interface for the SH_SMem class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_SH_SSH_SMEM_H__B77CEA49_6230_4EA4_AB92_E6A019676B7E__INCLUDED_)
#define AFX_SH_SSH_SMEM_H__B77CEA49_6230_4EA4_AB92_E6A019676B7E__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "SH_Object.h"

class AFX_EXT_CLASS SH_SMem : public SH_Object  
{
public:
	class SH_WriteQue
	{
	public:
		SH_WriteQue(int nDataSize)
		{
			pData = new BYTE[nDataSize];
			pNext = NULL;
		};
		~SH_WriteQue()
		{
			delete [] pData;
		};
		void		*pData;
		SH_WriteQue *pNext;
	};
public:
	enum
	{
		SH_SMEM_ERROR_UNKNOWN		= -1,
		SH_SMEM_SUCCESS				= 0,
		SH_SMEM_ERROR_CLOSED		= 1,
		SH_SMEM_ERROR_TIMEOUT		= 2,
		SH_SMEM_ERROR_OTHERPARTY	= 3,
		SH_SMEM_ERROR_DATASIZE		= 4
	};

    SH_SMem();
    ~SH_SMem();
    BOOL Open( const char* sName, int nDataSize, int nTimeOut = INFINITE);
    void Close();
    int Write(void *pData, int nDataSize, DWORD dwTimeOut);
    int WriteToQueue(void *pData, int nDataSize);
    int Read(void *pData, int nDataSize, DWORD dwTimeOut);
private:
    void        EmptyWriteQueue();
    static void QueueThread(void *pArg);
private:
	HANDLE			m_hSMemMutex[2];
	int				m_nInstanceID;
	int				m_nOtherInstanceID;
	HANDLE			m_hSMem[2];
	BYTE*			m_pSMem[2];
	int*			m_pSize;
	HANDLE			m_hClosed;
	HANDLE			m_hDataWrit[2];
	HANDLE			m_hDataRead[2];
	HANDLE			m_hSecondInstanceAvailable;
	HANDLE			m_hQueueThread;
	HANDLE			m_hDataInQueue;
	SH_WriteQue    *m_pFirst;
	HANDLE			m_hQueueMutex;
};

#endif // !defined(AFX_SH_SSH_SMEM_H__B77CEA49_6230_4EA4_AB92_E6A019676B7E__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -