【发布时间】:2021-03-07 08:12:11
【问题描述】:
在我使用 Minifilter 之前,我将 PUCHAR 更改为 char*,然后使用 GetWC 将其更改为 wchar_t Like:
wchar_t* GetWC(const char* c)
{
long cSize = strlen(c) + 1;
wchar_t* wc = ExAllocatePool(POOL_FLAG_NON_PAGED, cSize);
if (!wc)
{
return NULL;
}
mbstowcs(wc, c, cSize);
return wc;
}
wchar_t* pathwchart = GetWC((char*)ntpath);
但是现在我使用Minifilter,当我在Minifilter的CallBacks中使用ExAllocatePool时,它会在蓝屏中返回一个SYSTEM_SERVICE_EXCEPTION 0X3B错误,那么我如何在Minifilter中将PUCHAR转换为PWCHAR。
【问题讨论】:
-
POOL_FLAG_NON_PAGED这是来自POOL_FLAGS的标志,用于另一个 api -ExAllocatePool2。这是ExAllocatePool中使用的POOL_TYPE的无效参数,并且在所有情况下都使用非分页池错误 -
而你的
cSize对于wchar_t字符串来说太小(总是) -
哦,谢谢你,我就用
wchar_t* imgct = ExAllocatePool2(POOL_FLAG_PAGED, strlen(imagename) + 1, "CAMT");解决问题
标签: windows memory wdk windows-kernel minifilter