レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
ユーザーサポート
-
>>890
お問い合わせありがとうございます。
下記ように、1回CreateFile()実行して、失敗したら、サービスのスタートを実施しているコードがあります。
これは、窓使いの憂鬱でも同じですが、この違いはありますか?
デバイスドライバ自体のコードにも修正がありますが、オープンしてきたバイナリをチェックするコードは無いので、他のバイナリからでも
オープンできると思います。また
デバイスドライバのファイル名と論理的なデバイス名を変更した以外には、窓使いの憂鬱とは違いは無いという認識でいます。
// open nodoka device
bool Engine::open()
{
if (m_keyboard_hook != 0)
{
m_device = INVALID_HANDLE_VALUE;
return false;
}
// open nodoka m_device
m_device = CreateFile(NODOKA_DEVICE_FILE_NAME, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
if (m_device != INVALID_HANDLE_VALUE) {
return true;
}
// start nodokad
SC_HANDLE hscm = OpenSCManager(NULL, NULL, SC_MANAGER_CONNECT);
if (hscm)
{
SC_HANDLE hs = OpenService(hscm, NODOKA_DRIVER_NAME, SERVICE_START);
if (hs)
{
StartService(hs, 0, NULL);
CloseServiceHandle(hs);
m_didNodokaStartDevice = true;
}
CloseServiceHandle(hscm);
}
// open nodoka m_device
m_device = CreateFile(NODOKA_DEVICE_FILE_NAME, GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
return (m_device != INVALID_HANDLE_VALUE);
}
|
|
掲示板管理者へ連絡
無料レンタル掲示板