blob: b4754639bba56ef860f54c7cc7d9e9b6e8379dea (
plain)
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
|
#pragma once
class RS232Target :
public IRequestCallbackRequestCompletion
{
public:
RS232Target();
~RS232Target();
HRESULT Create(_In_ WpdBaseDriver* pBaseDriver,
_In_ IWDFDevice* pDevice,
HANDLE hRS232Port);
void Delete();
HRESULT Start();
HRESULT Stop();
BOOL IsReady();
WDF_IO_TARGET_STATE GetState();
HRESULT SendReadRequest();
HRESULT SendWriteRequest(_In_reads_(cbBufferSize) BYTE* pBuffer,
size_t cbBufferSize);
public: // IUnknown
ULONG __stdcall AddRef();
ULONG __stdcall Release();
HRESULT __stdcall QueryInterface(REFIID riid, void** ppv);
//
// IRequestCallbackRequestCompletion
//
STDMETHOD_ (void, OnCompletion)(_In_ IWDFIoRequest* pWdfRequest,
_In_ IWDFIoTarget* pIoTarget,
_In_ IWDFRequestCompletionParams* pParams,
_In_ PVOID pContext);
private:
ULONG m_cRef;
WpdBaseDriver* m_pBaseDriver;
// Ensure ample buffer size
BYTE m_pReadBuffer[MAX_AMOUNT_TO_READ*2];
CComPtr<IWDFDevice> m_pWDFDevice;
CComPtr<IWDFIoTarget> m_pFileTarget;
};
|