2009-07-09 11 views
2

HDD保護のための3D加速度計を搭載した新しいToshiba Satellite Pro S300ラップトップ(Windows XPを実行)があります。私はこのセンサーによって送られたデータに触れたいと思います。 Toshibaのラップトップ/タブレットには、アクセラレーションデータを抽出するためにアクセスできるDLLがありました。残念ながら、S300はこのDLLを持っていないようです(DLLのハックは別の場所で文書化されています、例えばhere)。東芝ラップトップ加速度計デバイスドライバへのアクセス

HDD保護アプリケーション(ノートパソコンの位置と動きに同期して回転する回転HDDの3D視覚化がかわいい)は、「標準でない」/カスタムDLLに依存していないようです(DependencyWalker )。 データは、サービス経由で、または.sysデバイスドライバ経由でアクセスされるようです。私は関連するファイルを特定することができたと思うが、関連する機能の検索、名前付け、アクセス、ロード(または「逆アセンブル」)の仕方はわからない。

加速度計データを検出して使用するにはどうすればよいですか?

答えて

1

私はそれが(東芝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を使用しました。

+0

に返信します:-)。私はもはやそのラップトップを持っていない。とにかく幸運は、あなたがそれを釘付けにしたようです。 –

3

は、一般的に言えば、あなたのツールは次のようになります。

  • Sysinternals Process Monitor - あなたの東芝のプロセスが何をするかの一般的な概要を与えることができます(のDeviceIoControlを落札され、それが開くデバイス(のCreateFile)及びそのI/O制御要求を)。
  • 逆アセンブラ - 私のお気に入りは、あなたが幸運であると東芝のプロセスは、IDAは喜んで使用するだろう、余分なデバッグ情報が含まれていることを見つけるかもしれないIDA

だろう。次に、入手可能なすべての情報があれば、自分で自分のことを理解する必要があります。

幸運を祈る!

+0

ありがとうございました。私はあなたに知らせるためにそれを試みます。 –

+0

+1優れたデバッグツールを推奨します。最終的に5年後に – Till

1

私は、Gecko(Firefoxなどのアプリケーションのセット)加速度計のサポートにはちょうどfiled a tightly related issueを使用しました。これは、いくつかのデバイスのサポートが次のメジャーバージョンで出荷できる可能性があります。 :-)

関連する問題