Roger1990 Ответов: 1

Ошибка 5 (отказано в доступе) при вызове getpointerframeinfo


Я пытаюсь вызвать функцию GetPointerFrameInfo, чтобы получить счетчик указателей, но эта функция, похоже, не работает с ошибкой 5 (Доступ запрещен).
Есть идеи, почему это происходит и как я могу решить эту проблему?
Я пытаюсь вызвать то же самое внутри процедуры крючка GetMsgProc, как упоминалось в разделе "Что вы пробовали" ниже:

Что я уже пробовал:

LRESULT WINAPI GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    LPMSG lpMsg = (LPMSG)lParam;
    UINT32 pointerId = GET_POINTERID_WPARAM(lpMsg->wParam);
    switch (lpMsg->message)
    {
    case WM_POINTERUPDATE:
        UINT32 pointerCount = 32;
        POINTER_INFO pointerFrameInfo[32];
        TCHAR outputLogTouchTst[100];

        if (GetPointerFrameInfo(pointerId, &pointerCount, pointerFrameInfo) == 0)
        {
            _stprintf(outputLogTouchTst, _T("Hook: The error code for proc is %d"), GetLastError());
            OutputDebugString(outputLogTouchTst);
            return CallNextHookEx(NULL, nCode, wParam, lParam);
        }

        _stprintf(outputLogTouchTst, _T("Hook: The count of pointers is %d"), pointerCount);
        OutputDebugString(outputLogTouchTst);
        return CallNextHookEx(NULL, nCode, wParam, lParam);
    }
    return CallNextHookEx(getmsghook, nCode, wParam, lParam);
}

1 Ответов

Рейтинг:
0

KarstenK

Отказ в доступе часто является причиной, когда вызову требуется повышенное право. Попробуйте запустить код с правами администратора.

Такая же ошибка типична и при указатель находится в другом потоке.