Windows VistaからECレジスタの取得方法

初めての投稿です。
NECコントロールシステム 田中 信也です。

WindowsXPにて、ノートのバッテリ情報等を直接ECレジスタを取得して
情報収集しておりました。同じ処理がWindowsVistaにて動作しないので
情報をお持ちの方はコメントをお願いします。

<WindowsXPにて動作しているECレジスタのREAD処理>
以下のデバイスドライバをオープンしています。

オープン処理

if (!DefineDosDevice(DDD_RAW_TARGET_PATH, "ACPIEC", "\\Device\\ACPIEC"))
{
return FALSE;
}

DeviceHandle = CreateFile("\\\\.\\ACPIEC",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);

リード処理は、SetFilePointerにて、レジスタ位置を指定し、ReadFileにて
ECレジスタの読み出しを行っています。

<ドライバの確認>
WindowsXPでは動作していますが、WindowsVISTAでは動作していない状況です。
「Microsoft ACPI-Compliant Embedded Controller」をデバイスマネージャで
参照すると以下の通りとなっています。

WindowsXP
ドライバファイル:acpiec.sys oprghdlr.sys
リソース    :I/0 62h、66h

WindowsVista
ドライバファイル:なし
リソース    :I/0 62h、66h

「acpiec.sys」がドライバとしてロードされていないことから、
失敗していると予想しております。

<その他>
バッテリ容量が表示されることから、バッテリのドライバである
「battc.sys」、「cmbatt.sys」がサンプルとしてあれば参考に
なるかと考えており、探している最中です。

                             以上

フィルタドライバ云

フィルタドライバ云々の情報ではありませんが、

DeviceIoControlのIOCTL_BATTERY_QUERY_INFORMATIONなどで
バッテリー情報は取れますが、
それとは違うものを取りたいのでしょうか?

返信ありがとうござ

返信ありがとうございます。
ECレジスタをカスタマイズしており、ECが管理している
温度等の詳細情報を取得したいと考えております。

IOCTL_BATTERY_QUERY_INFORMATIONにて取得できる内容を
カスタマイズ可能であれば、対応できそうですが、、
ちょっと調べてみます。

MSからは、ECレジスタをさわるドライバにフィルタドライバを
作成すると、慣れている人ならECレジスタへのI/Fがわかるから
云々といわれております。
経験がないのなら、デバイスドライバ開発を専門に行っている
会社に聞いたほうがいいよというようなニュアンスで言われております。

NECコントロール

NECコントロールシステム 田中 信也です。

MSDN経由で質問したとこと、以下のような実現方法を提案されて
調査中です。情報リソースを知っている方いればコメントをお願いします。


ACPIEC.SYS デバイス ドライバーに対して Upper Filter のドライバー
(一般にフィルター ドライバーと呼んでいます) を作成することで、
実現可能と思われます。

VISTAでは“\\Device\ACPIEC” のデバイス オブジェクトが作成されて
いないためアクセスできないとのことです。

                              以上