#include #include "PrmDescr.h" #include "ArgParse.h" #include "CmdFn.h" // global object storing all the data needed in order to process the wzctool command PARAM_DESCR_DATA g_PDData; // global table containing the description of all possible parameters PARAM_DESCR g_PDTable[] = { // param ID ------- param string -- arg parser ---- command function {PRM_SHOW, L"show", FnPaGuid, FnCmdShow}, {PRM_ADD, L"add", FnPaGuid, FnCmdAdd}, {PRM_DELETE, L"delete", FnPaGuid, FnCmdDelete}, {PRM_SET, L"set", FnPaGuid, FnCmdSet}, {PRM_VISIBLE, L"visible", NULL, NULL}, {PRM_PREFERRED, L"preferred", NULL, NULL}, {PRM_MASK, L"mask", FnPaMask, NULL}, {PRM_ENABLED, L"enabled", FnPaEnabled, NULL}, {PRM_SSID, L"ssid", FnPaSsid, NULL}, {PRM_BSSID, L"bssid", FnPaBssid, NULL}, {PRM_IM, L"im", FnPaIm, NULL}, {PRM_AM, L"am", FnPaAm, NULL}, {PRM_PRIV, L"priv", FnPaPriv, NULL}, {PRM_ONETIME, L"onetime", NULL, NULL}, {PRM_REFRESH, L"refresh", NULL, NULL}, {PRM_KEY, L"key", FnPaKey, NULL}, {PRM_ONEX, L"onex", FnPaOneX, NULL}, {PRM_FILE, L"output", FnPaOutFile, NULL} }; // global hash used to store all the acceptable parameters HASH g_PDHash; //---------------------------------------------------------- // initialize and fill in the hash for the parameter descriptors // Returns: win32 error DWORD PDInitialize() { DWORD dwErr; // initialize the parameter descriptors data ZeroMemory(&g_PDData, sizeof(PARAM_DESCR_DATA)); g_PDData.pfOut = stdout; // initialize the parameter descriptors hash dwErr = HshInitialize(&g_PDHash); // fill in the parameter descriptors hash if (dwErr == ERROR_SUCCESS) { UINT nPDTableSize = sizeof(g_PDTable) / sizeof(PARAM_DESCR); UINT i; for (i=0; dwErr == ERROR_SUCCESS && i < nPDTableSize; i++) { PPARAM_DESCR pPDTableEntry = &(g_PDTable[i]); dwErr = HshInsertObjectRef( g_PDHash.pRoot, pPDTableEntry->wszParam, pPDTableEntry, &(g_PDHash.pRoot)); } } SetLastError(dwErr); return dwErr; } //---------------------------------------------------------- // Clean out resources used for the parameter descriptors VOID PDDestroy() { // clean out the parameter descriptors data WZCDeleteIntfObj(&(g_PDData.wzcIntfEntry)); // close the output file if (g_PDData.pfOut != stdout) { fclose(g_PDData.pfOut); g_PDData.pfOut = stdout; } // clean out resources used by the parameter descriptors hash HshDestroy(&g_PDHash); }