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

📄 mylpc.h

📁 《Windows应用程序捆绑核心编程》配套源码
💻 H
字号:
// MyLPC.h: 定义CMyLPC类.
//
#ifndef _MYLPC_H__INCLUDED
#define _MYLPC_H__INCLUDED

#include <ntsecapi.h>

// 定义 LPC 消息类型.
#define LPC_CONNECTION_REQUEST   0x000A
// 定义消息数据长度.
#define MAX_MESSAGE_DATA         328
// 定义端口名称.
#define PORTNAME                 L"\\MyPort"

// LPC 消息头结构.
typedef struct LpcMessage {
  WORD  ActualMessageLength;
  WORD  TotalMessageLength;
  DWORD MessageType;
  DWORD ClientProcessId;
  DWORD ClientThreadId;
  DWORD MessageId;
  DWORD SharedSectionSize;
  char  MessageData[MAX_MESSAGE_DATA];
} LPCMESSAGE, *PLPC_MESSAGE;

//---------------------------------------------------------------------------
class CMyLPC  
{
public:
	CMyLPC();
	virtual ~CMyLPC();

private:
	HMODULE g_hNtDLL;
	CString m_strRequest;
	CString m_strReply;
	CWinThread *m_pThread;

public:
	int LPCServer(CString strReply);
	int LPCClient(CString strRequest);
    CString GetReply()   { return m_strReply;  }
    CString GetRequest() { return m_strRequest;}

protected:
	static UINT ServerReadProc(LPVOID lpVoid); 
    int (WINAPI *ZwConnectPort)(PHANDLE,PUNICODE_STRING,
		      PSECURITY_QUALITY_OF_SERVICE,
		      PVOID,PVOID,PVOID, PVOID, PDWORD);
	int (WINAPI *RtlInitUnicodeString)(PUNICODE_STRING,PCWSTR);
	int (WINAPI *ZwCreatePort)
		         (PHANDLE, PLSA_OBJECT_ATTRIBUTES,ULONG, ULONG, PULONG);
	int (WINAPI *ZwAcceptConnectPort)(PHANDLE, DWORD, 
		  PLPC_MESSAGE,DWORD,DWORD, PVOID);
	int (WINAPI *ZwCompleteConnectPort)(HANDLE);
    int (WINAPI *ZwReplyWaitReceivePort)
		         (HANDLE, PDWORD,PLPC_MESSAGE, PLPC_MESSAGE);
};

#endif

⌨️ 快捷键说明

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