Sample Code
Windows Driver Samples/ Toaster Sample Driver/ C++/ umdf/ Toastmon/ RemoteTarget.h/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 | /*++ Copyright (C) Microsoft Corporation, All Rights Reserved Module Name: RemoteTarget.h Abstract: This module contains the type definitions for the UMDF sample driver's remote target callback class. Environment: Windows User-Mode Driver Framework (WUDF) --*/ #pragma once #define READ_BUF_SIZE 100 #define WRITE_BUF_SIZE 120 class CMyRemoteTarget : public CUnknown, public IRequestCallbackRequestCompletion, public IRemoteTargetCallbackRemoval, public IObjectCleanup { // // Public data members. // public : // // This is the Entry for the list of Remote Targets. // The List head is held by CMyDevice. // LIST_ENTRY m_Entry; // // Private data members. // private : CMyDevice * m_MyDevice; // Weak reference // // The handle for a thread to post I/O requests to the remote target // HANDLE m_hThread; CComPtr<IWDFRemoteTarget> m_FxTarget; bool m_WriteInProgress; CComPtr<IWDFIoRequest2> m_FxWriteRequest; CComPtr<IWDFMemory> m_FxWriteMemory; bool m_ReadInProgress; CComPtr<IWDFIoRequest2> m_FxReadRequest; CComPtr<IWDFMemory> m_FxReadMemory; // // Private methods. // private : void PostIoRequests( VOID ); // // Protected methods // protected : CMyRemoteTarget( VOID ) : m_MyDevice(NULL), m_hThread(NULL), m_WriteInProgress( false ), m_ReadInProgress( false ) { } HRESULT Initialize( _In_ CMyDevice * MyDevice, _In_ IWDFDriver * FxDriver, _In_ IWDFDevice2 * FxDevice, _In_ IWDFRemoteInterface * FxRemoteInterface ); // // Public methods // public : // // The factory method used to create an instance of this driver. // static HRESULT CreateInstance( _In_ CMyDevice * MyDevice, _In_ IWDFDriver * FxDriver, _In_ IWDFDevice2 * FxDevice, _In_ IWDFRemoteInterface * FxRemoteInterface, _Out_ PCMyRemoteTarget * MyRemoteTarget ); ~CMyRemoteTarget( VOID ) { } DWORD WINAPI ThreadProc( VOID ); // // COM methods // public : // // IUnknown methods. // virtual ULONG STDMETHODCALLTYPE AddRef( VOID ) { return __super::AddRef(); } _At_( this , __drv_freesMem(object)) virtual ULONG STDMETHODCALLTYPE Release( VOID ) { return __super::Release(); } virtual HRESULT STDMETHODCALLTYPE QueryInterface( _In_ REFIID InterfaceId, _Out_ PVOID * Object ); // // IRequestCallbackRequestCompletion // void STDMETHODCALLTYPE OnCompletion( _In_ IWDFIoRequest * FxRequest, _In_ IWDFIoTarget * /* FxTarget */ , _In_ IWDFRequestCompletionParams * /* Params */ , _In_ void * /* Context */ ); IRequestCallbackRequestCompletion * QueryIRequestCallbackRequestCompletion( VOID ) { AddRef(); return static_cast <IRequestCallbackRequestCompletion*>( this ); } // // IRemoteTargetCallbackRemoval // BOOL STDMETHODCALLTYPE OnRemoteTargetQueryRemove( _In_ IWDFRemoteTarget * /* FxTarget */ ); VOID STDMETHODCALLTYPE OnRemoteTargetRemoveCanceled( _In_ IWDFRemoteTarget * /* FxTarget */ ); VOID STDMETHODCALLTYPE OnRemoteTargetRemoveComplete( _In_ IWDFRemoteTarget * /* FxTarget */ ); IRemoteTargetCallbackRemoval * QueryIRemoteTargetCallbackRemoval( VOID ) { AddRef(); return static_cast <IRemoteTargetCallbackRemoval*>( this ); } // // IObjectCleanup // void STDMETHODCALLTYPE OnCleanup( _In_ IWDFObject* /* FxObject */ ); IObjectCleanup * QueryIObjectCleanup( VOID ) { AddRef(); return static_cast <IObjectCleanup*>( this ); } }; |
Our Services
-
What our customers say about us?
Read our customer testimonials to find out why our clients keep returning for their projects.
View Testimonials