1 /*++
2 
3   Copyright (c) Microsoft Corporation
4 
5   Module Name:
6 
7   FxIoQueueUm.hpp
8 
9   Abstract:
10 
11   This module implements um specific functions for FxIoQueue.
12 
13   Author:
14 
15 
16 
17   Environment:
18 
19   User mode only
20 
21   Revision History:
22 
23   --*/
24 
25 #ifndef _FXIOQUEUEUM_HPP_
26 #define _FXIOQUEUEUM_HPP_
27 
28 __inline
29 BOOLEAN
30 IsPagingIo(
31     __in PIRP Irp
32     )
33 /*++
34 
35 Routine Description:
36     Dummy UM implementation.
37 --*/
38 {
39     UNREFERENCED_PARAMETER(Irp);
40     return TRUE;
41 }
42 
43 __inline
44 _Must_inspect_result_
45 NTSTATUS
46 FxIoQueue::QueueForwardProgressIrpLocked(
47     __in MdIrp Irp
48     )
49 {
50     UNREFERENCED_PARAMETER(Irp);
51 
52     UfxVerifierTrapNotImpl();
53     return STATUS_NOT_IMPLEMENTED;
54 }
55 
56 
57 __inline
58 _Must_inspect_result_
59 MdIrp
60 FxIoQueue::GetForwardProgressIrpLocked(
61     __in_opt PFILE_OBJECT FileObject
62     )
63 /*++
64 
65     Routine Description:
66         Remove an IRP from the pending irp list if it matches with the input
67         fileobject. If the fileobject value is NULL, return the first one from
68         the pending list.
69 
70 --*/
71 {
72     UNREFERENCED_PARAMETER(FileObject);
73 
74     UfxVerifierTrapNotImpl();
75     return NULL;
76 
77 }
78 
79 __inline
80 VOID
81 FxIoQueue::FreeAllReservedRequests(
82     __in BOOLEAN Verify
83     )
84 /*++
85 
86 Routine Description:
87     Called from dispose to Free all the reserved requests.
88 
89     Verify -
90         TRUE - Make sure the number of request freed matches with the count of
91                request created.
92         FALSE - Called when we fail to allocate all the reserved requests
93                 during config at init time. So we don't verify because the
94                 count of request freed wouldn't match with the configured value.
95 --*/
96 {
97     UNREFERENCED_PARAMETER(Verify);
98 
99     UfxVerifierTrapNotImpl();
100     return;
101 
102 }
103 
104 __inline
105 VOID
106 FxIoQueue::ReturnReservedRequest(
107     __in FxRequest *ReservedRequest
108     )
109 /*++
110 
111 Routine Description:
112     Reuse the ReservedRequest if there are pended IRPs otherwise
113     add it back to the reserve list.
114 
115 --*/
116 {
117 
118     UNREFERENCED_PARAMETER(ReservedRequest);
119 
120     UfxVerifierTrapNotImpl();
121     return ;
122 
123 }
124 
125 __inline
126 VOID
127 FxIoQueue::GetForwardProgressIrps(
128     __in     PLIST_ENTRY    IrpListHead,
129     __in_opt MdFileObject   FileObject
130     )
131 /*++
132 
133 Routine Description:
134 
135     This function is called to retrieve the list of reserved queued IRPs.
136     The IRP's Tail.Overlay.ListEntry field is used to link these structs together.
137 
138 --*/
139 {
140     UNREFERENCED_PARAMETER(IrpListHead);
141     UNREFERENCED_PARAMETER(FileObject);
142 
143     UfxVerifierTrapNotImpl();
144     return;
145 
146 }
147 
148 __inline
149 VOID
150 FxIoQueue::FlushQueuedDpcs(
151     VOID
152     )
153 /*++
154 
155 Routine Description:
156 
157     This is the kernel mode routine to flush queued DPCs.
158 
159 Arguments:
160 
161 Return Value:
162 
163 --*/
164 {
165     UfxVerifierTrapNotImpl();
166 }
167 
168 
169 __inline
170 VOID
171 FxIoQueue::InsertQueueDpc(
172     VOID
173     )
174 /*++
175 
176 Routine Description:
177 
178     This is the kernel mode routine to insert a dpc.
179 
180 Arguments:
181 
182 Return Value:
183 
184 --*/
185 {
186     UfxVerifierTrapNotImpl();
187 }
188 
189 __inline
190 _Must_inspect_result_
191 NTSTATUS
192 FxIoQueue::GetReservedRequest(
193     __in MdIrp Irp,
194     __deref_out_opt FxRequest **ReservedRequest
195     )
196 /*++
197 
198 Routine Description:
199     Use the policy configured on the queue to decide whether to allocate a
200     reserved request.
201 
202 --*/
203 {
204     UNREFERENCED_PARAMETER(Irp);
205     UNREFERENCED_PARAMETER(ReservedRequest);
206 
207     UfxVerifierTrapNotImpl();
208     return STATUS_NOT_IMPLEMENTED;
209 }
210 
211 __inline
212 _Must_inspect_result_
213 NTSTATUS
214 FxIoQueue::AssignForwardProgressPolicy(
215     __in PWDF_IO_QUEUE_FORWARD_PROGRESS_POLICY Policy
216     )
217 /*++
218 
219 Routine Description:
220     Configure the queue for forward Progress.
221 
222 --*/
223 {
224     UNREFERENCED_PARAMETER(Policy);
225 
226     UfxVerifierTrapNotImpl();
227     return STATUS_NOT_IMPLEMENTED;
228 }
229 
230 
231 #endif // _FXIOQUEUEUM_HPP
232