📄 mylpc.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 + -