Files
reactos/sdk/include/psdk/netsh.h
2025-10-12 00:54:10 +02:00

269 lines
6.1 KiB
C

#ifndef _NETSH_H_
#define _NETSH_H_
#ifdef __cplusplus
extern "C" {
#endif
#define NETSH_ERROR_BASE 15000
#define ERROR_NO_ENTRIES (NETSH_ERROR_BASE + 0)
#define ERROR_INVALID_SYNTAX (NETSH_ERROR_BASE + 1)
#define ERROR_PROTOCOL_NOT_IN_TRANSPORT (NETSH_ERROR_BASE + 2)
#define ERROR_NO_CHANGE (NETSH_ERROR_BASE + 3)
#define ERROR_CMD_NOT_FOUND (NETSH_ERROR_BASE + 4)
#define ERROR_ENTRY_PT_NOT_FOUND (NETSH_ERROR_BASE + 5)
#define ERROR_DLL_LOAD_FAILED (NETSH_ERROR_BASE + 6)
#define ERROR_INIT_DISPLAY (NETSH_ERROR_BASE + 7)
#define ERROR_TAG_ALREADY_PRESENT (NETSH_ERROR_BASE + 8)
#define ERROR_INVALID_OPTION_TAG (NETSH_ERROR_BASE + 9)
#define ERROR_NO_TAG (NETSH_ERROR_BASE + 10)
#define ERROR_MISSING_OPTION (NETSH_ERROR_BASE + 11)
#define ERROR_TRANSPORT_NOT_PRESENT (NETSH_ERROR_BASE + 12)
#define ERROR_SHOW_USAGE (NETSH_ERROR_BASE + 13)
#define ERROR_INVALID_OPTION_VALUE (NETSH_ERROR_BASE + 14)
#define ERROR_OKAY (NETSH_ERROR_BASE + 15)
#define ERROR_CONTINUE_IN_PARENT_CONTEXT (NETSH_ERROR_BASE + 16)
#define ERROR_SUPPRESS_OUTPUT (NETSH_ERROR_BASE + 17)
#define ERROR_HELPER_ALREADY_REGISTERED (NETSH_ERROR_BASE + 18)
#define ERROR_CONTEXT_ALREADY_REGISTERED (NETSH_ERROR_BASE + 19)
#define ERROR_PARSING_FAILURE (NETSH_ERROR_BASE + 20)
#define NETSH_ERROR_END ERROR_CONTEXT_ALREADY_REGISTERED
typedef enum _NS_REQS
{
NS_REQ_ZERO = 0,
NS_REQ_PRESENT = 1,
NS_REQ_ALLOW_MULTIPLE = 2,
NS_REQ_ONE_OR_MORE = 3
} NS_REQS;
enum NS_CMD_FLAGS
{
CMD_FLAG_PRIVATE = 0x01,
CMD_FLAG_INTERACTIVE = 0x02,
CMD_FLAG_LOCAL = 0x08,
CMD_FLAG_ONLINE = 0x10,
CMD_FLAG_HIDDEN = 0x20,
CMD_FLAG_LIMIT_MASK = 0xffff,
CMD_FLAG_PRIORITY = 0x80000000
};
enum NS_MODE_CHANGE
{
NETSH_COMMIT = 0,
NETSH_UNCOMMIT = 1,
NETSH_FLUSH = 2,
NETSH_COMMIT_STATE = 3,
NETSH_SAVE = 4
};
#define DEFAULT_CONTEXT_PRIORITY 100
#define NETSH_ROOT_GUID {0, 0, 0, {0, 0, 0, 0, 0, 0, 0, 0}}
typedef
DWORD
(WINAPI *PGET_RESOURCE_STRING_FN)(
_In_ DWORD dwMsgID,
_Out_ LPWSTR lpBuffer,
_In_ DWORD nBufferMax);
typedef
DWORD
(WINAPI *PNS_DLL_INIT_FN)(
_In_ DWORD dwNetshVersion,
_Out_ PVOID pReserved);
typedef
DWORD
(WINAPI *PNS_HELPER_START_FN)(
_In_ const GUID *pguidParent,
_In_ DWORD dwVersion);
typedef
DWORD
(WINAPI *PNS_HELPER_STOP_FN)(
_In_ DWORD dwReserved);
typedef
DWORD
(WINAPI *PNS_CONTEXT_COMMIT_FN)(
_In_ DWORD dwAction);
typedef
DWORD
(WINAPI *PNS_CONTEXT_CONNECT_FN)(
_In_ LPCWSTR pwszMachine);
typedef
DWORD
(WINAPI *PNS_CONTEXT_DUMP_FN)(
_In_ LPCWSTR pwszRouter,
_In_ LPWSTR *ppwcArguments,
_In_ DWORD dwArgCount,
_In_ LPCVOID pvData);
typedef
BOOL
(WINAPI *PNS_OSVERSIONCHECK)(
_In_ UINT CIMOSType,
_In_ UINT CIMOSProductSuite,
_In_ LPCWSTR CIMOSVersion,
_In_ LPCWSTR CIMOSBuildNumber,
_In_ LPCWSTR CIMServicePackMajorVersion,
_In_ LPCWSTR CIMServicePackMinorVersion,
_In_ UINT uiReserved,
_In_ DWORD dwReserved);
typedef
DWORD
(WINAPI *PFN_HANDLE_CMD)(
_In_ LPCWSTR pwszMachine,
_In_ LPWSTR *ppwcArguments,
_In_ DWORD dwCurrentIndex,
_In_ DWORD dwArgCount,
_In_ DWORD dwFlags,
_In_ LPCVOID pvData,
_Out_ BOOL *pbDone);
typedef struct _CMD_ENTRY
{
LPCWSTR pwszCmdToken;
PFN_HANDLE_CMD pfnCmdHandler;
DWORD dwShortCmdHelpToken;
DWORD dwCmdHlpToken;
DWORD dwFlags;
PNS_OSVERSIONCHECK pOsVersionCheck;
} CMD_ENTRY, *PCMD_ENTRY;
typedef struct _CMD_GROUP_ENTRY
{
LPCWSTR pwszCmdGroupToken;
DWORD dwShortCmdHelpToken;
ULONG ulCmdGroupSize;
DWORD dwFlags;
PCMD_ENTRY pCmdGroup;
PNS_OSVERSIONCHECK pOsVersionCheck;
} CMD_GROUP_ENTRY, *PCMD_GROUP_ENTRY;
typedef struct _NS_HELPER_ATTRIBUTES
{
union
{
struct
{
DWORD dwVersion;
DWORD dwReserved;
};
ULONGLONG _ullAlign;
};
GUID guidHelper;
PNS_HELPER_START_FN pfnStart;
PNS_HELPER_STOP_FN pfnStop;
} NS_HELPER_ATTRIBUTES, *PNS_HELPER_ATTRIBUTES;
typedef struct _NS_CONTEXT_ATTRIBUTES
{
union
{
struct
{
DWORD dwVersion;
DWORD dwReserved;
};
ULONGLONG _ullAlign;
};
LPWSTR pwszContext;
GUID guidHelper;
DWORD dwFlags;
ULONG ulPriority;
ULONG ulNumTopCmds;
CMD_ENTRY *pTopCmds;
ULONG ulNumGroups;
CMD_GROUP_ENTRY *pCmdGroups;
PNS_CONTEXT_COMMIT_FN pfnCommitFn;
PNS_CONTEXT_DUMP_FN pfnDumpFn;
PNS_CONTEXT_CONNECT_FN pfnConnectFn;
PVOID pReserved;
PNS_OSVERSIONCHECK pfnOsVersionCheck;
} NS_CONTEXT_ATTRIBUTES, *PNS_CONTEXT_ATTRIBUTES;
typedef struct _TAG_TYPE
{
LPCWSTR pwszTag;
DWORD dwRequired;
BOOL bPresent;
} TAG_TYPE, *PTAG_TYPE;
typedef struct _TOKEN_VALUE
{
LPCWSTR pwszToken;
DWORD dwValue;
} TOKEN_VALUE, *PTOKEN_VALUE;
DWORD
WINAPI
MatchEnumTag(
_In_ HANDLE hModule,
_In_ LPCWSTR pwcArg,
_In_ DWORD dwNumArg,
_In_ const TOKEN_VALUE *pEnumTable,
_Out_ PDWORD pdwValue);
BOOL
WINAPI
MatchToken(
_In_ LPCWSTR pwszUserToken,
_In_ LPCWSTR pwszCmdToken);
DWORD
WINAPI
PreprocessCommand(
_In_opt_ HANDLE hModule,
_Inout_ LPWSTR *ppwcArguments,
_In_ DWORD dwCurrentIndex,
_In_ DWORD dwArgCount,
_Inout_ PTAG_TYPE pttTags,
_In_ DWORD dwTagCount,
_In_ DWORD dwMinArgs,
_In_ DWORD dwMaxArgs,
_Out_ DWORD *pdwTagType);
DWORD
CDECL
PrintError(
_In_opt_ HANDLE hModule,
_In_ DWORD dwErrId,
...);
DWORD
CDECL
PrintMessageFromModule(
_In_ HANDLE hModule,
_In_ DWORD dwMsgId,
...);
DWORD
CDECL
PrintMessage(
_In_ LPCWSTR pwszMessage,
...);
DWORD
WINAPI
RegisterContext(
_In_ const NS_CONTEXT_ATTRIBUTES *pChildContext);
DWORD
WINAPI
RegisterHelper(
_In_ const GUID *pguidParentContext,
_In_ const NS_HELPER_ATTRIBUTES *pfnRegisterSubContext);
#ifdef __cplusplus
}
#endif
#endif /* _NETSH_H_ */