6e5eac274c6a289ee3f1cff044036fac338ea3da
[people/sha0/winvblock.git] / src / include / driver.h
1 /**
2  * Copyright (C) 2009-2010, Shao Miller <shao.miller@yrdsb.edu.on.ca>.
3  * Copyright 2006-2008, V.
4  * For WinAoE contact information, see http://winaoe.org/
5  *
6  * This file is part of WinVBlock, derived from WinAoE.
7  *
8  * WinVBlock is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * WinVBlock is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with WinVBlock.  If not, see <http://www.gnu.org/licenses/>.
20  */
21 #ifndef _DRIVER_H
22 #  define _DRIVER_H
23
24 /**
25  * @file
26  *
27  * Driver specifics.
28  */
29
30 #  include "portable.h"
31
32 /* For testing and debugging */
33 #  if 0
34 #    define RIS
35 #    define DEBUGIRPS
36 #    define DEBUGMOSTPROTOCOLCALLS
37 #    define DEBUGALLPROTOCOLCALLS
38 #  endif
39
40 #  define POOLSIZE 2048
41
42 extern PDRIVER_OBJECT driver__obj_ptr;
43
44 extern winvblock__lib_func void STDCALL Driver_CompletePendingIrp (
45   IN PIRP Irp
46  );
47 /*
48  * Note the exception to the function naming convention
49  */
50 extern winvblock__lib_func NTSTATUS STDCALL Error (
51   IN PCHAR Message,
52   IN NTSTATUS Status
53  );
54 /*
55  * Note the exception to the function naming convention
56  */
57 extern NTSTATUS STDCALL DriverEntry (
58   IN PDRIVER_OBJECT DriverObject,
59   IN PUNICODE_STRING RegistryPath
60  );
61
62 /* An unfortunate forward declaration.  Definition resolved in device.h */
63 winvblock__def_struct ( device__type );
64
65 /* The physical/function device object's (PDO's/FDO's) DeviceExtension */
66 winvblock__def_struct ( driver__dev_ext )
67 {
68   device__type_ptr device;
69 };
70
71 /* The prototype for a device IRP dispatch. */
72 typedef NTSTATUS STDCALL (driver__dispatch_func)(
73     IN PDEVICE_OBJECT,
74     IN PIRP
75   );
76
77 extern winvblock__lib_func driver__dispatch_func (driver__default_dispatch);
78 extern winvblock__lib_func irp__handler driver__not_supported;
79 extern winvblock__lib_func irp__handler driver__create_close;
80
81 #endif                          /* _DRIVER_H */