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
|
/*++
Copyright (C) Microsoft Corporation, All Rights Reserved
Module Name:
Internal.h
Abstract:
This module contains the local type definitions for the UMDF VirtualSerial
driver sample.
Environment:
Windows User-Mode Driver Framework (WUDF)
--*/
#pragma once
#include <windows.h>
#include <devioctl.h>
#include <ntddser.h>
#include <setupapi.h>
#include <strsafe.h>
#include <intsafe.h>
//
// Include the WUDF DDI
//
#include "wudfddi.h"
//
// Use specstrings for in/out annotation of function parameters.
//
#include "specstrings.h"
//
// Forward definitions of classes in the other header files.
//
typedef class CMyDriver *PCMyDriver;
typedef class CMyDevice *PCMyDevice;
typedef class CMyQueue *PCMyQueue;
typedef class CRingBuffer *PCMyRingBuffer;
//
// Define useful macros
//
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
#endif
#define SAFE_RELEASE(p) {if ((p)) { (p)->Release(); (p) = NULL; }}
//
// Define the tracing flags.
//
#define WPP_CONTROL_GUIDS \
WPP_DEFINE_CONTROL_GUID( \
MyDriverTraceControl, (C31877A2,C8C8,4c58,B5B8,7D6311D5E343), \
\
WPP_DEFINE_BIT(MYDRIVER_ALL_INFO) \
)
#define WPP_FLAG_LEVEL_LOGGER(flag, level) \
WPP_LEVEL_LOGGER(flag)
#define WPP_FLAG_LEVEL_ENABLED(flag, level) \
(WPP_LEVEL_ENABLED(flag) && \
WPP_CONTROL(WPP_BIT_ ## flag).Level >= level)
//
// This comment block is scanned by the trace preprocessor to define our
// Trace function.
//
// begin_wpp config
// FUNC Trace{FLAG=MYDRIVER_ALL_INFO}(LEVEL, MSG, ...);
// end_wpp
//
//
// Driver specific #defines
//
#define MYDRIVER_TRACING_ID L"Microsoft\\UMDF\\VirtualSerial"
#define MYDRIVER_CLASS_ID { 0xc8ecc087, 0x6b79, 0x4de5, { 0x8f, 0xb4, 0xc0, 0x33, 0x58, 0xa2, 0x96, 0x17 } }
__forceinline
#ifdef _PREFAST_
__declspec(noreturn)
#endif
VOID
WdfTestNoReturn(
VOID
)
{
// do nothing.
}
#define WUDF_TEST_DRIVER_ASSERT(p) \
{ \
if ( !(p) ) \
{ \
DebugBreak(); \
WdfTestNoReturn(); \
} \
}
#define MAXULONG 0xffffffff
//
// Device states
//
#define COMMAND_MATCH_STATE_IDLE 0
#define COMMAND_MATCH_STATE_GOT_A 1
#define COMMAND_MATCH_STATE_GOT_T 2
//
// Include the type specific headers.
//
#include "comsup.h"
#include "driver.h"
#include "device.h"
#include "ringbuffer.h"
#include "queue.h"
#include "serial.h"
|