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

📄 shellproc.cpp

📁 wince5.0 pb中pccard源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
            ((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;
    }
}


//Command line function is not used here
VOID
ProcessCmdLine(LPCTSTR	szCmdLine){

	LPCTSTR	pCmdLine = NULL;
      return; 
}

#define PCCLEGACY_SOURCE_PATH	_T("\\Drivers\\PCCARD")
#define PCCLEGACY_BACKUP_PATH	_T("\\Drivers\\PCCARDBACKUP")
#define PCCOLD_SOURCE_PATH	_T("\\Drivers\\PCMCIA")
#define PCCOLD_BACKUP_PATH	_T("\\Drivers\\PCMCIABACKUP")
#define PCCLEGACY_PCM_SOURCE_PATH	_T("\\Drivers\\PCCARD\\PCMCIA\\TEMPLATE\\PCMCIA")
#define PCCLEGACY_PCM_BACKUP_PATH	_T("\\Drivers\\PCMCIATEMP")
#define PCCLEGACY_NOCONFIG_VALUE	1
#define PCCLEGACY_DUMMY_DETECTENTRY   _T("\\Drivers\\PCMCIA\\Detect\\01")
#define PCCLEGACY_DUMMY_DRVENTRY   _T("\\Drivers\\PCMCIA\\PCMDUMMYDRV")


//stole from reg_update.exe, this function will add an entry for the dummy driver,
//so whne any card plug in, the dummy driver will be loaded. 
BOOL 
AddDummyEntry(VOID){

	TCHAR    strDll[20], strEntry[20];
	HKEY hNewKey=NULL;
	HKEY hNewKey2=NULL;
	DWORD dwDisposition=0;

	memset(strDll,0x0,20*sizeof(TCHAR));
	memset(strEntry,0x0,20*sizeof(TCHAR));

	wcscpy(strDll,TEXT("pcc_dummydr.dll"));
	wcscpy(strEntry,TEXT("DetectIntr"));

	SetLastError(0);

	NKMSG(TEXT("Updating Registery... "));
	
	// Create registry entry at top of Detect List
 	if(ERROR_SUCCESS != RegCreateKeyEx( HKEY_LOCAL_MACHINE, PCCLEGACY_DUMMY_DETECTENTRY, 
							0, TEXT(""), 0, 
							0, NULL, 
							&hNewKey, &dwDisposition ))
		return FALSE;

  	if(ERROR_SUCCESS != RegSetValueEx(hNewKey, TEXT("Dll"), 
 						0, REG_SZ, (const BYTE *)strDll, 20*sizeof(TCHAR) )){
 		RegCloseKey(hNewKey);
 		return FALSE;
  	}

	if(ERROR_SUCCESS != RegSetValueEx(hNewKey, TEXT("Entry"), 
 						0, REG_SZ, (const BYTE *)strEntry, 20*sizeof(TCHAR) )){
		RegCloseKey(  hNewKey ); 
 		return FALSE;
	}
	
	RegCloseKey(  hNewKey ); 

 	//Create equivalent driver registry entry
	memset(strDll,0x0,20*sizeof(TCHAR));
	memset(strEntry,0x0,20*sizeof(TCHAR));

	wcscpy(strDll,TEXT("pcc_dummydr.dll"));
	wcscpy(strEntry,TEXT("tst"));

	if(ERROR_SUCCESS != RegCreateKeyEx( HKEY_LOCAL_MACHINE, PCCLEGACY_DUMMY_DRVENTRY, 
							0, TEXT(""), 0, 
							0, NULL, 
							&hNewKey2, &dwDisposition )){
		return FALSE;
	}

  	if(ERROR_SUCCESS != RegSetValueEx(hNewKey2, DEVLOAD_DLLNAME_VALNAME, 
 						0, DEVLOAD_DLLNAME_VALTYPE, (const BYTE *)strDll, (wcslen(strDll)+1)*sizeof(TCHAR)) ){
 		RegCloseKey(hNewKey2);
 		return FALSE;
  	}
 		

 	if(ERROR_SUCCESS != RegSetValueEx(hNewKey2, DEVLOAD_PREFIX_VALNAME, 
 						0,DEVLOAD_PREFIX_VALTYPE, (const BYTE *)strEntry, (wcslen(strEntry)+1)*sizeof(TCHAR) )){
 		RegCloseKey(hNewKey2);
 		return FALSE;
  	}
 
	RegCloseKey(  hNewKey2 ); 

	return TRUE;

}

BOOL 
UpdateLegacyRegistry(){
	
	CRegManipulate RegMani(HKEY_LOCAL_MACHINE);
	
	//make a backup for PCCARD16bit registry template
	if(RegMani.CopyAKey(PCCLEGACY_BACKUP_PATH, PCCLEGACY_SOURCE_PATH) == FALSE){
       	g_pKato->Log(LOG_DETAIL, _T("Can not make a backup of PCCard 16bit driver related registry!"));
		return FALSE;
	}

	//make a backup for old pcmcia registry 
	if(RegMani.CopyAKey(PCCOLD_BACKUP_PATH, PCCOLD_SOURCE_PATH) == FALSE){
       	g_pKato->Log(LOG_DETAIL, _T("Can not make a backup of PCMCIA old driver related registry!"));
		return FALSE;
	}

	//make a temp backup for PCCARD legacy registry 
	if(RegMani.CopyAKey(PCCLEGACY_PCM_BACKUP_PATH, PCCLEGACY_PCM_SOURCE_PATH) == FALSE){
       	g_pKato->Log(LOG_DETAIL, _T("Can not make a backup of PCCard legacy driver related registry!"));
		return FALSE;
	}

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

	//delete old PCMCIA registry
	if(RegMani.DeleteAKey(PCCOLD_SOURCE_PATH) == FALSE){
       	g_pKato->Log(LOG_DETAIL, _T("Can not old PCMCIA registry!"));
		return FALSE;
	}

	//restore the PCMCIA legacy registry
	if(RegMani.CopyAKey( PCCLEGACY_PCM_SOURCE_PATH, PCCLEGACY_PCM_BACKUP_PATH) == FALSE){
       	g_pKato->Log(LOG_DETAIL, _T("Can not make a backup of PCCard legacy driver related registry!"));
		return FALSE;
	}

	//delete the temp backup for PCCARD legacy registry 
	if(RegMani.DeleteAKey(PCCLEGACY_PCM_BACKUP_PATH) == FALSE){
       	g_pKato->Log(LOG_DETAIL, _T("Can not delete template!"));
		return FALSE;
	}

	if(AddDummyEntry() == FALSE){
       	g_pKato->Log(LOG_DETAIL, _T("Can not add dummy driver entry!"));
		return FALSE;
	}
	return TRUE;
}

BOOL 
RestoreLegacytRegistry(){

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

	//delete dummy driver entry, it might not exist so ignore false return
	RegMani.DeleteAKey(PCCLEGACY_DUMMY_DRVENTRY);

	//only do this if backup key exists
	if(RegMani.IsAKeyValidate(PCCLEGACY_BACKUP_PATH) == TRUE){
		//delete original template
		if(RegMani.DeleteAKey(PCCLEGACY_SOURCE_PATH) == FALSE){
	       	g_pKato->Log(LOG_DETAIL, _T("Can not delete template!"));
			return FALSE;
		}
		//restore template key
		if(RegMani.CopyAKey(PCCLEGACY_SOURCE_PATH, PCCLEGACY_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(PCCLEGACY_BACKUP_PATH) == FALSE){
	       	g_pKato->Log(LOG_DETAIL, _T("Can not delete backup template!"));
		}
	}
	if(RegMani.IsAKeyValidate(PCCOLD_BACKUP_PATH) == TRUE){
		//delete original old pcmcia driver
		if(RegMani.DeleteAKey(PCCOLD_SOURCE_PATH) == FALSE){//ignore this, it might not exist
	       	g_pKato->Log(LOG_DETAIL, _T("Can not delete old pcmcia registry!"));
		}
		//restore pcmcia key
		if(RegMani.CopyAKey(PCCOLD_SOURCE_PATH, PCCOLD_BACKUP_PATH) == FALSE){
	       	g_pKato->Log(LOG_DETAIL, _T("Can not restore old pcmcia driver related registry!"));
			return FALSE;
		}

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

⌨️ 快捷键说明

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