[KMTESTS] Change license to LGPL and update to SPDX headers.
[reactos.git] / modules / rostests / kmtests / kmtest / kmtest.h
1 /*
2 * PROJECT: ReactOS kernel-mode tests
3 * LICENSE: LGPL-2.1+ (https://spdx.org/licenses/LGPL-2.1+)
4 * PURPOSE: Kernel-Mode Test Suite loader application declarations
5 * COPYRIGHT: Copyright 2011-2018 Thomas Faber <thomas.faber@reactos.org>
6 * Copyright 2017 Ged Murphy <gedmurphy@reactos.org>
7 */
8
9 #ifndef _KMTESTS_H_
10 #define _KMTESTS_H_
11
12 extern PCSTR ErrorFileAndLine;
13
14 #ifndef KMT_STRINGIZE
15 #define KMT_STRINGIZE(x) #x
16 #endif /* !defined KMT_STRINGIZE */
17
18 #define location(file, line) do { ErrorFileAndLine = file ":" KMT_STRINGIZE(line); } while (0)
19 #define error_value(Error, value) do { location(__FILE__, __LINE__); Error = value; } while (0)
20 #define error(Error) error_value(Error, GetLastError())
21 #define error_goto(Error, label) do { error(Error); goto label; } while (0)
22 #define error_value_goto(Error, value, label) do { error_value(Error, value); goto label; } while (0)
23
24 /* service management functions */
25 DWORD
26 KmtServiceInit(VOID);
27
28 DWORD
29 KmtServiceCleanup(
30 BOOLEAN IgnoreErrors);
31
32 DWORD
33 KmtCreateService(
34 IN PCWSTR ServiceName,
35 IN PCWSTR ServicePath,
36 IN PCWSTR DisplayName OPTIONAL,
37 OUT SC_HANDLE *ServiceHandle);
38
39 DWORD
40 KmtStartService(
41 IN PCWSTR ServiceName OPTIONAL,
42 IN OUT SC_HANDLE *ServiceHandle);
43
44 DWORD
45 KmtCreateAndStartService(
46 IN PCWSTR ServiceName,
47 IN PCWSTR ServicePath,
48 IN PCWSTR DisplayName OPTIONAL,
49 OUT SC_HANDLE *ServiceHandle,
50 IN BOOLEAN RestartIfRunning);
51
52 DWORD
53 KmtStopService(
54 IN PCWSTR ServiceName OPTIONAL,
55 IN OUT SC_HANDLE *ServiceHandle);
56
57 DWORD
58 KmtDeleteService(
59 IN PCWSTR ServiceName OPTIONAL,
60 IN OUT SC_HANDLE *ServiceHandle);
61
62 DWORD KmtCloseService(
63 IN OUT SC_HANDLE *ServiceHandle);
64
65
66 #ifdef KMT_FLT_USER_MODE
67
68 DWORD
69 KmtFltLoad(
70 _In_z_ PCWSTR ServiceName);
71
72 DWORD
73 KmtFltCreateAndStartService(
74 _In_z_ PCWSTR ServiceName,
75 _In_z_ PCWSTR ServicePath,
76 _In_z_ PCWSTR DisplayName OPTIONAL,
77 _Out_ SC_HANDLE *ServiceHandle,
78 _In_ BOOLEAN RestartIfRunning);
79
80 DWORD
81 KmtFltConnect(
82 _In_z_ PCWSTR ServiceName,
83 _Out_ HANDLE *hPort);
84
85 DWORD
86 KmtFltDisconnect(
87 _Out_ HANDLE *hPort);
88
89 DWORD
90 KmtFltSendMessage(
91 _In_ HANDLE hPort,
92 _In_reads_bytes_(dwInBufferSize) LPVOID lpInBuffer,
93 _In_ DWORD dwInBufferSize,
94 _Out_writes_bytes_to_opt_(dwOutBufferSize, *lpBytesReturned) LPVOID lpOutBuffer,
95 _In_ DWORD dwOutBufferSize,
96 _Out_opt_ LPDWORD lpBytesReturned);
97
98 DWORD
99 KmtFltGetMessage(
100 _In_ HANDLE hPort,
101 _Out_writes_bytes_(dwMessageBufferSize) PFILTER_MESSAGE_HEADER lpMessageBuffer,
102 _In_ DWORD dwMessageBufferSize,
103 _In_opt_ LPOVERLAPPED Overlapped);
104
105 DWORD
106 KmtFltReplyMessage(
107 _In_ HANDLE hPort,
108 _In_reads_bytes_(dwReplyBufferSize) PFILTER_REPLY_HEADER lpReplyBuffer,
109 _In_ DWORD dwReplyBufferSize);
110
111 DWORD
112 KmtFltGetMessageResult(
113 _In_ HANDLE hPort,
114 _In_ LPOVERLAPPED Overlapped,
115 _Out_ LPDWORD BytesTransferred);
116
117 DWORD
118 KmtFltUnload(
119 _In_z_ PCWSTR ServiceName);
120
121 DWORD
122 KmtFltDeleteService(
123 _In_z_ PCWSTR ServiceName OPTIONAL,
124 _Inout_ SC_HANDLE *ServiceHandle);
125
126 DWORD KmtFltCloseService(
127 _Inout_ SC_HANDLE *ServiceHandle);
128
129 #endif /* KMT_FILTER_DRIVER */
130
131 #endif /* !defined _KMTESTS_H_ */