ReactOS 0.4.17-dev-116-ga4b6fe9
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.h>
23#include <iphlpapi_undoc.h>
24
25#include <ndk/rtlfuncs.h>
26
27#include <conutils.h>
28#include <netsh.h>
29#include <netsh_undoc.h>
30
31#include "resource.h"
32
33
34/* DEFINES *******************************************************************/
35
36#define MAX_STRING_SIZE 1024
37#define MAX_ARGS_COUNT 256
38
39#define REG_NETSH_PATH L"Software\\Microsoft\\NetSh"
40
41
42/* TYPEDEFS ******************************************************************/
43
44typedef struct _DLL_LIST_ENTRY
45{
48
52
54
56
57typedef struct _HELPER_ENTRY
58{
61
64
67
70
72
73typedef struct _COMMAND_ENTRY
74{
77
84
85typedef struct _COMMAND_GROUP
86{
89
93
97
98typedef struct _CONTEXT_ENTRY
99{
102
104// PHELPER_ENTRY pHelper;
105
113
116
119
123
124
125/* GLOBAL VARIABLES ***********************************************************/
126
129
131
132extern HMODULE g_hModule;
133extern PWSTR pszMachine;
134
135/* PROTOTYPES *****************************************************************/
136
137/* alias.c */
138
139VOID
141
142VOID
144
145DWORD
146WINAPI
148 LPCWSTR pwszMachine,
149 LPWSTR *argv,
154 BOOL *pbDone);
155
156DWORD
157WINAPI
159 LPCWSTR pwszMachine,
160 LPWSTR *argv,
165 BOOL *pbDone);
166
167DWORD
168WINAPI
170 LPCWSTR pwszMachine,
171 LPWSTR *argv,
176 BOOL *pbDone);
177
178/* context.c */
179
180BOOL
182
183VOID
185
188 _In_ const GUID *pGuid);
189
190/* help.c */
191
192VOID
194 _In_ PCONTEXT_ENTRY pContext,
195 _In_ PCOMMAND_GROUP pGroup,
196 _In_ PCOMMAND_ENTRY pCommand);
197
198VOID
200 _In_ PCONTEXT_ENTRY pContext,
201 _In_ LPWSTR pszGroupName,
202 _In_ BOOL bRecurse);
203
204VOID
206 _In_ PCONTEXT_ENTRY pContext);
207
208/* helper.c */
209
210DWORD
212
213VOID
215
216VOID
218
221 _In_ const GUID *pguidHelper,
222 _In_ PHELPER_ENTRY pHelper);
223
224DWORD
225WINAPI
227 LPCWSTR pwszMachine,
233 BOOL *pbDone);
234
235DWORD
236WINAPI
238 LPCWSTR pwszMachine,
244 BOOL *pbDone);
245
246DWORD
247WINAPI
249 LPCWSTR pwszMachine,
255 BOOL *pbDone);
256
257/* interpreter.c */
258
259DWORD
262
263VOID
265
266/* netsh.c */
267
268DWORD
271
272LPWSTR
274 _In_ LPWSTR pszStringArray[],
275 _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)
Definition: helper.c:614
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:74
DWORD dwCmdHlpToken
Definition: precomp.h:81
PWSTR pwszCmdToken
Definition: precomp.h:78
PFN_HANDLE_CMD pfnCmdHandler
Definition: precomp.h:79
struct _COMMAND_ENTRY * pPrev
Definition: precomp.h:75
DWORD dwShortCmdHelpToken
Definition: precomp.h:80
DWORD dwFlags
Definition: precomp.h:82
struct _COMMAND_ENTRY * pNext
Definition: precomp.h:76
PCOMMAND_ENTRY pCommandListTail
Definition: precomp.h:95
PCOMMAND_ENTRY pCommandListHead
Definition: precomp.h:94
struct _COMMAND_GROUP * pPrev
Definition: precomp.h:87
DWORD dwFlags
Definition: precomp.h:92
struct _COMMAND_GROUP * pNext
Definition: precomp.h:88
PWSTR pwszCmdGroupToken
Definition: precomp.h:90
DWORD dwShortCmdHelpToken
Definition: precomp.h:91
Definition: precomp.h:99
PNS_CONTEXT_CONNECT_FN pfnConnectFn
Definition: precomp.h:112
PWSTR pszContextName
Definition: precomp.h:106
PCOMMAND_ENTRY pCommandListTail
Definition: precomp.h:115
PCOMMAND_GROUP pGroupListTail
Definition: precomp.h:118
struct _CONTEXT_ENTRY * pSubContextHead
Definition: precomp.h:120
struct _CONTEXT_ENTRY * pPrev
Definition: precomp.h:100
ULONG ulPriority
Definition: precomp.h:109
PNS_CONTEXT_COMMIT_FN pfnCommitFn
Definition: precomp.h:110
HMODULE hModule
Definition: precomp.h:108
struct _CONTEXT_ENTRY * pParentContext
Definition: precomp.h:103
struct _CONTEXT_ENTRY * pNext
Definition: precomp.h:101
GUID Guid
Definition: precomp.h:107
PNS_CONTEXT_DUMP_FN pfnDumpFn
Definition: precomp.h:111
PCOMMAND_GROUP pGroupListHead
Definition: precomp.h:117
PCOMMAND_ENTRY pCommandListHead
Definition: precomp.h:114
struct _CONTEXT_ENTRY * pSubContextTail
Definition: precomp.h:121
Definition: precomp.h:45
PWSTR pszDllName
Definition: precomp.h:49
PWSTR pszShortName
Definition: precomp.h:50
PWSTR pszValueName
Definition: precomp.h:51
struct _DLL_LIST_ENTRY * pNext
Definition: precomp.h:47
HMODULE hModule
Definition: precomp.h:53
struct _DLL_LIST_ENTRY * pPrev
Definition: precomp.h:46
Definition: precomp.h:58
struct _HELPER_ENTRY * pSubHelperTail
Definition: precomp.h:69
NS_HELPER_ATTRIBUTES Attributes
Definition: precomp.h:62
struct _HELPER_ENTRY * pSubHelperHead
Definition: precomp.h:68
PDLL_LIST_ENTRY pDllEntry
Definition: precomp.h:65
BOOL bStarted
Definition: precomp.h:66
GUID ParentHelperGuid
Definition: precomp.h:63
struct _HELPER_ENTRY * pNext
Definition: precomp.h:60
struct _HELPER_ENTRY * pPrev
Definition: precomp.h:59
uint16_t * PWSTR
Definition: typedefs.h:56
const uint16_t * LPCWSTR
Definition: typedefs.h:57
uint16_t * LPWSTR
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