// by windviki 2010/08/31
#include "stdafx.h"
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
//直接和驱动通信
HANDLE hApfilter = ::CreateFile(
_T("\\\\.\\Apfiltr"), //设备名
GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hApfilter == INVALID_HANDLE_VALUE)
{
DWORD dwErr = ::GetLastError();
return -1;
}
// 111111
// 123456
// 1:touchpad buttons enable
// 2,6:touchpad enable
// 3:stick buttons enable
// 4,5:stick enable
//char szInput[6] = {0x00, 0x00, 0x28, 0x00, 0x00, 0x00/*, 0x20, 0x00*/}; //全禁
//char szInput[6] = {0x00, 0x00, 0x3f, 0x00, 0x00, 0x00/*, 0x15, 0x00*/}; //全开
char szInput[6] = {0x00, 0x00, 0x28, 0x00, 0x00, 0x00};
char szOutput[2] = {0};
DWORD dwReturned = 0;
if(!DeviceIoControl(hApfilter, 0xd82625b8, szInput, 6, szOutput, 2, &dwReturned, NULL))
{
//
}
::CloseHandle(hApfilter);
return 0;
//--------------------------------------------------------------------------------------------------------------------------------
//依靠Vxdif.dll的导出函数
// export functions
typedef DWORD (__stdcall *IOCTL_DisableTouchpad)(INT dwDevSelect);
typedef DWORD (__stdcall *IOCTL_EnableWheel)(USHORT Param1);
typedef DWORD (__stdcall *IOCTL_GetDeviceID)(DWORD hWnd, INT& dwDeviceID, INT nBuffSize);
typedef DWORD (__stdcall *IOCTL_GetDeviceType)(DWORD hWnd, INT& dwDeviceType, INT nBuffSize);
typedef DWORD (__stdcall *IOCTL_SelectDevice)(INT dwDevSelect);
typedef DWORD (__stdcall *IOCTL_SetButtonEventMask)(INT dwDevSelect);
typedef DWORD (__stdcall *IOCTL_SetButtonFunction)(DWORD hWnd, INT Param2);
typedef DWORD (__stdcall *IOCTL_SetCornerTapOffset)(DWORD hWnd, USHORT Param2, USHORT Param3);
typedef DWORD (__stdcall *IOCTL_SetSpeed)(DWORD hWnd, INT Param2, INT Param3);
typedef DWORD (__stdcall *IOCTL_SetSPHwTapping)(INT Param1);
typedef DWORD (__stdcall *IOCTL_SetSPTapSettings)(INT Param1);
typedef DWORD (__stdcall *IOCTL_SetTapSettings)(DWORD hWnd, BYTE Param2);
typedef DWORD (__stdcall *IOCTL_SetTouchSensitivity)(INT Param1);
typedef DWORD (__stdcall *IOCTL_Tapping)(DWORD hWnd, INT Param2);
HINSTANCE hVxDif = ::LoadLibrary(_T("Vxdif.dll"));
IOCTL_DisableTouchpad pfIOCTL_DisableTouchpad = (IOCTL_DisableTouchpad)GetProcAddress(hVxDif, "IOCTL_DisableTouchpad");
IOCTL_EnableWheel pfIOCTL_EnableWheel = (IOCTL_EnableWheel)GetProcAddress(hVxDif, "IOCTL_EnableWheel");
IOCTL_GetDeviceID pfIOCTL_GetDeviceID = (IOCTL_GetDeviceID)GetProcAddress(hVxDif, "IOCTL_GetDeviceID");
IOCTL_GetDeviceType pfIOCTL_GetDeviceType = (IOCTL_GetDeviceType)GetProcAddress(hVxDif, "IOCTL_GetDeviceType");
IOCTL_SelectDevice pfIOCTL_SelectDevice = (IOCTL_SelectDevice)GetProcAddress(hVxDif, "IOCTL_SelectDevice");
IOCTL_SetButtonEventMask pfIOCTL_SetButtonEventMask = (IOCTL_SetButtonEventMask)GetProcAddress(hVxDif, "IOCTL_SetButtonEventMask");
IOCTL_SetButtonFunction pfIOCTL_SetButtonFunction = (IOCTL_SetButtonFunction)GetProcAddress(hVxDif, "IOCTL_SetButtonFunction");
IOCTL_SetCornerTapOffset pfIOCTL_SetCornerTapOffset = (IOCTL_SetCornerTapOffset)GetProcAddress(hVxDif, "IOCTL_SetCornerTapOffset");
IOCTL_SetSpeed pfIOCTL_SetSpeed = (IOCTL_SetSpeed)GetProcAddress(hVxDif, "IOCTL_SetSpeed");
IOCTL_SetSPHwTapping pfIOCTL_SetSPHwTapping = (IOCTL_SetSPHwTapping)GetProcAddress(hVxDif, "IOCTL_SetSPHwTapping");
IOCTL_SetSPTapSettings pfIOCTL_SetSPTapSettings = (IOCTL_SetSPTapSettings)GetProcAddress(hVxDif, "IOCTL_SetSPTapSettings");
IOCTL_SetTapSettings pfIOCTL_SetTapSettings = (IOCTL_SetTapSettings)GetProcAddress(hVxDif, "IOCTL_SetTapSettings");
IOCTL_SetTouchSensitivity pfIOCTL_SetTouchSensitivity = (IOCTL_SetTouchSensitivity)GetProcAddress(hVxDif, "IOCTL_SetTouchSensitivity");
IOCTL_Tapping pfIOCTL_Tapping = (IOCTL_Tapping)GetProcAddress(hVxDif, "IOCTL_Tapping");
if (pfIOCTL_SelectDevice)
{
pfIOCTL_SelectDevice(0x3f); //全开
//pfIOCTL_SelectDevice(0x28); //全禁止
}
::FreeLibrary(hVxDif);
return 0;
}