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

📄 driver.h

📁 老外写的一个相当不错的虚拟显示器驱动
💻 H
字号:
#include <ntddk.h>
#include <parallel.h>
#include <initguid.h>
#include <wdmguid.h>
#include "stdarg.h"
#include "stdio.h"
#include "stddef.h"


/* The device extension for the device object */
typedef struct _FDO_DATA
{
	PDEVICE_OBJECT					DeviceObject;				// The device object this extension belongs to.
	BOOLEAN							AcceptIRQs;					// TRUE if we are ready to accept interrupts.
	KDPC							DpcForPortIsr;

	LIST_ENTRY						ReadIrpQueue;				// The actual read queue that underlies the CS queue.
	IO_CSQ							CSReadQueue;				// Cancel-safe read IRP queue.
	KSPIN_LOCK						ReadQueueLock;				// The spin lock that protects the read queue.
} FDO_DATA, *PFDO_DATA;


// DriverEntry.c
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath);

// Unload.c
VOID Unload(IN PDRIVER_OBJECT DriverObject);

// CreateClose.c
NTSTATUS DispatchCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);
NTSTATUS DispatchClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);

/* Read.c */
NTSTATUS DispatchRead(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);

// Ioctl.c
NTSTATUS DispatchDevCtrl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp);

// ISR.c
BOOLEAN IsrRoutine(IN PKINTERRUPT Interrupt, IN PVOID ServiceContext);
VOID DpcForIsrRoutine(IN PKDPC pDpc, IN PVOID pContext, IN PVOID pArg1, IN PVOID pArg2);
BOOLEAN EnableIRQ(IN PVOID SynchronizeContext);
BOOLEAN DisableIRQ(IN PVOID SynchronizeContext);

/* CSQueueRoutines.c */
VOID CSReadInsertIrp(IN PIO_CSQ Csq, IN PIRP Irp);
VOID CSReadRemoveIrp(IN PIO_CSQ Csq, IN PIRP Irp);
PIRP CSReadPeekNextIrp(IN PIO_CSQ Csq, IN PIRP Irp, IN PVOID PeekContext);
VOID CSReadAcquireLock(IN PIO_CSQ Csq, OUT PKIRQL Irql);
VOID CSReadReleaseLock(IN PIO_CSQ Csq, IN KIRQL Irql);
VOID CSWriteInsertIrp(IN PIO_CSQ Csq, IN PIRP Irp);
VOID CSWriteRemoveIrp(IN PIO_CSQ Csq, IN PIRP Irp);
PIRP CSWritePeekNextIrp(IN PIO_CSQ Csq, IN PIRP Irp, IN PVOID PeekContext);
VOID CSWriteAcquireLock(IN PIO_CSQ Csq, OUT PKIRQL Irql);
VOID CSWriteReleaseLock(IN PIO_CSQ Csq, IN KIRQL Irql);
VOID CSReadCompleteCanceledIrp(IN PIO_CSQ Csq, IN PIRP Irp);
VOID CSWriteCompleteCanceledIrp(IN PIO_CSQ Csq, IN PIRP Irp);

⌨️ 快捷键说明

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