⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 luojincdriv01.cpp

📁 这是一个驱动程序的案例
💻 CPP
字号:

#define VDW_MAIN

#include <vdw.h>
#include "LuojincDriv01.h"
#include "LuojincDriv01Device.h"

#pragma hdrstop("LuojincDriv01.pch")

// Generated by DriverWizard version DriverStudio 3.1.0 (Build 1722)

POOLTAG DefaultPoolTag('jouL');
	
KDebugOnlyTrace t("LuojincDriv01");

/////////////////////////////////////////////////////////////////////
// Begin INIT section
#pragma code_seg("INIT")

DECLARE_DRIVER_CLASS(LuojincDriv01, NULL)

NTSTATUS LuojincDriv01::DriverEntry(PUNICODE_STRING RegistryPath)
{
	t << "In DriverEntry Compiled at " __TIME__ " on " __DATE__ "\n";
	// Open the "Parameters" key under the driver
	KRegistryKey Params(RegistryPath, L"Parameters");
	if ( NT_SUCCESS(Params.LastError()) )
	{
#if DBG
		ULONG bBreakOnEntry = FALSE;
		// Read "BreakOnEntry" value from registry
		Params.QueryValue(L"BreakOnEntry", &bBreakOnEntry);
		// If requested, break into debugger
		if (bBreakOnEntry) DbgBreakPoint();
#endif
		// Load driver data members from the registry
		LoadRegistryParameters(Params);
	}
	m_Unit = 0;
	return STATUS_SUCCESS;
}
void LuojincDriv01::LoadRegistryParameters(KRegistryKey &Params)
{
	ULONG	RegLength;
	m_bBreakOnEntry = FALSE;
	Params.QueryValue(L"BreakOnEntry", &m_bBreakOnEntry);
	t << "m_bBreakOnEntry loaded from registry, resulting value: [" << m_bBreakOnEntry << "]\n";
	m_Luojinchuan = L"luojinchuan200510261350";
	RegLength = 0;
	Params.QueryValue(L"Luojinchuan", m_Luojinchuan, RegLength, NonPagedPool);	t << "m_Luojinchuan loaded from registry, resulting value: [" << m_Luojinchuan << "]\n";
}
// End INIT section
/////////////////////////////////////////////////////////////////////
#pragma code_seg()

NTSTATUS LuojincDriv01::AddDevice(PDEVICE_OBJECT Pdo)
{
	t << "AddDevice called\n";
	LuojincDriv01Device * pDevice = new (
			static_cast<PCWSTR>(KUnitizedName(L"LuojincDriv01Device", m_Unit)),
			FILE_DEVICE_UNKNOWN,
			static_cast<PCWSTR>(KUnitizedName(L"LuojincDriv01Device", m_Unit)), 
			0,DO_DIRECT_IO| DO_POWER_PAGABLE) LuojincDriv01Device(Pdo, m_Unit);

	if (pDevice == NULL)
	{
		t << "Error creating device LuojincDriv01Device"<< (ULONG) m_Unit << EOL;
	    return STATUS_INSUFFICIENT_RESOURCES;
	}

	NTSTATUS status = pDevice->ConstructorStatus();

	if ( !NT_SUCCESS(status) )
	{
		t << "Error constructing device LuojincDriv01Device"<< (ULONG) m_Unit << " status " << (ULONG) status << EOL;
		delete pDevice;
	}
	else
	{
		m_Unit++;
		pDevice->ReportNewDevicePowerState(PowerDeviceD0);
	}

	return status;
}

// EOF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -