nonstubs.h

来自「一本在讲述USB驱动程式的书 及其范例原码」· C头文件 代码 · 共 38 行

H
38
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?