应用层向minifilter发送没什么问题
minifilter向上发送的时候需要注意:
驱动层发送和接受时候的buf不包含header
应用层接收的时候需要添加header
结构体:
// 通信的内容
ypedef struct _MY_STRUCTURE
{
WCHAR data[10];
}MY_STRUCTURE;
// 应用层获取数据的结构体
typedef struct _GET_STRUCT
{
FILTER_MESSAGE_HEADER messageHeader;
MY_STRUCTURE Data;
}GET_STRUCT, *PGET_STRUCT;
// 应用层发送数据的结构体
typedef struct _REPLY_STRUCT
{
FILTER_REPLY_HEADER Header;
MY_STRUCTURE Data; // The structure to be sent to the minifilter.
} REPLY_STRUCT, *PREPLY_STRUCT;
驱动:
// 发送数据直接发送内容
MY_STRUCTURE sendBuf = { 0 };
MY_STRUCTURE replyBuf = { 0 };
status = FltSendMessage(FltObjects->Filter, &gfltClientPort, &sendBuf,
sizeof(MY_STRUCTURE), &replyBuf, &replayLen, NULL);
应用层:
// 需要加一个 Header
GET_STRUCT getStruct;
REPLY_STRUCT replyStruct;
result = FilterGetMessage(g_hPort, (PFILTER_MESSAGE_HEADER)&getStruct, sizeof(GET_STRUCT), NULL);
if (result == S_OK)
{
result = FilterReplyMessage(g_hPort, (PFILTER_REPLY_HEADER)&replyStruct,
sizeof(FILTER_REPLY_HEADER) + sizeof(MY_STRUCTURE));
}