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

📄 nonstubs.h

📁 Programming the Microsoft Windows driver model.2nd 随书光盘。内有很多作者送的实用工具和随书源码。WDM编程
💻 H
字号:
// NonStubs.h -- declarations for NonStubs.cpp

// Copyright (C) 1999 by Walter Oney

// All rights reserved



#ifndef NONSTUBS_H

#define NONSTUBS_H



typedef VOID (NTAPI *PIO_WORKITEM_ROUTINE)(PDEVICE_OBJECT DeviceObject, PVOID Context);



struct _IO_WORKITEM : public _WORK_QUEUE_ITEM {

	PDEVICE_OBJECT DeviceObject;

	PIO_WORKITEM_ROUTINE Routine;

	PVOID Context;

	};

typedef struct _IO_WORKITEM IO_WORKITEM, *PIO_WORKITEM;



PIO_WORKITEM AllocateWorkItem(PDEVICE_OBJECT DeviceObject);

VOID FreeWorkItem(PIO_WORKITEM item);

VOID QueueWorkItem(PIO_WORKITEM pIOWorkItem, PIO_WORKITEM_ROUTINE Routine, WORK_QUEUE_TYPE QueueType, PVOID Context);



typedef struct _IO_REMOVE_LOCK_TRACKING_BLOCK {

	struct _IO_REMOVE_LOCK_TRACKING_BLOCK* next;	// chain to next lock block

	PVOID tag;										// tag used at lock time

	LONG locktime;									// system time when lock occurred

	PCSTR file;										// source filename

	ULONG line;										// source line number

	} IO_REMOVE_LOCK_TRACKING_BLOCK, *PIO_REMOVE_LOCK_TRACKING_BLOCK;



LONG __stdcall Get_System_Time();



NTSTATUS AcquireRemoveLock(PIO_REMOVE_LOCK p, PVOID tag, PCSTR file, ULONG line, ULONG size);

VOID ReleaseRemoveLock(PIO_REMOVE_LOCK p, PVOID tag, ULONG size);

VOID ReleaseRemoveLockAndWait(PIO_REMOVE_LOCK p, PVOID tag, ULONG size);

VOID InitializeRemoveLock(PIO_REMOVE_LOCK p, ULONG tag, ULONG maxminutes, ULONG hwm, ULONG size);



VOID ReuseIrp(PIRP Irp, NTSTATUS status);



#endif

⌨️ 快捷键说明

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