46 DPRINT(
"AddContext(%S)\n", pszName);
52 if (pParentContext !=
NULL && pszName ==
NULL)
76 pEntry->pParentContext = pParentContext;
81 if (pParentContext !=
NULL)
105 DWORD dwShortCmdHelpToken,
111 if (pfnCmdHandler ==
NULL)
130 pEntry->pfnCmdHandler = pfnCmdHandler;
131 pEntry->dwShortCmdHelpToken = dwShortCmdHelpToken;
132 pEntry->dwCmdHlpToken = dwCmdHlpToken;
155 DWORD dwShortCmdHelpToken,
160 DPRINT(
"AddCommandGroup(%S %lu)\n", pwszCmdGroupToken, dwShortCmdHelpToken);
177 pEntry->dwShortCmdHelpToken = dwShortCmdHelpToken;
201 DWORD dwShortCmdHelpToken,
207 if (pfnCmdHandler ==
NULL)
226 pEntry->pfnCmdHandler = pfnCmdHandler;
227 pEntry->dwShortCmdHelpToken = dwShortCmdHelpToken;
228 pEntry->dwCmdHlpToken = dwCmdHlpToken;
259 if (pStackEntry->
pContext == pContextEntry)
284 pNextEntry = pStackEntry->
pNext;
285 pStackEntry->
pPrev->pNext = pStackEntry->
pNext;
286 pStackEntry->
pNext->pPrev = pStackEntry->
pPrev;
288 pStackEntry = pNextEntry;
296 pStackEntry = pStackEntry->
pNext;
334 DWORD dwCount, dwIndex;
337 DPRINT(
"DumpContext()\n");
347 DPRINT1(
"Dump function failed (Error %lu)\n", dwError);
361 pSubContext = pSubContext->
pNext;
366 if (pSortArray ==
NULL)
374 pSortArray[dwIndex] = pSubContext;
376 pSubContext = pSubContext->
pNext;
383 for (dwIndex = 0; dwIndex < dwCount; dwIndex++)
392 DPRINT1(
"Dump function failed (Error %lu)\n", dwError);
410 DWORD dwCount, dwIndex;
420 DPRINT1(
"Commit function failed (Error %lu)\n", dwError);
434 pSubContext = pSubContext->
pNext;
439 if (pSortArray ==
NULL)
447 pSortArray[dwIndex] = pSubContext;
449 pSubContext = pSubContext->
pNext;
456 for (dwIndex = 0; dwIndex < dwCount; dwIndex++)
462 DPRINT1(
"Commit function failed (Error %lu)\n", dwError);
503 DPRINT(
"AbortCommand()\n");
520 DPRINT(
"CommitCommand()\n");
537 DPRINT(
"DumpCommand()\n");
558 DPRINT(
"ExecCommand()\n");
612 DPRINT(
"OfflineCommand()\n");
630 DPRINT(
"OnlineCommand()\n");
650 DPRINT(
"PopdCommand()\n");
689 DPRINT(
"PushdCommand()\n");
725 DPRINT(
"SetMachineCommand(pwszMachine %S dwCurrentIndex %lu dwArgCount %lu)\n",
762 DPRINT(
"SetModeCommand(pwszMachine %S dwCurrentIndex %lu dwArgCount %lu)\n",
798 DPRINT(
"ShowModeCommand()\n");
888 return pResultContext;
890 pSubContext = pSubContext->
pNext;
917 DPRINT1(
"RegisterContext(%p)\n", pChildContext);
918 if (pChildContext ==
NULL)
920 DPRINT1(
"Invalid child context!\n");
924 if ((pChildContext->pwszContext ==
NULL) ||
925 (
wcslen(pChildContext->pwszContext) == 0) ||
926 (
wcschr(pChildContext->pwszContext,
L' ') != 0) ||
927 (
wcschr(pChildContext->pwszContext,
L'=') != 0))
929 DPRINT1(
"Invalid context name!\n");
933 DPRINT(
"Name: %S\n", pChildContext->pwszContext);
934 DPRINT(
"Groups: %lu\n", pChildContext->ulNumGroups);
935 DPRINT(
"Top commands: %lu\n", pChildContext->ulNumTopCmds);
938 DPRINT(
"Helper %p\n", pHelper);
943 DPRINT(
"pParentContext %p\n", pParentContext);
944 if (pParentContext ==
NULL)
962 for (
i = 0;
i < pChildContext->ulNumTopCmds;
i++)
965 pChildContext->pTopCmds[
i].pwszCmdToken,
966 pChildContext->pTopCmds[
i].pfnCmdHandler,
967 pChildContext->pTopCmds[
i].dwShortCmdHelpToken,
968 pChildContext->pTopCmds[
i].dwCmdHlpToken,
969 pChildContext->pTopCmds[
i].dwFlags);
973 for (
i = 0;
i < pChildContext->ulNumGroups;
i++)
976 pChildContext->pCmdGroups[
i].pwszCmdGroupToken,
977 pChildContext->pCmdGroups[
i].dwShortCmdHelpToken,
978 pChildContext->pCmdGroups[
i].dwFlags);
981 for (
j = 0;
j < pChildContext->pCmdGroups[
i].ulCmdGroupSize;
j++)
984 pChildContext->pCmdGroups[
i].pCmdGroup[
j].pwszCmdToken,
985 pChildContext->pCmdGroups[
i].pCmdGroup[
j].pfnCmdHandler,
987 pChildContext->pCmdGroups[
i].pCmdGroup[
j].dwCmdHlpToken,
988 pChildContext->pCmdGroups[
i].pCmdGroup[
j].dwFlags);
void ConPuts(FILE *fp, LPCWSTR psz)
DWORD WINAPI ShowAliasCommand(LPCWSTR pwszMachine, LPWSTR *argv, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
DWORD WINAPI UnaliasCommand(LPCWSTR pwszMachine, LPWSTR *argv, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
DWORD WINAPI AliasCommand(LPCWSTR pwszMachine, LPWSTR *argv, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
PCONTEXT_ENTRY FindContextByGuid(const GUID *pGuid)
PCONTEXT_STACK_ENTRY pContextStackHead
struct _CONTEXT_STACK_ENTRY * PCONTEXT_STACK_ENTRY
BOOL CreateRootContext(VOID)
PCOMMAND_GROUP AddCommandGroup(PCONTEXT_ENTRY pContext, LPCWSTR pwszCmdGroupToken, DWORD dwShortCmdHelpToken, DWORD dwFlags)
DWORD WINAPI SetModeCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
DWORD WINAPI RegisterContext(_In_ const NS_CONTEXT_ATTRIBUTES *pChildContext)
PCOMMAND_ENTRY AddContextCommand(PCONTEXT_ENTRY pContext, LPCWSTR pwszCmdToken, PFN_HANDLE_CMD pfnCmdHandler, DWORD dwShortCmdHelpToken, DWORD dwCmdHlpToken, DWORD dwFlags)
PCOMMAND_ENTRY AddGroupCommand(PCOMMAND_GROUP pGroup, LPCWSTR pwszCmdToken, PFN_HANDLE_CMD pfnCmdHandler, DWORD dwShortCmdHelpToken, DWORD dwCmdHlpToken, DWORD dwFlags)
PCONTEXT_ENTRY pRootContext
DWORD WINAPI ExecCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
DWORD WINAPI CommitCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
VOID CleanupContext(VOID)
VOID RemoveContextFromStack(_In_ PCONTEXT_ENTRY pContextEntry)
DWORD WINAPI ShowModeCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
DWORD WINAPI AbortCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
static int ContextCompare(_In_ const void *p1, _In_ const void *p2)
DWORD WINAPI RemCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
DWORD WINAPI OnlineCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
DWORD WINAPI UpCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
DWORD WINAPI SetMachineCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
PCONTEXT_ENTRY pCurrentContext
static PCONTEXT_ENTRY FindSubContextByGuid(PCONTEXT_ENTRY pContext, const GUID *pGuid)
DWORD WINAPI DumpCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *ppwcArguments, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
struct _CONTEXT_STACK_ENTRY CONTEXT_STACK_ENTRY
DWORD WINAPI PopdCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
VOID DeleteContext(PWSTR pszName)
PCONTEXT_ENTRY AddContext(PCONTEXT_ENTRY pParentContext, PWSTR pszName, GUID *pGuid)
static DWORD CommitContext(_In_ PCONTEXT_ENTRY pContext, _In_ DWORD dwAction)
DWORD WINAPI OfflineCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
DWORD WINAPI PushdCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
DWORD WINAPI ExitCommand(_In_ LPCWSTR pwszMachine, _In_ LPWSTR *argv, _In_ DWORD dwCurrentIndex, _In_ DWORD dwArgCount, _In_ DWORD dwFlags, _In_ LPCVOID pvData, _Out_ BOOL *pbDone)
static DWORD DumpContext(_In_ PCONTEXT_ENTRY pContext, _In_ LPCWSTR pwszMachine, _In_ LPWSTR *ppwcArguments, _In_ DWORD dwArgCount, _In_ LPCVOID pvData)
PCONTEXT_STACK_ENTRY pContextStackTail
struct _CONTEXT_ENTRY * PCONTEXT_ENTRY
#define IDS_HLP_DEL_HELPER
#define IDS_HLP_SHOW_MODE
#define IDS_HLP_SHOW_ALIAS_EX
#define IDS_HLP_GROUP_SET
#define IDS_HLP_GROUP_ADD
#define IDS_HLP_SHOW_ALIAS
#define IDS_HLP_UNALIAS_EX
#define IDS_HLP_GROUP_SHOW
#define IDS_HLP_DEL_HELPER_EX
#define IDS_HLP_SET_MACHINE
#define IDS_HLP_OFFLINE_EX
#define IDS_HLP_SET_MODE_EX
#define IDS_HLP_COMMIT_EX
#define IDS_HLP_GROUP_DELETE
#define IDS_HLP_SHOW_MODE_EX
#define IDS_HLP_ONLINE_EX
#define IDS_HLP_SHOW_HELPER
#define IDS_HLP_SET_MACHINE_EX
#define IDS_HLP_ADD_HELPER_EX
#define IDS_HLP_SHOW_HELPER_EX
#define IDS_HLP_ADD_HELPER
void __cdecl qsort(_Inout_updates_bytes_(_NumOfElements *_SizeOfElements) void *_Base, _In_ size_t _NumOfElements, _In_ size_t _SizeOfElements, _In_ int(__cdecl *_PtFuncCompare)(const void *, const void *))
#define ERROR_NOT_ENOUGH_MEMORY
#define ERROR_INVALID_PARAMETER
#define HeapFree(x, y, z)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
PHELPER_ENTRY FindHelper(_In_ const GUID *pguidHelper, _In_ PHELPER_ENTRY pHelper)
DWORD WINAPI ShowHelperCommand(LPCWSTR pwszMachine, LPWSTR *ppwcArguments, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
DWORD WINAPI AddHelperCommand(LPCWSTR pwszMachine, LPWSTR *ppwcArguments, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
DWORD WINAPI DeleteHelperCommand(LPCWSTR pwszMachine, LPWSTR *ppwcArguments, DWORD dwCurrentIndex, DWORD dwArgCount, DWORD dwFlags, LPCVOID pvData, BOOL *pbDone)
PHELPER_ENTRY pHelperListHead
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
DWORD RunScript(_In_ LPCWSTR filename)
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
FN_HANDLE_CMD * PFN_HANDLE_CMD
#define ERROR_INVALID_SYNTAX
_In_ LPWSTR _In_ DWORD _In_ LPCVOID pvData
_In_ LPWSTR * ppwcArguments
#define DEFAULT_CONTEXT_PRIORITY
_In_ LPWSTR _In_ DWORD dwArgCount
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD _In_ LPCVOID _Out_ BOOL * pbDone
_In_ LPWSTR _In_ DWORD dwCurrentIndex
#define IsEqualGUID(rguid1, rguid2)
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
struct _COMMAND_ENTRY * pNext
PCOMMAND_ENTRY pCommandListTail
PCOMMAND_ENTRY pCommandListHead
struct _COMMAND_GROUP * pNext
DWORD dwShortCmdHelpToken
PNS_CONTEXT_CONNECT_FN pfnConnectFn
PCOMMAND_ENTRY pCommandListTail
PCOMMAND_GROUP pGroupListTail
struct _CONTEXT_ENTRY * pSubContextHead
PNS_CONTEXT_COMMIT_FN pfnCommitFn
struct _CONTEXT_ENTRY * pParentContext
struct _CONTEXT_ENTRY * pNext
PNS_CONTEXT_DUMP_FN pfnDumpFn
PCOMMAND_GROUP pGroupListHead
PCOMMAND_ENTRY pCommandListHead
struct _CONTEXT_ENTRY * pSubContextTail
struct _CONTEXT_STACK_ENTRY * pNext
struct _CONTEXT_STACK_ENTRY * pPrev
PDLL_LIST_ENTRY pDllEntry