Přístup k notebooku Toshiba Akcelerometr ovladače zařízení

hlasů
2

Mám nový Toshiba Satellite Pro S300 notebook (se systémem Windows XP), který Sports 3D akcelerometr pro ochranu pevného disku. Rád bych proniknout do dat poslaných tímto snímačem. Starší Toshiba notebook / Tablety měly DLL, která by mohla být přístupná pro extrakci dat zrychlení. Bohužel, S300 se nezdá mít tuto knihovnu (DLL hack byla dokumentována i jinde, např zde ).

Aplikaci Protection HDD (který má roztomilý 3D vizualizaci rotujícího pevného disku, který se otáčí v synchronizaci s postojem notebooku a pohybu) se nezdá být závislá na žádných „nestandardních“ / vlastních dll (podle DependencyWalker). Zdá se, že data jsou přístupná buď prostřednictvím služby a / nebo prostřednictvím ovladače SYS zařízení. Myslím, že se mi podařilo identifikovat příslušné soubory, ale nemám ponětí, jak najít, jméno, přístup, zatížení (nebo „demontáž“) příslušné funkce.

Jak se mohu objevit a využít data akcelerometru?

Položena 09/07/2009 v 20:40
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
3

Obecně řečeno, bude vaše nástroje:

  • Sysinternals Process Monitor - vám může dát obecný přehled o tom, co Toshiba dělá proces: které zařízení je otevřena (CreateFile) a které I / O řídící požaduje to dělá (DeviceIoControl).
  • disassembler - můj oblíbený by IDA

Ty by mohly mít štěstí a zjistíte, že Toshiba proces obsahuje navíc informace o ladění, který IDA by šťastně využívat. Potom se všemi dostupnými informacemi, měli byste mít smysl věcí na vlastní pěst.

Hodně štěstí!

Odpovězeno 15/07/2009 v 14:50
zdroj uživatelem

hlasů
1

Byl jsem schopen se dostat do práce s tímto kódem (na Toshiba 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);
}

Nemusí to být ale velmi hezká, ale můžeme začít hrát :)

Použil jsem TPCHCTL.dll, který je dodáván s hardwarem monitoru Toshiba přijít na to, btw.

Odpovězeno 15/06/2013 v 21:23
zdroj uživatelem

hlasů
1

Pro záznam, jsem právě podal těsně související problém do Gecko (Firefox et. Al., Sada aplikací) podpora akcelerometru, jehož podpora pro více přístrojů by mohl být schopen dodávat s další hlavní verzi. :-)

Odpovězeno 13/10/2009 v 00:32
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more