USB手柄如何用hid震动

Amuro1987218 2009-05-26 01:38:59
检测到output是5个字节
...全文
381 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Amuro1987218 2012-03-14
  • 打赏
  • 举报
回复

enum ApiIdEnum
{
NDSAPIID_FS_OpenFile,
NDSAPIID_COUNT
};

typedef int BOOL;
#define TRUE 1
#define FALSE 0

int g_nApiAddress[NDSAPIID_COUNT];

BOOL HOOK_FS_OpenFile( void *p_file, const char *path )
{
//拆除钩子
ApiHook(g_nApiAddress[NDSAPIID_FS_OpenFile],HOOK_FS_OpenFile,FALSE);
BOOL (*FS_OpenFile)( void *p_file, const char *path ) = g_nApiAddress[NDSAPIID_FS_OpenFile];
//调用原过程
BOOL bRet = FS_OpenFile(p_file,path);
//安装钩子
ApiHook(g_nApiAddress[NDSAPIID_FS_OpenFile],HOOK_FS_OpenFile,TRUE);

return bRet;
}

void _start()
{
g_nApiAddress[NDSAPIID_FS_OpenFile] = 0x2008AF8;
ApiHook(g_nApiAddress[NDSAPIID_FS_OpenFile],HOOK_FS_OpenFile,TRUE);
}


typedef struct HookInfo
{
int code;
int funaddr;
}HookInfo;

HookInfo g_hookInfo[NDSAPIID_COUNT];

BOOL ApiHook(int nHookFromAddress,int nHookToAddress,BOOL bHook)
{
if(nHookFromAddress == 0)
return FALSE;

for(int i=0;i<NDSAPIID_COUNT;++i)
{
//安装钩子
if(bHook && g_hookInfo[i].funaddr == 0)
{
//发现未使用的钩子结构,保存
g_hookInfo[i].code = *(int*)nHookFromAddress;
g_hookInfo[i].funaddr = nHookToAddress;

//指令劫持
// b 0x02XXXXXX

// 奇怪
*(int*)nHookFromAddress = 0xe9fffffe + (nHookToAddress-nHookFromAddress)/4;
return TRUE;
}
//拆除钩子
if(!bHook && g_hookInfo[i].funaddr == nHookToAddress)
{
//还原劫持的指令
*(int*)nHookFromAddress = g_hookInfo[i].code;
//清除钩子结构
g_hookInfo[i].funaddr = 0;
return TRUE;
}
}
return FALSE;
}
jiaru123456 2012-03-06
  • 打赏
  • 举报
回复
楼主说清楚点呗!!!!!!
jian_tian_yang 2009-06-05
  • 打赏
  • 举报
回复
帮楼主顶一下吧
renjwjx 2009-06-02
  • 打赏
  • 举报
回复
基本输出的就是震动的信息了。
这5个字节因该和震动时间
ynkmhp 2009-05-27
  • 打赏
  • 举报
回复
不懂,帮顶~

2,641

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧