문제

HDD 보호를위한 3D 가속도계를 자랑하는 새로운 Toshiba Satellite Pro S300 노트북 (Windows XP 실행)이 있습니다. 이 센서에서 보낸 데이터를 활용하고 싶습니다. 구형 Toshiba 노트북/태블릿에는 가속 데이터를 추출하기 위해 액세스 할 수있는 DLL이있었습니다. 불행히도 S300에는이 DLL이없는 것 같습니다 (DLL 해킹은 다른 곳에서 문서화되었습니다. 여기).

HDD Protection 앱 (랩톱의 위치 및 모션과 회전하는 회전 HDD의 귀여운 3D 시각화가있는 것은 "비표준"/사용자 정의 DLL (AppendencyWalker에 따라)에 의존하지 않는 것 같습니다. 데이터는 서비스 및/또는 .SYS 장치 드라이버를 통해 액세스하는 것으로 보입니다. 관련 파일을 식별했다고 생각하지만 관련 함수를 찾아서 이름, 액세스,로드 (또는 "분해")를 찾는 방법을 모르겠습니다.

가속도계 데이터를 어떻게 발견하고 사용할 수 있습니까?

도움이 되었습니까?

해결책

이 코드를 사용하여 작업 할 수있었습니다 (Toshiba Satellite Pro S300L-1220, 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);
}

아직 예쁘지는 않지만 우리는 연주를 시작할 수 있습니다 :)

Toshiba 하드웨어 모니터와 함께 제공되는 TPCHCTL.DLL을 사용하여 BTW를 알아 냈습니다.

다른 팁

일반적으로 도구는 다음과 같습니다.

  • sysinternals 프로세스 모니터 - Toshiba의 프로세스가하는 일에 대한 일반적인 개요 : 어떤 장치 (CreateFile) 및 I/O 제어 요청 (DeviceioControl)에 대한 일반적인 개요를 제공 할 수 있습니다.
  • 분리기 - 내가 가장 좋아하는 것입니다 아이다

운이 좋을 수도 있고 Toshiba의 프로세스에는 IDA가 행복하게 사용할 수있는 추가 디버그 정보가 포함되어 있음을 알 수 있습니다. 그런 다음 사용 가능한 모든 정보를 사용하면 스스로 사물을 이해해야합니다.

행운을 빕니다!

기록을 위해, 나는 단지 밀접하게 관련된 문제를 제기했습니다 Gecko (Firefox et al. Applications 세트)로, 여러 장치에 대한 지원이 다음 주요 버전과 함께 배송 할 수있는 가속도계 지원. :-)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top