QueueDll.cpp in QueueDll.rar
Sponsored links
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <mq.h>
#include <wchar.h>
#include "QueueDll.h"
//#define MYDEBUG
static CRITICAL_SECTION m_cs ;
class CLock
{
public:
CLock(CRITICAL_SECTION& cs)
{
m_pcs = &cs;
Lock();
}
~CLock()
{
Unlock();
}
void Unlock()
{
LeaveCriticalSection(m_pcs);
}
void Lock()
{
EnterCriticalSection(m_pcs);
}
protected:
CRITICAL_SECTION* m_pcs;
};
#define MAX_PROPS 5
#define MAX_FORMAT 256
#define MAX_BUFFER 512
char ErrorStr[256];
WCHAR g_szComputerName[MAX_BUFFER];
WCHAR g_szQueueLabel[MAX_BUFFER] ;
WCHAR g_szQueueName[MAX_BUFFER];
WCHAR g_szQueuePath[MAX_BUFFER * 2];
WCHAR g_szMessageBody[MAX_BUFFER];
HANDLE hQueue ;
BOOL IsQueueCreate;
MQQUEUEPROPS g_queueProps;
PROPVARIANT g_rgQueuePropVar[MAX_PROPS];
QUEUEPROPID g_rgQueuePropID[MAX_PROPS];
HRESULT g_rgQueueResults[MAX_PROPS];
WCHAR g_szFormat[MAX_FORMAT];
MQMSGPROPS g_msgProps;
PROPVARIANT g_rgMsgPropVar[MAX_PROPS];
MSGPROPID g_rgMsgPropID[MAX_PROPS];
HRESULT g_rgMsgResults[MAX_PROPS];
void HandleError(LPCWSTR strTitle, HRESULT hr);
void GetQueueNameFromUser();
void GetMsgFromUser();
void InitQueueProps();
void InitSendMessageProps();
void InitRecvMessageProps();
void InitQueue();
void UnInitQueue();
BOOL ZGCreateQueue( char *QueuePath );
BOOL ZGGetQueue( char *QueuePath );
long ZGSendQueue( char *QueuePath,char *Messages ,DWORD dLen ) ;
long ZGRecvQueue( char *QueuePath,char *Messages ,DWORD dLen , DWORD dwTimeout ) ;
BOOL ZGDeleteQueue(char *QueuePath );
void ZGCloseQueue( char *QueuePath);
void ZGGetQueueErrorStr( char *sErrorStr );
FUNCTION_TABLE Function_Table;
int IsFirst = 1 ;
void InitQueue()
{
InitializeCriticalSection(&m_cs);
IsFirst = 0 ;
}
void UnInitQueue()
{
if ( IsFirst == 0 )
DeleteCriticalSection(&m_cs);
}
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
...
...
... to be continued.
This is a preview. To get the complete source file,
please click here to download the whole source code package.