首页
社区
课程
招聘
[旧帖] 驱动通讯问题,高手帮忙看一下!!!无法获取句柄 0.00雪花
发表于: 2011-6-27 13:42 4266

[旧帖] 驱动通讯问题,高手帮忙看一下!!!无法获取句柄 0.00雪花

2011-6-27 13:42
4266
EXE代码
HANDLE ReadFiles()
{

        HANDLE hDevice = CreateFile("\\\\.\\HomeDrv"//这里不知道对不对,GENERIC_ALL,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
        if (hDevice == INVALID_HANDLE_VALUE)
        {
                MessageBox(0,"获取句柄失败","错误提示",IDOK);
        }
        else
        {
                return hDevice;
        }

}
SYS代码

RtlInitUnicodeString(&sysLinkName,L"\\??\\HomeDrv"); //取得设备符号链接

pDriverObject->MajorFunction[ IRP_MJ_DEVICE_CONTROL]=ddk_DispatchRoutine_CONTROL; //注册派遣函数

NTSTATUS ddk_DispatchRoutine_CONTROL(IN PDEVICE_OBJECT pDevobj,IN PIRP pIrp        )
{
        ULONG info;
        PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(pIrp);
        NTSTATUS status = STATUS_SUCCESS;
        ULONG cbin = stack->Parameters.DeviceIoControl.InputBufferLength;
        ULONG cout = stack->Parameters.DeviceIoControl.OutputBufferLength;
        ULONG code = stack->Parameters.DeviceIoControl.IoControlCode;
        switch(code)
        {
                case add_code :
                        {
                                int a,b,c;
                                int* InputBuffer = (int*)pIrp->AssociatedIrp.SystemBuffer;
                                __asm
                                {
                                        mov eax,InputBuffer
                                                mov ebx,[eax]
                                        mov a,ebx
                                                mov ebx,[eax+4]
                                        mov b,ebx
                                }
                                c = a + b;
                                KdPrint(("A=%d,B=%d",a,b));

                                __asm
                                {
                                        mov ebx,c
                                                mov eax,InputBuffer
                                                mov [eax],ebx
                                }
                                KdPrint(("成功回传"));

                                break;
                        }
                case sub_code :
                        {
                                KdPrint(("sub_code"));
                                break;
                        }
                       

        }

   pIrp->IoStatus.Information=info;//设置操作的字节数为0,这里无实际意义
   pIrp->IoStatus.Status=STATUS_SUCCESS;//返回成功
   IoCompleteRequest(pIrp,IO_NO_INCREMENT);//指示完成此IRP
   KdPrint(("离开派遣函数\n"));//调试信息
   return STATUS_SUCCESS; //返回成功
}

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 59
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
创建文件的字符串错了吧
2011-6-27 15:57
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
偶关注下,你是不是调用设备的时候就用错代码了。。
2011-6-27 16:00
0
雪    币: 143
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
二楼大哥请问那里错了 应该怎样写??
2011-6-27 17:41
0
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=;]...[/QUOTE]
http://blog.csdn.net/rrrfff/archive/2011/01/20/6154048.aspx
2011-6-27 18:22
0
雪    币: 143
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
有没有高手给看看看呀
2011-6-27 22:39
0
雪    币: 143
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
有没有高手给看看看呀
2011-6-28 12:36
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
你的驱动的通讯代码无误,但exe的有点问题。你应该用绑定句柄函数绑定createfile创建的句柄,然后再用readfile建立连接
2011-6-28 13:04
0
雪    币: 103
活跃值: (56)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
你符号链接的创建函数哪去了??????IoCreateSymbolicLink
2011-6-28 15:07
0
雪    币: 143
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
谢谢楼上2位我在检查一下
2011-6-28 19:18
0
游客
登录 | 注册 方可回帖
返回
//