ReactOS 0.4.16-dev-1946-g52006dd
precomp.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS NetSh
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: Network Shell main header file
5 * COPYRIGHT: Copyright 2023 Eric Kohl <eric.kohl@reactos.org>
6 */
7
8#ifndef PRECOMP_H
9#define PRECOMP_H
10
11/* INCLUDES ******************************************************************/
12
13#include <stdio.h>
14#include <stdlib.h>
15#include <stdarg.h>
16
17#include <ndk/rtlfuncs.h>
18
19#define WIN32_NO_STATUS
20#include <windef.h>
21#include <winbase.h>
22#include <winreg.h>
23#include <wincon.h>
24#include <winuser.h>
25#include <iphlpapi_undoc.h>
26
27#include <errno.h>
28
29#include <conutils.h>
30#include <netsh.h>
31#include <netsh_undoc.h>
32
33#include "resource.h"
34
35
36/* DEFINES *******************************************************************/
37
38#define HUGE_BUFFER_SIZE 2048
39
40#define MAX_STRING_SIZE 1024
41#define MAX_ARGS_COUNT 256
42
43#define REG_NETSH_PATH L"Software\\Microsoft\\NetSh"
44
45
46/* TYPEDEFS ******************************************************************/
47
48typedef struct _DLL_LIST_ENTRY
49{
52
56
58
60
61typedef struct _HELPER_ENTRY
62{
65
68
71
74
76
77
78
79typedef struct _COMMAND_ENTRY
80{
83
90
91typedef struct _COMMAND_GROUP
92{
95
99
103
104typedef struct _CONTEXT_ENTRY
105{
108
110// PHELPER_ENTRY pHelper;
111
119
122
125
129
130
131/* GLOBAL VARIABLES ***********************************************************/
132
135
137
138extern HMODULE hModule;
139extern PWSTR pszMachine;
140
141/* PROTOTYPES *****************************************************************/
142
143/* alias.c */
144
145VOID
147
148VOID
150
151DWORD
152WINAPI
154 LPCWSTR pwszMachine,
155 LPWSTR *argv,
160 BOOL *pbDone);
161
162DWORD
163WINAPI
165 LPCWSTR pwszMachine,
166 LPWSTR *argv,
171 BOOL *pbDone);
172
173DWORD
174WINAPI
176 LPCWSTR pwszMachine,
177 LPWSTR *argv,
182 BOOL *pbDone);
183
184/* context.c */
185
186BOOL
188
189VOID
191
194 _In_ const GUID *pGuid);
195
196/* help.c */
197
198VOID
200 _In_ PCONTEXT_ENTRY pContext,
201 _In_ PCOMMAND_GROUP pGroup,
202 _In_ PCOMMAND_ENTRY pCommand);
203
204VOID
206 _In_ PCONTEXT_ENTRY pContext,
207 _In_ LPWSTR pszGroupName,
208 _In_ BOOL bRecurse);
209
210VOID
212 _In_ PCONTEXT_ENTRY pContext);
213
214/* helper.c */
215
216DWORD
218
219VOID
221
222VOID
224
227 _In_ const GUID *pguidHelper,
228 _In_ PHELPER_ENTRY pHelper);
229
230DWORD
231WINAPI
233 LPCWSTR pwszMachine,
239 BOOL *pbDone);
240
241DWORD
242WINAPI
244 LPCWSTR pwszMachine,
250 BOOL *pbDone);
251
252DWORD
253WINAPI
255 LPCWSTR pwszMachine,
261 BOOL *pbDone);
262
263
264/* interpreter.c */
265
266DWORD
269
270VOID
272
273/* netsh.c */
274
275DWORD
278
279LPWSTR
281 _In_ LPWSTR pszStringArray[],
282 _In_ INT nCount);
283
284#endif /* PRECOMP_H */
struct _COMMAND_GROUP * PCOMMAND_GROUP
DWORD CreateRootHelper(VOID)
Definition: helper.c:245
VOID LoadHelpers(VOID)
Definition: helper.c:263
struct _COMMAND_ENTRY COMMAND_ENTRY
PHELPER_ENTRY FindHelper(_In_ const GUID *pguidHelper, _In_ PHELPER_ENTRY pHelper)
Definition: helper.c:360
DWORD WINAPI ShowAliasCommand(LPCWSTR pwszMachine, LPWSTR *argv, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
Definition: alias.c:215
struct _COMMAND_GROUP COMMAND_GROUP
BOOL CreateRootContext(VOID)
Definition: context.c:805
VOID PrintCommandHelp(_In_ PCONTEXT_ENTRY pContext, _In_ PCOMMAND_GROUP pGroup, _In_ PCOMMAND_ENTRY pCommand)
Definition: help.c:278
VOID UnloadHelpers(VOID)
Definition: helper.c:340
struct _CONTEXT_ENTRY CONTEXT_ENTRY
struct _DLL_LIST_ENTRY * PDLL_LIST_ENTRY
PCONTEXT_ENTRY pRootContext
Definition: context.c:26
VOID InterpretInteractive(VOID)
Definition: interpreter.c:385
LPWSTR MergeStrings(_In_ LPWSTR pszStringArray[], _In_ INT nCount)
Definition: netsh.c:53
VOID CleanupContext(VOID)
Definition: context.c:999
DWORD RunScript(_In_ LPCWSTR filename)
Definition: netsh.c:22
DWORD WINAPI AddHelperCommand(LPCWSTR pwszMachine, LPWSTR *ppwcArguments, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
Definition: helper.c:461
DWORD WINAPI DeleteHelperCommand(LPCWSTR pwszMachine, LPWSTR *ppwcArguments, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
Definition: helper.c:493
struct _DLL_LIST_ENTRY DLL_LIST_ENTRY
PCONTEXT_ENTRY FindContextByGuid(_In_ const GUID *pGuid)
DWORD InterpretLine(_In_ LPWSTR pszFileName)
Definition: interpreter.c:333
PCONTEXT_ENTRY pCurrentContext
Definition: context.c:27
VOID DestroyAliases(VOID)
Definition: alias.c:103
struct _CONTEXT_ENTRY * PCONTEXT_ENTRY
PWSTR pszMachine
Definition: context.c:32
VOID InitAliases(VOID)
Definition: alias.c:95
struct _HELPER_ENTRY * PHELPER_ENTRY
DWORD WINAPI UnaliasCommand(LPCWSTR pwszMachine, LPWSTR *argv, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
Definition: alias.c:234
struct _HELPER_ENTRY HELPER_ENTRY
struct _COMMAND_ENTRY * PCOMMAND_ENTRY
PHELPER_ENTRY pHelperListHead
Definition: helper.c:20
DWORD WINAPI ShowHelperCommand(LPCWSTR pwszMachine, PWSTR *ppwcArguments, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
HMODULE hModule
Definition: netsh.c:17
VOID PrintGroupHelp(_In_ PCONTEXT_ENTRY pContext, _In_ LPWSTR pszGroupName, _In_ BOOL bRecurse)
Definition: help.c:336
DWORD WINAPI AliasCommand(LPCWSTR pwszMachine, LPWSTR *argv, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
Definition: alias.c:123
VOID PrintContextHelp(_In_ PCONTEXT_ENTRY pContext)
Definition: help.c:363
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
const char * filename
Definition: ioapi.h:137
CONST void * LPCVOID
Definition: minwindef.h:164
#define argv
Definition: mplay32.c:18
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
Definition: netsh.h:141
FN_HANDLE_CMD * PFN_HANDLE_CMD
Definition: netsh.h:145
NS_CONTEXT_CONNECT_FN * PNS_CONTEXT_CONNECT_FN
Definition: netsh.h:108
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
Definition: netsh.h:116
NS_CONTEXT_DUMP_FN * PNS_CONTEXT_DUMP_FN
Definition: netsh.h:118
_In_ LPWSTR * ppwcArguments
Definition: netsh.h:114
NS_CONTEXT_COMMIT_FN * PNS_CONTEXT_COMMIT_FN
Definition: netsh.h:101
_In_ LPWSTR _In_ DWORD dwArgCount
Definition: netsh.h:115
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD _In_ LPCVOID _Out_ BOOL * pbDone
Definition: netsh.h:143
_In_ LPWSTR _In_ DWORD dwCurrentIndex
Definition: netsh.h:139
#define _In_
Definition: no_sal2.h:158
Definition: precomp.h:80
DWORD dwCmdHlpToken
Definition: precomp.h:87
PWSTR pwszCmdToken
Definition: precomp.h:84
PFN_HANDLE_CMD pfnCmdHandler
Definition: precomp.h:85
struct _COMMAND_ENTRY * pPrev
Definition: precomp.h:81
DWORD dwShortCmdHelpToken
Definition: precomp.h:86
DWORD dwFlags
Definition: precomp.h:88
struct _COMMAND_ENTRY * pNext
Definition: precomp.h:82
PCOMMAND_ENTRY pCommandListTail
Definition: precomp.h:101
PCOMMAND_ENTRY pCommandListHead
Definition: precomp.h:100
struct _COMMAND_GROUP * pPrev
Definition: precomp.h:93
DWORD dwFlags
Definition: precomp.h:98
struct _COMMAND_GROUP * pNext
Definition: precomp.h:94
PWSTR pwszCmdGroupToken
Definition: precomp.h:96
DWORD dwShortCmdHelpToken
Definition: precomp.h:97
Definition: precomp.h:105
PNS_CONTEXT_CONNECT_FN pfnConnectFn
Definition: precomp.h:118
PWSTR pszContextName
Definition: precomp.h:112
PCOMMAND_ENTRY pCommandListTail
Definition: precomp.h:121
PCOMMAND_GROUP pGroupListTail
Definition: precomp.h:124
struct _CONTEXT_ENTRY * pSubContextHead
Definition: precomp.h:126
struct _CONTEXT_ENTRY * pPrev
Definition: precomp.h:106
ULONG ulPriority
Definition: precomp.h:115
PNS_CONTEXT_COMMIT_FN pfnCommitFn
Definition: precomp.h:116
HMODULE hModule
Definition: precomp.h:114
struct _CONTEXT_ENTRY * pParentContext
Definition: precomp.h:109
struct _CONTEXT_ENTRY * pNext
Definition: precomp.h:107
GUID Guid
Definition: precomp.h:113
PNS_CONTEXT_DUMP_FN pfnDumpFn
Definition: precomp.h:117
PCOMMAND_GROUP pGroupListHead
Definition: precomp.h:123
PCOMMAND_ENTRY pCommandListHead
Definition: precomp.h:120
struct _CONTEXT_ENTRY * pSubContextTail
Definition: precomp.h:127
Definition: precomp.h:49
PWSTR pszDllName
Definition: precomp.h:53
PWSTR pszShortName
Definition: precomp.h:54
PWSTR pszValueName
Definition: precomp.h:55
struct _DLL_LIST_ENTRY * pNext
Definition: precomp.h:51
HMODULE hModule
Definition: precomp.h:57
struct _DLL_LIST_ENTRY * pPrev
Definition: precomp.h:50
Definition: precomp.h:62
struct _HELPER_ENTRY * pSubHelperTail
Definition: precomp.h:73
NS_HELPER_ATTRIBUTES Attributes
Definition: precomp.h:66
struct _HELPER_ENTRY * pSubHelperHead
Definition: precomp.h:72
PDLL_LIST_ENTRY pDllEntry
Definition: precomp.h:69
BOOL bStarted
Definition: precomp.h:70
GUID ParentHelperGuid
Definition: precomp.h:67
struct _HELPER_ENTRY * pNext
Definition: precomp.h:64
struct _HELPER_ENTRY * pPrev
Definition: precomp.h:63
uint16_t * PWSTR
Definition: typedefs.h:56
int32_t INT
Definition: typedefs.h:58
uint32_t ULONG
Definition: typedefs.h:59
WORD WORD PSZ PSZ pszFileName
Definition: vdmdbg.h:44
#define WINAPI
Definition: msvc.h:6
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
WCHAR * LPWSTR
Definition: xmlstorage.h:184