ReactOS 0.4.17-dev-470-gf9e3448
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
116
119
122
126
127
128/* GLOBAL VARIABLES ***********************************************************/
129
132
134
135extern HMODULE g_hModule;
136extern PWSTR pszMachine;
137
145
146
147/* PROTOTYPES *****************************************************************/
148
149/* alias.c */
150
151VOID
153
154VOID
156
157DWORD
158WINAPI
160 LPCWSTR pwszMachine,
161 LPWSTR *argv,
166 BOOL *pbDone);
167
168DWORD
169WINAPI
171 LPCWSTR pwszMachine,
172 LPWSTR *argv,
177 BOOL *pbDone);
178
179DWORD
180WINAPI
182 LPCWSTR pwszMachine,
183 LPWSTR *argv,
188 BOOL *pbDone);
189
190/* context.c */
191
192BOOL
194
195VOID
197
200 _In_ const GUID *pGuid);
201
202/* help.c */
203
204VOID
206 _In_ PCONTEXT_ENTRY pContext,
207 _In_ PCOMMAND_GROUP pGroup,
208 _In_ PCOMMAND_ENTRY pCommand);
209
210VOID
212 _In_ PCONTEXT_ENTRY pContext,
213 _In_ LPWSTR pszGroupName,
214 _In_ BOOL bRecurse);
215
216VOID
218 _In_ PCONTEXT_ENTRY pContext);
219
220/* helper.c */
221
222DWORD
224
225VOID
227
228VOID
230
233 _In_ const GUID *pguidHelper,
234 _In_ PHELPER_ENTRY pHelper);
235
236DWORD
237WINAPI
239 LPCWSTR pwszMachine,
245 BOOL *pbDone);
246
247DWORD
248WINAPI
250 LPCWSTR pwszMachine,
256 BOOL *pbDone);
257
258DWORD
259WINAPI
261 LPCWSTR pwszMachine,
267 BOOL *pbDone);
268
269/* interpreter.c */
270
271DWORD
274
275VOID
277
278/* netsh.c */
279
280DWORD
283
284LPWSTR
286 _In_ LPWSTR pszStringArray[],
287 _In_ UINT nCount);
288
289/* wmi.c */
290
291BOOL
294
struct _COMMAND_GROUP * PCOMMAND_GROUP
WCHAR VersionInfoBuildNumber[MAX_PATH]
Definition: wmi.c:28
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:811
VOID PrintCommandHelp(_In_ PCONTEXT_ENTRY pContext, _In_ PCOMMAND_GROUP pGroup, _In_ PCOMMAND_ENTRY pCommand)
Definition: help.c:296
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:429
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:357
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
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
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:339
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:366
#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:114
PWSTR pszContextName
Definition: precomp.h:108
PCOMMAND_ENTRY pCommandListTail
Definition: precomp.h:118
PCOMMAND_GROUP pGroupListTail
Definition: precomp.h:121
struct _CONTEXT_ENTRY * pSubContextHead
Definition: precomp.h:123
struct _CONTEXT_ENTRY * pPrev
Definition: precomp.h:102
ULONG ulPriority
Definition: precomp.h:111
PNS_CONTEXT_COMMIT_FN pfnCommitFn
Definition: precomp.h:112
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:113
PCOMMAND_GROUP pGroupListHead
Definition: precomp.h:120
PNS_OSVERSIONCHECK pfnOsVersionCheck
Definition: precomp.h:115
PCOMMAND_ENTRY pCommandListHead
Definition: precomp.h:117
struct _CONTEXT_ENTRY * pSubContextTail
Definition: precomp.h:124
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