www.pudn.com > WDM_PnPEvent.rar > PnPEvent.cpp
// PnPEvent.cpp // // Generated by DriverWizard version DriverStudio 2.6.0 (Build 336) // Requires Compuware's DriverWorks classes // #define VDW_MAIN #include#include "PnPEvent.h" #include "PnPEventDevice.h" #pragma hdrstop("PnPEvent.pch") // Generated by DriverWizard version DriverStudio 2.6.0 (Build 336) // Set a default 32-bit tag value to be stored with each heap block // allocated by operator new. Use BoundsChecker to view the memory pool. // This value can be overridden using the global function SetPoolTag(). POOLTAG DefaultPoolTag('EPnP'); ///////////////////////////////////////////////////////////////////// // Begin INIT section #pragma code_seg("INIT") DECLARE_DRIVER_CLASS(PnPEvent, NULL) PDRIVER_OBJECT MyDriverObject; ///////////////////////////////////////////////////////////////////// // PnPEvent::DriverEntry // // Routine Description: // This is the first entry point called by the system when the // driver is loaded. // // Parameters: // RegistryPath - String used to find driver parameters in the // registry. To locate PnPEvent look for: // HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PnPEvent // // Return Value: // NTSTATUS - Return STATUS_SUCCESS if no errors are encountered. // Any other indicates to the system that an error has occured. // // Comments: // NTSTATUS PnPEvent::DriverEntry(PUNICODE_STRING RegistryPath) { // The following macro simply allows compilation at Warning Level 4 // If you reference this parameter in the function simply remove the macro. UNREFERENCED_PARAMETER(RegistryPath); MyDriverObject=DriverObject(); m_Unit = 0; return STATUS_SUCCESS; } // End INIT section ///////////////////////////////////////////////////////////////////// #pragma code_seg() ///////////////////////////////////////////////////////////////////// // PnPEvent::AddDevice // // Routine Description: // Called when the system detects a device for which this // driver is responsible. // // Parameters: // Pdo - Physical Device Object. This is a pointer to a system device // object that represents the physical device. // // Return Value: // NTSTATUS - Success or failure code. // // Comments: // This function creates the Functional Device Object, or FDO. The FDO // enables this driver to handle requests for the physical device. // NTSTATUS PnPEvent::AddDevice(PDEVICE_OBJECT Pdo) { // Create the device object. Note that we used a form of "placement" new, // that is a member operator of KDevice. This form will use storage // allocated by the system in the device object's device to store our // class instance. PnPEventDevice * pDevice = new ( static_cast (KUnitizedName(L"PnPEventDevice", m_Unit)), FILE_DEVICE_UNKNOWN, NULL, 0, DO_DIRECT_IO ) PnPEventDevice(Pdo, m_Unit); if (pDevice == NULL) { return STATUS_INSUFFICIENT_RESOURCES; } NTSTATUS status = pDevice->ConstructorStatus(); if ( !NT_SUCCESS(status) ) { delete pDevice; } else { m_Unit++; } return status; }