IoRegisterDriverReinitialization Demo

#include <ntddk.h>

VOID OnUnload(IN PDRIVER_OBJECT DriverObject)
{
	DbgPrint("Enter OnUnload\n");
}

DRIVER_REINITIALIZE Reinitialize;

VOID Reinitialize(
	_In_     struct _DRIVER_OBJECT *DriverObject,
	_In_opt_ PVOID                 Context,
	_In_     ULONG                 Count
)
{
	DbgPrint("Enter Reinitialize\n");

	DbgPrint("Contest: 0x%08x\n", Count);
}

NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
	UNREFERENCED_PARAMETER(DriverObject);
	UNREFERENCED_PARAMETER(RegistryPath);

	DbgPrint("Enter DriverEntry\n");

	KdBreakPoint();

	DriverObject->DriverUnload = OnUnload;
	IoRegisterDriverReinitialization(DriverObject, Reinitialize, 0x12345);

	DbgPrint("Leave DriverEntry\n");

	return STATUS_SUCCESS;
}

输出:

Enter DriverEntry
Leave DriverEntry
Enter Reinitialize
Contest: 0x00000001
发布了7 篇原创文章 · 获赞 0 · 访问量 28

猜你喜欢

转载自blog.csdn.net/songbei6/article/details/105234289