codice:
void CTestSerialLibPDADlg::ManagePowerSetting() {
DWORD i, dwValueSize, j;
WCHAR Value[1024];
WCHAR RegKey[1024];
HKEY hkey, hkey1;
DWORD dwValueType = REG_EXPAND_SZ;
WCHAR ValueVect[1024];
WCHAR Res[1024];
i = 0;
dwValueSize = 1024;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Drivers\\Active", 0, KEY_ALL_ACCESS, &hkey) == ERROR_SUCCESS) {
while (RegEnumKeyEx(hkey, i, Value, &dwValueSize, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) {
// SendDlgItemMessage(IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) Value);
swprintf(RegKey, L"Drivers\\Active\\%s", Value);
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, RegKey, 0, KEY_ALL_ACCESS, &hkey1) == ERROR_SUCCESS) {
dwValueSize = 1024;
if (RegQueryValueEx(hkey1, L"Key", NULL, &dwValueType, (LPBYTE)Value, &dwValueSize) == ERROR_SUCCESS) {
if (wcscmp(Value, L"\\Drivers\\SDCARD\\ClientDrivers\\Class\\SDMemory_Class") == 0) {
SendDlgItemMessage(IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) Value);
UpdateWindow();
LONG res = RegSetValueEx(hkey1, L"DisablePowerManagement", 0, REG_DWORD, 0, 1);
if (res == ERROR_SUCCESS) {
SendDlgItemMessage(IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) L"Registro modificato");
UpdateWindow();
}
else {
SendDlgItemMessage(IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) L"Modifica fallita");
if (res == NULL) {
SendDlgItemMessage(IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) L"Res NULL");
UpdateWindow();
}
else {
swprintf(Res, L"Res: %i", res);
SendDlgItemMessage(IDC_LIST1, LB_ADDSTRING, 0, (LPARAM) (LPCTSTR) res);
UpdateWindow();
}
}
}
}
}
dwValueSize = 1024;
i++;
}
RegCloseKey(hkey1);
RegCloseKey(hkey);
}
}
con l'idea di effettuare una scansione dei driver dal registro di sistema del terminale mobile e disabilitare il power off della micro SD.