wince强制卸载系统自启动驱动

最近写了个驱动,是开机自启动的。但是在调试的时候想卸载这个驱动释放其占用的某些资源,发现使用RegisterDevice这些重新加载然后再调用DeactivateDevice卸载却无效。后来就在网上找了一下。发现是可以实现这个效果的。下面把这个记录一下:

查找出设备驱动,然后卸装:

BOOL CD3GHelpDlg::Unload(CString strDev)
{
	BOOL bRes = FALSE;

	HANDLE hFind = INVALID_HANDLE_VALUE;
	try
	{  
		if(strDev.IsEmpty()){
			return FALSE;//__leave;
		}

		//确定搜索的方式
		DeviceSearchType searchType;
		if(strDev.GetAt(strDev.GetLength() - 1) == ':'){
			searchType = DeviceSearchByLegacyName;
		}
		else{
			searchType = DeviceSearchByDeviceName;
		}

		DEVMGR_DEVICE_INFORMATION devInfo = {0};
		devInfo.dwSize = sizeof(devInfo);

		//寻找驱动的句柄
		hFind = FindFirstDevice(searchType, strDev, &devInfo);
		if(hFind == INVALID_HANDLE_VALUE){
			return FALSE;//__leave;
		}

		//卸载驱动
		bRes = DeactivateDevice(devInfo.hDevice);

		FindClose(hFind);
	}
	//__finally{
	catch(HANDLE e){
	};

	return bRes;

}

卸载一个驱动,例如:

Unload(L"TGD1:");
这样就可以把TGD1:的驱动卸载掉了。





你可能感兴趣的:(WinCE)