1 /*++ 2 3 Copyright (c) Microsoft Corporation 4 5 Module Name: 6 7 FxSystemThreadUm.cpp 8 9 Abstract: 10 11 This is the implementation of the FxSystemThread object. 12 13 14 Author: 15 16 17 18 19 20 Environment: 21 22 User mode only 23 24 Revision History: 25 26 27 --*/ 28 29 #include <fxmin.hpp> 30 31 #pragma warning(push) 32 #pragma warning(disable:4100) //unreferenced parameter 33 34 FxSystemThread::FxSystemThread( 35 __in PFX_DRIVER_GLOBALS FxDriverGlobals 36 ) : 37 FxNonPagedObject(FX_TYPE_SYSTEMTHREAD, 0, FxDriverGlobals) 38 { 39 UfxVerifierTrapNotImpl(); 40 } 41 42 FxSystemThread::~FxSystemThread() 43 { 44 UfxVerifierTrapNotImpl(); 45 } 46 47 NTSTATUS 48 FxSystemThread::_CreateAndInit( 49 __out FxSystemThread** SystemThread, 50 __in PFX_DRIVER_GLOBALS FxDriverGlobals, 51 __in WDFDEVICE Device, 52 __in MdDeviceObject DeviceObject 53 ) 54 { 55 UfxVerifierTrapNotImpl(); 56 57 return STATUS_NOT_IMPLEMENTED; 58 } 59 60 // 61 // Create the system thread in order to be able to service work items 62 // 63 // It is recommended this is done from the system process context 64 // since the threads handle is available to the user mode process 65 // for a temporary window. XP and later supports OBJ_KERNELHANDLE, but 66 // DriverFrameworks must support W2K with the same binary. 67 // 68 // It is safe to call this at DriverEntry which is in the system process 69 // to create an initial driver thread, and this driver thread should be 70 // used for creating any child driver threads on demand. 71 // 72 BOOLEAN 73 FxSystemThread::Initialize() 74 { 75 UfxVerifierTrapNotImpl(); 76 return FALSE; 77 } 78 79 NTSTATUS 80 FxSystemThread::CreateThread( 81 VOID 82 ) 83 { 84 UfxVerifierTrapNotImpl(); 85 return STATUS_NOT_IMPLEMENTED; 86 } 87 88 89 90 91 92 93 94 95 96 97 98 99 // 100 // This is called to tell the thread to exit. 101 // 102 // It must be called from thread context such as 103 // the driver unload routine since it will wait for the 104 // thread to exit. 105 // 106 BOOLEAN 107 FxSystemThread::ExitThread() 108 { 109 UfxVerifierTrapNotImpl(); 110 return FALSE; 111 } 112 113 BOOLEAN 114 FxSystemThread::ExitThreadAsync( 115 __inout FxSystemThread* Reaper 116 ) 117 { 118 UfxVerifierTrapNotImpl(); 119 return FALSE; 120 } 121 122 BOOLEAN 123 FxSystemThread::QueueWorkItem( 124 __inout PWORK_QUEUE_ITEM WorkItem 125 ) 126 { 127 UfxVerifierTrapNotImpl(); 128 return FALSE; 129 } 130 131 // 132 // Attempt to cancel the work item. 133 // 134 // Returns TRUE if success. 135 // 136 // If returns FALSE, the work item 137 // routine either has been called, is running, 138 // or is about to be called. 139 // 140 BOOLEAN 141 FxSystemThread::CancelWorkItem( 142 __inout PWORK_QUEUE_ITEM WorkItem 143 ) 144 { 145 UfxVerifierTrapNotImpl(); 146 return FALSE; 147 } 148 149 VOID 150 FxSystemThread::Thread() 151 { 152 UfxVerifierTrapNotImpl(); 153 } 154 155 156 157 158 159 160 161 162 163 164 165 166 167 VOID 168 FxSystemThread::Reaper() 169 { 170 UfxVerifierTrapNotImpl(); 171 } 172 173 VOID 174 FxSystemThread::StaticThreadThunk( 175 __inout PVOID Context 176 ) 177 { 178 UfxVerifierTrapNotImpl(); 179 } 180 181 182 183 184 185 186 187 188 189 190 191 VOID 192 FxSystemThread::StaticReaperThunk( 193 __inout PVOID Context 194 ) 195 { 196 UfxVerifierTrapNotImpl(); 197 } 198 199 #pragma warning(pop) 200