Я пытался стереть реестр Hive.
К счастью, я нашел этот форум (http://geekswithblogs.net/BruceEitman/archive/2009/04/28/windows-ce-cleaning-the-registry-hive.aspx)), который говорит мне, что это можно сделать, добавив новую функциональность в kernelIoControl. Я попытался вызвать его и отладить в одном из драйверов и обнаружил, что при Я вызвал kernelIoControl, он привел меня к функции XXX_KernelIoControl в C: \ WINCE800 \ private \ winceos \ coreos \ core \ thunks \ tkfuncs.cpp. В конце функции вызывается KernelIoControl, и у меня нет доступа к исходный код больше (взял меня в ассемблерный код).
На форуме предоставлен пример кода для установки флага для удаления реестра кустов (см. Код ниже).
DWORD *pFlags = (DWORD *)lpInBuf;
BOOL *pClean = (BOOL *)lpOutBuf;
*pfClean = FALSE;
if((*pdwFlags == HIVECLEANFLAG_SYSTEM) || (*pdwFlags == HIVECLEANFLAG_USERS))
{
if(CheckSharedMemoryHiveDeleteFlag())
{
*pClean = TRUE;
}
}
return TRUE;
Что я не понимаю, так это то, что нигде не могу найти * pclean (при условии, что имя переменной правильное). Кроме того, Microsoft предоставляет ту же информацию (https://msdn.microsoft.com/pt-br/windows/desktop/ms904450?f=255&MSPPError=-2147217396), в которой все еще используется * pclean. Поэтому в скорлупе ореха я нашел способ установить флаг для удаления улья.