[bus_pnp] Move bus PnP IRP handling into bus_pnp
[people/sha0/winvblock.git] / src / bus.h
1 /**
2  * Copyright (C) 2009, 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 _BUS_H
22 #  define _BUS_H
23
24 /**
25  * @file
26  *
27  * Bus specifics
28  *
29  */
30
31 winvblock__def_struct ( bus__type )
32 {
33   PDEVICE_OBJECT LowerDeviceObject;
34   PDEVICE_OBJECT PhysicalDeviceObject;
35   ULONG Children;
36   winvblock__uint8_ptr first_child_ptr;
37   KSPIN_LOCK SpinLock;
38 };
39
40 extern NTSTATUS Bus_Start (
41   void
42  );
43
44 extern VOID Bus_Stop (
45   void
46  );
47
48 extern NTSTATUS STDCALL Bus_AddDevice (
49   IN PDRIVER_OBJECT DriverObject,
50   IN PDEVICE_OBJECT PhysicalDeviceObject
51  );
52
53 extern irp__handler_decl (
54   Bus_DispatchDeviceControl
55  );
56
57 extern irp__handler_decl (
58   Bus_DispatchSystemControl
59  );
60
61 extern VOID STDCALL Bus_AddTarget (
62   IN winvblock__uint8_ptr ClientMac,
63   IN winvblock__uint8_ptr ServerMac,
64   winvblock__uint16 Major,
65   winvblock__uint8 Minor,
66   LONGLONG LBASize
67  );
68
69 extern VOID Bus_CleanupTargetList (
70   void
71  );
72
73 extern NTSTATUS STDCALL Bus_GetDeviceCapabilities (
74   IN PDEVICE_OBJECT DeviceObject,
75   IN PDEVICE_CAPABILITIES DeviceCapabilities
76  );
77
78 /* An unfortunate forward declaration.  Definition resolved in disk.h */
79 struct _disk__type;
80
81 extern winvblock__bool STDCALL Bus_AddChild (
82   IN PDEVICE_OBJECT BusDeviceObject,
83   IN struct _disk__type Disk,
84   IN winvblock__bool Boot
85  );
86
87 extern bus__type_ptr STDCALL get_bus_ptr (
88   driver__dev_ext_ptr dev_ext_ptr
89  );
90 extern disk__type_ptr STDCALL get_disk_ptr (
91   driver__dev_ext_ptr dev_ext_ptr
92  );
93
94 extern PDEVICE_OBJECT bus__fdo;
95
96 #endif                          /* _BUS_H */