笔者曾在网上搜索进程监视,大家都在使用PsSetCreateProcessNotifyRoutine,这个函数,但是在笔者的环境中使用时,总是出现未声明的标示符,查了下MSDN,是说在
”ntddk.h“文件中进行定义的,但是计算包含进来也是不能使用的!!!!于是进一步查看ntddk.h文件的使用,于是发现了,这个头文件仅仅使用#include“ntddk.h”还是不可以的
查了些资料,发现其使用方法如下
/// //文件包含 #include <wdm.h> /// /// ///数据类型定义 typedef VOID (*PCREATE_PROCESS_NOTIFY_ROUTINE)( IN HANDLE ParentId, IN HANDLE ProcessId, IN BOOLEAN Create); /// /// ///文件包含的整合 namespace NT { extern "C" { #pragma warning(disable: 4005) // macro redefinition #pragma warning(disable: 4201) // nonstandard extension #include <ntddk.h> // wre #include <tdikrnl.h> #pragma warning(default: 4005) #pragma warning(default: 4201) NTKERNELAPI NTSTATUS PsSetCreateProcessNotifyRoutine( __in PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine, __in BOOLEAN Remove ); } } /// VOID logOperation ( IN HANDLE ParentId, IN HANDLE ProcessId, IN BOOLEAN Create ) { return; } extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath) { NTSTATUS status=0; NT::PsSetCreateProcessNotifyRoutine(logOperation,false); return status; }