ReactOS 0.4.17-dev-573-g8315b8c
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
85
86typedef struct _COMMAND_GROUP
87{
90
95
99
100typedef struct _CONTEXT_ENTRY
101{
104
106// PHELPER_ENTRY pHelper;
107
117
120
123
127
128
129/* GLOBAL VARIABLES ***********************************************************/
130
133
135
136extern HMODULE g_hModule;
137extern PWSTR g_pszMachine;
138extern BOOL g_bOnline;
139
147
148
149/* PROTOTYPES *****************************************************************/
150
151/* alias.c */
152
153VOID
155
156VOID
158
159DWORD
160WINAPI
162 LPCWSTR pwszMachine,
163 LPWSTR *argv,
168 BOOL *pbDone);
169
170DWORD
171WINAPI
173 LPCWSTR pwszMachine,
174 LPWSTR *argv,
179 BOOL *pbDone);
180
181DWORD
182WINAPI
184 LPCWSTR pwszMachine,
185 LPWSTR *argv,
190 BOOL *pbDone);
191
192/* context.c */
193
194BOOL
196
197VOID
199
202 _In_ const GUID *pGuid);
203
204/* help.c */
205
206VOID
208 _In_ PCONTEXT_ENTRY pContext,
209 _In_ PCOMMAND_GROUP pGroup,
210 _In_ PCOMMAND_ENTRY pCommand);
211
212VOID
214 _In_ PCONTEXT_ENTRY pContext,
215 _In_ LPWSTR pszGroupName,
216 _In_ BOOL bRecurse);
217
218VOID
220 _In_ PCONTEXT_ENTRY pContext);
221
222/* helper.c */
223
224DWORD
226
227VOID
229
230VOID
232
235 _In_ const GUID *pguidHelper,
236 _In_ PHELPER_ENTRY pHelper);
237
238DWORD
239WINAPI
241 LPCWSTR pwszMachine,
247 BOOL *pbDone);
248
249DWORD
250WINAPI
252 LPCWSTR pwszMachine,
258 BOOL *pbDone);
259
260DWORD
261WINAPI
263 LPCWSTR pwszMachine,
269 BOOL *pbDone);
270
271/* interpreter.c */
272
273DWORD
276
277VOID
279
280/* netsh.c */
281
282DWORD
285
286LPWSTR
288 _In_ LPWSTR pszStringArray[],
289 _In_ UINT nCount);
290
291/* wmi.c */
292
293BOOL
296
struct _COMMAND_GROUP * PCOMMAND_GROUP
WCHAR VersionInfoBuildNumber[MAX_PATH]
Definition: wmi.c:28
BOOL g_bOnline
Definition: context.c:33
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:810
VOID PrintCommandHelp(_In_ PCONTEXT_ENTRY pContext, _In_ PCOMMAND_GROUP pGroup, _In_ PCOMMAND_ENTRY pCommand)
Definition: help.c:337
VOID UnloadHelpers(VOID)
Definition: helper.c:340
struct _CONTEXT_ENTRY CONTEXT_ENTRY
UINT VersionInfoArchitecture
Definition: wmi.c:24
struct _DLL_LIST_ENTRY * PDLL_LIST_ENTRY
WCHAR VersionInfoVersion[MAX_PATH]
Definition: wmi.c:27
PCONTEXT_ENTRY pRootContext
Definition: context.c:26
VOID InterpretInteractive(VOID)
Definition: interpreter.c:453
VOID CleanupContext(VOID)
Definition: context.c:1016
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)
WCHAR VersionInfoServicePackMinorVersion[MAX_PATH]
Definition: wmi.c:30
LPWSTR MergeStrings(_In_ LPWSTR pszStringArray[], _In_ UINT nCount)
Definition: netsh.c:53
DWORD InterpretLine(_In_ LPWSTR pszFileName)
Definition: interpreter.c:381
PCONTEXT_ENTRY pCurrentContext
Definition: context.c:27
UINT VersionInfoOsProductSuite
Definition: wmi.c:25
HMODULE g_hModule
Definition: netsh.c:17
VOID DestroyAliases(VOID)
Definition: alias.c:103
struct _CONTEXT_ENTRY * PCONTEXT_ENTRY
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
PWSTR g_pszMachine
Definition: context.c:32
BOOL CheckOsVersion(_In_ PNS_OSVERSIONCHECK pfnOsVersionCheck)
Definition: wmi.c:35
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
HRESULT GetWmiVersionInfo(VOID)
Definition: wmi.c:246
VOID PrintGroupHelp(_In_ PCONTEXT_ENTRY pContext, _In_ LPWSTR pszGroupName, _In_ BOOL bRecurse)
Definition: help.c:385
UINT VersionInfoOsType
Definition: wmi.c:26
WCHAR VersionInfoServicePackMajorVersion[MAX_PATH]
Definition: wmi.c:29
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:412
#define MAX_PATH
Definition: compat.h:34
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned int UINT
Definition: sysinfo.c:13
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
NS_OSVERSIONCHECK * PNS_OSVERSIONCHECK
Definition: netsh.h:132
_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
short WCHAR
Definition: pedump.c:58
Definition: precomp.h:74
DWORD dwCmdHlpToken
Definition: precomp.h:81
PWSTR pwszCmdToken
Definition: precomp.h:78
PFN_HANDLE_CMD pfnCmdHandler
Definition: precomp.h:79
PNS_OSVERSIONCHECK pfnOsVersionCheck
Definition: precomp.h:83
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:97
PCOMMAND_ENTRY pCommandListHead
Definition: precomp.h:96
PNS_OSVERSIONCHECK pfnOsVersionCheck
Definition: precomp.h:94
struct _COMMAND_GROUP * pPrev
Definition: precomp.h:88
DWORD dwFlags
Definition: precomp.h:93
struct _COMMAND_GROUP * pNext
Definition: precomp.h:89
PWSTR pwszCmdGroupToken
Definition: precomp.h:91
DWORD dwShortCmdHelpToken
Definition: precomp.h:92
Definition: precomp.h:101
PNS_CONTEXT_CONNECT_FN pfnConnectFn
Definition: precomp.h:115
PWSTR pszContextName
Definition: precomp.h:108
PCOMMAND_ENTRY pCommandListTail
Definition: precomp.h:119
PCOMMAND_GROUP pGroupListTail
Definition: precomp.h:122
struct _CONTEXT_ENTRY * pSubContextHead
Definition: precomp.h:124
struct _CONTEXT_ENTRY * pPrev
Definition: precomp.h:102
ULONG ulPriority
Definition: precomp.h:111
PNS_CONTEXT_COMMIT_FN pfnCommitFn
Definition: precomp.h:113
HMODULE hModule
Definition: precomp.h:110
struct _CONTEXT_ENTRY * pParentContext
Definition: precomp.h:105
struct _CONTEXT_ENTRY * pNext
Definition: precomp.h:103
GUID Guid
Definition: precomp.h:109
PNS_CONTEXT_DUMP_FN pfnDumpFn
Definition: precomp.h:114
PCOMMAND_GROUP pGroupListHead
Definition: precomp.h:121
PNS_OSVERSIONCHECK pfnOsVersionCheck
Definition: precomp.h:116
DWORD dwFlags
Definition: precomp.h:112
PCOMMAND_ENTRY pCommandListHead
Definition: precomp.h:118
struct _CONTEXT_ENTRY * pSubContextTail
Definition: precomp.h:125
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