C语言驱动开发蓝屏,dump文件解析如下:
PAGE_FAULT_IN_NONPAGED_AREA (50)
Invalid system memory was referenced. This cannot be protected by try-except.
Typically the address is just plain bad or it is pointing at freed memory.
```c
12:
> 13: NTSTATUS ProcessRegCB(REG_NOTIFY_CLASS op_type, PVOID ex_info,HANDLE reger_pid, PUNICODE_STRING reg_path) {
14:
15: HANDLE father_pid = GetFatherPid(reger_pid);
16:
17: if (op_type == RegNtPreDeleteKey) {
18: PREG_DELETE_KEY_INFORMATION p_info = (PREG_DELETE_KEY_INFORMATION)ex_info;
这个函数的调用方:
```c
NTSTATUS RegistryCallback(
IN PVOID CallbackContext,
IN REG_NOTIFY_CLASS OpType,
IN PVOID Argument
)
{
if (OpType>2) {
return STATUS_SUCCESS;
}
PVOID reg_path_obj = *(PVOID*)Argument;//结构体的第一个参数object就是PVOID
HANDLE reger_pid = PsGetCurrentProcessId();
PUNICODE_STRING reg_path = GetRegistryObjectCompleteName(reg_path_obj);
if (reg_path == NULL) {
return STATUS_SUCCESS;
}
NTSTATUS cb_status = ProcessRegCB(OpType, Argument, reger_pid, reg_path);
ExFreePoolWithTag(reg_path, REGISTRY_POOL_TAG);
return cb_status;
}
dump是添加了源码和对应pdb解析的,驱动是win10 or higher 64位 debug版的
dump显示是13行触发的.
这是什么原因啊?这里这么会触发内存访问?