📄 driver.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 + -