⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shellproc.cpp

📁 wince5.0 pb中pccard源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:

            //Free PCMCIA.dll
		if(hInst)
			FreeLibrary(hInst);

		Restore16BitRegistry();
		PC32bitWR_DeInit();
            return SPR_HANDLED;      

        // --------------------------------------------------------------------
        // Message: SPM_SHELL_INFO
        //
        case SPM_SHELL_INFO:
            DEBUGMSG(ZONE_FUNCTION, (_T("ShellProc(SPM_SHELL_INFO, ...) called")));
            // Store a pointer to our shell info for later use.
            g_pShellInfo = (LPSPS_SHELL_INFO)spParam;
            if( g_pShellInfo->szDllCmdLine && *g_pShellInfo->szDllCmdLine ){
                // Display our Dlls command line if we have one.
                g_pKato->Log( LOG_DETAIL, 
                    _T("Command Line: \"%s\"."), g_pShellInfo->szDllCmdLine);

                ProcessCmdLine(g_pShellInfo->szDllCmdLine);
            }

      
        	return SPR_HANDLED;

        // --------------------------------------------------------------------
        // Message: SPM_REGISTER
        //
        case SPM_REGISTER:
            DEBUGMSG(ZONE_FUNCTION, (_T("ShellProc(SPM_REGISTER, ...) called")));
            
            ((LPSPS_REGISTER)spParam)->lpFunctionTable = g_lpFTE;
            #ifdef UNICODE
                return SPR_HANDLED | SPF_UNICODE;
            #else
                return SPR_HANDLED;
            #endif
            
        // --------------------------------------------------------------------
        // Message: SPM_START_SCRIPT
        //
        case SPM_START_SCRIPT:


	           return SPR_HANDLED;

        // --------------------------------------------------------------------
        // Message: SPM_STOP_SCRIPT
        //
        case SPM_STOP_SCRIPT:


            return SPR_HANDLED;

        // --------------------------------------------------------------------
        // Message: SPM_BEGIN_GROUP
        //
        case SPM_BEGIN_GROUP:
            DEBUGMSG(ZONE_FUNCTION, (_T("ShellProc(SPM_BEGIN_GROUP, ...) called")));
            g_pKato->BeginLevel(0, _T("BEGIN GROUP: PCLegacy.DLL"));
            
            return SPR_HANDLED;

        // --------------------------------------------------------------------
        // Message: SPM_END_GROUP
        //
        case SPM_END_GROUP:
            DEBUGMSG(ZONE_FUNCTION, (_T("ShellProc(SPM_END_GROUP, ...) called")));
            g_pKato->EndLevel(_T("END GROUP: PCLegacy.DLL"));
            
            return SPR_HANDLED;

        // --------------------------------------------------------------------
        // Message: SPM_BEGIN_TEST
        //
        case SPM_BEGIN_TEST:
            DEBUGMSG(ZONE_FUNCTION, (_T("ShellProc(SPM_BEGIN_TEST, ...) called")));

            // Start our logging level.
            pBT = (LPSPS_BEGIN_TEST)spParam;
            g_pKato->BeginLevel(pBT->lpFTE->dwUniqueID, 
                                _T("BEGIN TEST: \"%s\", Threads=%u, Seed=%u"),
                                pBT->lpFTE->lpDescription, pBT->dwThreadCount,
                                pBT->dwRandomSeed);

            return SPR_HANDLED;

        // --------------------------------------------------------------------
        // Message: SPM_END_TEST
        //
        case SPM_END_TEST:
            DEBUGMSG(ZONE_FUNCTION, (_T("ShellProc(SPM_END_TEST, ...) called")));

            // End our logging level.
            pET = (LPSPS_END_TEST)spParam;
            g_pKato->EndLevel(_T("END TEST: \"%s\", %s, Time=%u.%03u"),
                              pET->lpFTE->lpDescription,
                              pET->dwResult == TPR_SKIP ? _T("SKIPPED") :
                              pET->dwResult == TPR_PASS ? _T("PASSED") :
                              pET->dwResult == TPR_FAIL ? _T("FAILED") : _T("ABORTED"),
                              pET->dwExecutionTime / 1000, pET->dwExecutionTime % 1000);

            return SPR_HANDLED;

        // --------------------------------------------------------------------
        // Message: SPM_EXCEPTION
        //
        case SPM_EXCEPTION:
            DEBUGMSG(ZONE_FUNCTION, (_T("ShellProc(SPM_EXCEPTION, ...) called")));
            g_pKato->Log(LOG_EXCEPTION, _T("Exception occurred!"));
            return SPR_HANDLED;

        default:
            DEBUGMSG(ZONE_ERROR, (_T("ShellProc received bad message: 0x%X"), uMsg));
            ASSERT(!"Default case reached in ShellProc!");
            return SPR_NOT_HANDLED;
    }
}

VOID
ProcessCmdLine(LPCTSTR	szCmdLine){

	LPCTSTR	pCmdLine = NULL;
	
	if(szCmdLine == NULL) //no command line
		return;

      NKDbgPrintfW(_T("Command line is: %s"), szCmdLine);
		
	 return; 
}

#define PCC16BIT_SOURCE_PATH	_T("\\Drivers\\PCCARD\\PCMCIA\\TEMPLATE")
#define PCC16BIT_BACKUP_PATH	_T("\\Drivers\\PCCARD\\PCMCIA\\TEMPLATEBACKUP")
#define PCC16BIT_TEST_NAME		_T("TEST")
#define PCC16BIT_DLL_NAME		_T("Dll")
#define PCC16BIT_DLL_VALUE		_T("pcc_dummydr.dll")
#define PCC16BIT_NOCONFIG_NAME	_T("NoConfig")
#define PCC16BIT_NOCONFIG_VALUE	1

BOOL 
Update16BitRegistry(){
	
	CRegManipulate RegMani(HKEY_LOCAL_MACHINE);
	PREG_KEY_INFO	pKeyInfo = NULL;
	U_ITEM	u = {0};
	
	//make a backup for PCCARD16bit registry template
	if(RegMani.CopyAKey(PCC16BIT_BACKUP_PATH, PCC16BIT_SOURCE_PATH) == FALSE){
       	g_pKato->Log(LOG_DETAIL, _T("Can not make a backup of PCCard 16bit driver related registry!"));
		return FALSE;
	}

	//create the test template key
	pKeyInfo = new REG_KEY_INFO;
	if(pKeyInfo == NULL){
       	g_pKato->Log(LOG_DETAIL, _T("Out of memory!"));
		return FALSE;
	}
	memset(pKeyInfo, 0, sizeof(REG_KEY_INFO));
	wcscpy(pKeyInfo->szRegPath, PCC16BIT_SOURCE_PATH);
	wcscat(pKeyInfo->szRegPath, _T("\\"));
	wcscat(pKeyInfo->szRegPath, PCC16BIT_TEST_NAME);
	wcscpy(u.szData, PCC16BIT_DLL_VALUE);
	RegMani.AddKeyValue(pKeyInfo, PCC16BIT_DLL_NAME, REG_SZ, wcslen(PCC16BIT_DLL_VALUE)*sizeof(TCHAR), u);
	memset(&u, 0, sizeof(u));
	u.dwData = 1;
	RegMani.AddKeyValue(pKeyInfo, PCC16BIT_NOCONFIG_NAME, REG_DWORD, sizeof(DWORD), u);

	//delete original template
	if(RegMani.DeleteAKey(PCC16BIT_SOURCE_PATH) == FALSE){
       	g_pKato->Log(LOG_DETAIL, _T("Can not delete template!"));
		delete pKeyInfo;
		return FALSE;
	}

	//create test template
	if(RegMani.SetAKey(pKeyInfo, TRUE) == FALSE){
       	g_pKato->Log(LOG_DETAIL, _T("Can not set testtemplate!"));
		delete pKeyInfo;
		return FALSE;
	}

	delete pKeyInfo;
	return TRUE;
}

BOOL 
Restore16BitRegistry(){

	CRegManipulate RegMani(HKEY_LOCAL_MACHINE);
	PREG_KEY_INFO	pKeyInfo = NULL;
	U_ITEM	u = {0};

	//only do this if backup key exists
	if(RegMani.IsAKeyValidate(PCC16BIT_BACKUP_PATH) == TRUE){
		//delete original template
		if(RegMani.DeleteAKey(PCC16BIT_SOURCE_PATH) == FALSE){
	       	g_pKato->Log(LOG_DETAIL, _T("Can not delete template!"));
			return FALSE;
		}
		//restore template key
		if(RegMani.CopyAKey(PCC16BIT_SOURCE_PATH, PCC16BIT_BACKUP_PATH) == FALSE){
	       	g_pKato->Log(LOG_DETAIL, _T("Can not restore PCCard 16bit driver related registry!"));
			return FALSE;
		}

		//delete backup template
		if(RegMani.DeleteAKey(PCC16BIT_BACKUP_PATH) == FALSE){
	       	g_pKato->Log(LOG_DETAIL, _T("Can not delete backup template!"));
		}
	}
	
	return TRUE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -