C # Windows CE 5.0 ошибка: не удается найти точку входа ExitWindowsEx в PInvoke DLL coredll - PullRequest
1 голос
/ 04 января 2011

Мне нужно программно завершить работу планшета Windows CE 5.0 с помощью Microsoft.NET SDK CompactFramework v2.0. Я попытался использовать решение здесь , но получил сообщение об ошибке

Не могу найти точку входа ExitWindowsEx в PInvoke DLL coredll

Есть ли способ добавить ExitWindowsEx в мою сборку? Нужна ли другая coredll?

[Flags]
public enum ExitFlags
{
    Reboot = 0x02,
    PowerOff = 0x08
}
[DllImport("coredll")]
public static extern int ExitWindowsEx(ExitFlags flags, int reserved);
private static void buttonShutdown_Click(object sender, EventArgs e)
{
    ExitWindowsEx(ExitFlags.PowerOff, 0);
}
private static void buttonRestart_Click(object sender, EventArgs e)
{
    ExitWindowsEx(ExitFlags.Reboot, 0);
}

1 Ответ

2 голосов
/ 04 января 2011

Вы не можете просто поменять coredll.dll, это часть ОС.Чтобы изменить coredll, вам нужна совершенно новая ОС.

Тем не менее, не ясно, нужна ли она вам.ExitWindowsEx скорее всего не тот вызов, который вы хотите сделать (он не поддерживается в CE), но вместо этого вам, вероятно, следует вызывать KernelIoControl с IOCTL_HAL_REBOOT для мягкого сброса.

Стандартного «отключения питания» действительно не существует, поэтому, если вам действительно необходимо отключить питание, обратитесь к производителю.Однако существует режим ожидания устройства (при условии, что он находится в вашей конкретной ОС).Приостановка может быть получена программно с помощью P / Invoking GwesPowerOffSystem или после публикации клавиши VK_OFF в потоке клавиатуры.

...