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

📄 init.cpp

📁 USBconvert232 USB转232驱动源程序
💻 CPP
字号:
#include "vcp4usb.h"

#if DBG
//int gDebugLevel = DBG_READ | DBG_WRITE | DBG_CREATE | DBG_CLOSE | DBG_DRVCONTRAL;
int gDebugLevel = DBG_ALL;//DATALOG;
#endif // DBG

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

extern "C"
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
    NTSTATUS status = STATUS_SUCCESS;
    
    DPrint(DBG_ENTRY, (VCP4USB_VERSION "\n"));
    DPrint(DBG_ENTRY, ("Entry: %ws\n", RegistryPath->Buffer));
    
    // Export other driver entry points...
    DriverObject->DriverExtension->AddDevice = Vcp4usbAddDevice;
    DriverObject->DriverUnload = Vcp4usbUnload;
    DriverObject->DriverStartIo = NULL;
    
    DriverObject->MajorFunction[IRP_MJ_CREATE] = Vcp4usbCreate;
    DriverObject->MajorFunction[IRP_MJ_CLOSE] = Vcp4usbClose;
    
    DriverObject->MajorFunction[IRP_MJ_PNP] = Vcp4usbPnp;
    DriverObject->MajorFunction[IRP_MJ_POWER] = Vcp4usbPower;
    
    DriverObject->MajorFunction[IRP_MJ_READ] = Vcp4usbRead;
    DriverObject->MajorFunction[IRP_MJ_WRITE] = Vcp4usbWrite;
    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = Vcp4usbDeviceControl;
    
    DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = Vcp4usbSystemControl;
    
    InitializeListHead(&gDevList);
    KeInitializeMutex(&gDevListMutex, 0); // why not need free?
    
    // Initialise spin lock which protects access to shared memory buffer
    
    return status;
}
#pragma code_seg() // end INIT section

//
#pragma code_seg("PAGE") // start PAGE section
VOID Vcp4usbUnload(IN PDRIVER_OBJECT DriverObject)
{
    DPrint(DBG_ENTRY, ("Unload.\n"));
    //ASSERT(IsListEmpty(&gDevList));
    // Free buffer (do not need to acquire spin lock)
}
#pragma code_seg() // end PAGE section

⌨️ 快捷键说明

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