ReactOS 0.4.16-dev-2522-g97cc325
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#pragma once
9
10/* INCLUDES ******************************************************************/
11
12#include <stdio.h>
13#include <stdlib.h>
14#include <stdarg.h>
15
16#define WIN32_NO_STATUS
17#include <windef.h>
18#include <winbase.h>
19#include <winreg.h>
20#include <wincon.h>
21#include <winuser.h>
22#include <iphlpapi_undoc.h>
23
24#include <ndk/rtlfuncs.h>
25
26#include <conutils.h>
27#include <netsh.h>
28#include <netsh_undoc.h>
29
30#include "resource.h"
31
32
33/* DEFINES *******************************************************************/
34
35#define MAX_STRING_SIZE 1024
36#define MAX_ARGS_COUNT 256
37
38#define REG_NETSH_PATH L"Software\\Microsoft\\NetSh"
39
40
41/* TYPEDEFS ******************************************************************/
42
43typedef struct _DLL_LIST_ENTRY
44{
47
51
53
55
56typedef struct _HELPER_ENTRY
57{
60
63
66
69
71
72typedef struct _COMMAND_ENTRY
73{
76
83
84typedef struct _COMMAND_GROUP
85{
88
92
96
97typedef struct _CONTEXT_ENTRY
98{
101
103// PHELPER_ENTRY pHelper;
104
112
115
118
122
123
124/* GLOBAL VARIABLES ***********************************************************/
125
128
130
131extern HMODULE g_hModule;
132extern PWSTR pszMachine;
133
134/* PROTOTYPES *****************************************************************/
135
136/* alias.c */
137
138VOID
140
141VOID
143
144DWORD
145WINAPI
147 LPCWSTR pwszMachine,
148 LPWSTR *argv,
153 BOOL *pbDone);
154
155DWORD
156WINAPI
158 LPCWSTR pwszMachine,
159 LPWSTR *argv,
164 BOOL *pbDone);
165
166DWORD
167WINAPI
169 LPCWSTR pwszMachine,
170 LPWSTR *argv,
175 BOOL *pbDone);
176
177/* context.c */
178
179BOOL
181
182VOID
184
187 _In_ const GUID *pGuid);
188
189/* help.c */
190
191VOID
193 _In_ PCONTEXT_ENTRY pContext,
194 _In_ PCOMMAND_GROUP pGroup,
195 _In_ PCOMMAND_ENTRY pCommand);
196
197VOID
199 _In_ PCONTEXT_ENTRY pContext,
200 _In_ LPWSTR pszGroupName,
201 _In_ BOOL bRecurse);
202
203VOID
205 _In_ PCONTEXT_ENTRY pContext);
206
207/* helper.c */
208
209DWORD
211
212VOID
214
215VOID
217
220 _In_ const GUID *pguidHelper,
221 _In_ PHELPER_ENTRY pHelper);
222
223DWORD
224WINAPI
226 LPCWSTR pwszMachine,
232 BOOL *pbDone);
233
234DWORD
235WINAPI
237 LPCWSTR pwszMachine,
243 BOOL *pbDone);
244
245DWORD
246WINAPI
248 LPCWSTR pwszMachine,
254 BOOL *pbDone);
255
256/* interpreter.c */
257
258DWORD
261
262VOID
264
265/* netsh.c */
266
267DWORD
270
271LPWSTR
273 _In_ LPWSTR pszStringArray[],
274 _In_ UINT nCount);
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:277
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
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)
LPWSTR MergeStrings(_In_ LPWSTR pszStringArray[], _In_ UINT nCount)
Definition: netsh.c:53
DWORD InterpretLine(_In_ LPWSTR pszFileName)
Definition: interpreter.c:333
PCONTEXT_ENTRY pCurrentContext
Definition: context.c:27
HMODULE g_hModule
Definition: netsh.c:17
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)
VOID PrintGroupHelp(_In_ PCONTEXT_ENTRY pContext, _In_ LPWSTR pszGroupName, _In_ BOOL bRecurse)
Definition: help.c:314
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:341
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
unsigned int UINT
Definition: ndis.h:50
_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:73
DWORD dwCmdHlpToken
Definition: precomp.h:80
PWSTR pwszCmdToken
Definition: precomp.h:77
PFN_HANDLE_CMD pfnCmdHandler
Definition: precomp.h:78
struct _COMMAND_ENTRY * pPrev
Definition: precomp.h:74
DWORD dwShortCmdHelpToken
Definition: precomp.h:79
DWORD dwFlags
Definition: precomp.h:81
struct _COMMAND_ENTRY * pNext
Definition: precomp.h:75
PCOMMAND_ENTRY pCommandListTail
Definition: precomp.h:94
PCOMMAND_ENTRY pCommandListHead
Definition: precomp.h:93
struct _COMMAND_GROUP * pPrev
Definition: precomp.h:86
DWORD dwFlags
Definition: precomp.h:91
struct _COMMAND_GROUP * pNext
Definition: precomp.h:87
PWSTR pwszCmdGroupToken
Definition: precomp.h:89
DWORD dwShortCmdHelpToken
Definition: precomp.h:90
Definition: precomp.h:98
PNS_CONTEXT_CONNECT_FN pfnConnectFn
Definition: precomp.h:111
PWSTR pszContextName
Definition: precomp.h:105
PCOMMAND_ENTRY pCommandListTail
Definition: precomp.h:114
PCOMMAND_GROUP pGroupListTail
Definition: precomp.h:117
struct _CONTEXT_ENTRY * pSubContextHead
Definition: precomp.h:119
struct _CONTEXT_ENTRY * pPrev
Definition: precomp.h:99
ULONG ulPriority
Definition: precomp.h:108
PNS_CONTEXT_COMMIT_FN pfnCommitFn
Definition: precomp.h:109
HMODULE hModule
Definition: precomp.h:107
struct _CONTEXT_ENTRY * pParentContext
Definition: precomp.h:102
struct _CONTEXT_ENTRY * pNext
Definition: precomp.h:100
GUID Guid
Definition: precomp.h:106
PNS_CONTEXT_DUMP_FN pfnDumpFn
Definition: precomp.h:110
PCOMMAND_GROUP pGroupListHead
Definition: precomp.h:116
PCOMMAND_ENTRY pCommandListHead
Definition: precomp.h:113
struct _CONTEXT_ENTRY * pSubContextTail
Definition: precomp.h:120
Definition: precomp.h:44
PWSTR pszDllName
Definition: precomp.h:48
PWSTR pszShortName
Definition: precomp.h:49
PWSTR pszValueName
Definition: precomp.h:50
struct _DLL_LIST_ENTRY * pNext
Definition: precomp.h:46
HMODULE hModule
Definition: precomp.h:52
struct _DLL_LIST_ENTRY * pPrev
Definition: precomp.h:45
Definition: precomp.h:57
struct _HELPER_ENTRY * pSubHelperTail
Definition: precomp.h:68
NS_HELPER_ATTRIBUTES Attributes
Definition: precomp.h:61
struct _HELPER_ENTRY * pSubHelperHead
Definition: precomp.h:67
PDLL_LIST_ENTRY pDllEntry
Definition: precomp.h:64
BOOL bStarted
Definition: precomp.h:65
GUID ParentHelperGuid
Definition: precomp.h:62
struct _HELPER_ENTRY * pNext
Definition: precomp.h:59
struct _HELPER_ENTRY * pPrev
Definition: precomp.h:58
uint16_t * PWSTR
Definition: typedefs.h:56
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