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