アクセス、東芝ノート加速度センサデバイスドライバ
-
12-09-2019 - |
質問
私は新しいToshiba Satellite Pro s300型のノートパソコン(Windows XP)スポーツの3D加速度センサーのためにHDDを保護します。思タに送信されるデータこのセンサーです。以上東芝ノートpc/タブレットがDLLときにアクセスを抽出し、加速度データです。残念ながら、s300型しているようには思えないこDLL(DLLのhackは文書化されて他の、例えば こちらの).
のHDDに保護ースのアプリケーション(あるかわいい3次元可視化の回転HDDを回転させる共に歩んのノートの位置や動きないように依存する"非標準-カスタムDll(DependencyWalker).このデータにアクセスを通じてサービスおよび/またはa.sysデバイスドライバーです。と思うから受けることになってしまいを識別するファイルがわからないか、氏名、アクセス負荷は"分解")に関連する。
できるかを発見し、加速度センサーを利用すか?
解決
私はそれが(東芝Satellite ProはS300L-120、Windows 7では)このコードで仕事を得ることができました
void ReadAccel(float a[3])
{
HANDLE h = CreateFile(L"\\\\.\\TVALZ", GENERIC_ALL, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
struct dummy
{
unsigned long magic1; /* = 0x0000FE00 */
unsigned long magic2; /* = 0x000000A6 */
unsigned short x, y;
unsigned long unknown, z;
unsigned long direction;
} d;
memset(&d, 0, sizeof(d));
unsigned long retlen;
d.magic1 = 0x0000FE00;
d.magic2 = 0xA6;
d.direction = 0;
DeviceIoControl(h, 0x222880, &d, sizeof(d), &d, sizeof(d), &retlen, NULL);
d.magic1 = 0x0000FE00;
d.direction = 1;
Sleep(20); /* Doesn't seem to work without the wait */
DeviceIoControl(h, 0x222880, &d, sizeof(d), &d, sizeof(d), &retlen, NULL);
signed short x = (d.x & 0x7FFF) * (d.x & 0x8000?-1:1);
signed short y = (d.y & 0x7FFF) * (d.y & 0x8000?-1:1);
signed short z = (d.z & 0x7FFF) * (d.z & 0x8000?-1:1);
a[2] = -(float)z * 9.8 / 205; /* this is just an estimate to go to SI units */
a[1] = (float)y * 9.8 / 205;
a[0] = (float)x * 9.8 / 205;
CloseHandle(h);
}
これは非常にきれいな、まだではないかもしれませんが、私たちが演奏を開始することができます。)
私はところで、これを理解するために、東芝のハードウェアモニタが付属していますTPCHCTL.dllを使用します。
他のヒント
一般的には、ニューヨーク-タイム:
- Sysinternals工程モニター -できるだけ一般的な概要のう東芝のプロセスは:るデバイスを開いたとき(、CreateFileるI/O制御の要求も(DeviceIoControl).
- は、逆アセンブラ-私の好きない IDA
きゃり見る東芝のプロセスには追加のデバッグ情報IDAが楽しく活用しています。その後、全ての入手可能な情報かえるものです。
幸運を祈っています。
記録のために、私はちょうどはしっかりと、関連する問題を提起してきたにGecko(Firefoxのらアプリケーションのセット)加速度計のサポート、にそのサポートいくつかのデバイスのためには、次のメジャーバージョンに同梱することができるかもしれません。 : - )