首页
社区
课程
招聘
[旧帖] 看tdi_fw代码,关于函数指针的问题 0.00雪花
发表于: 2013-12-14 22:56 6051

[旧帖] 看tdi_fw代码,关于函数指针的问题 0.00雪花

2013-12-14 22:56
6051
static TCPSendData_t *g_TCPSendData = NULL;
static TCPSendData_t new_TCPSendData;

...

                        if (status != STATUS_SUCCESS) {
                                void *buf = (irps->Parameters.DeviceIoControl.IoControlCode == IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER) ?
                                        irps->Parameters.DeviceIoControl.Type3InputBuffer : NULL;

                                // send IRP to original driver
                                status = tdi_dispatch_complete(DeviceObject, irp, FILTER_ALLOW, NULL, NULL);

                                if (buf != NULL && status == STATUS_SUCCESS) {

                                        g_TCPSendData = *(TCPSendData_t **)buf;

                                        KdPrint(("[tdi_fw] DeviceDispatch: IOCTL_TDI_QUERY_DIRECT_SEND_HANDLER: TCPSendData = 0x%x\n",
                                                g_TCPSendData));

                                        *(TCPSendData_t **)buf = new_TCPSendData;
                                }

...

NTSTATUS
new_TCPSendData(IN PIRP Irp, IN PIO_STACK_LOCATION IrpSp)
{
    ...
}

为什么不是g_TCPSendData = (TCPSendData_t *)buf;
(TCPSendData_t *)buf = new_TCPSendData;?

new_TCPSendData已经是函数名static TCPSendData_t new_TCPSendData;是函数的声明吗?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 178
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己顶!
2013-12-19 09:13
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
首先函数名和全局变量名字一般,这个不知道行不行。
其次这里赋值*(TCPSendData_t **)buf = new_TCPSendData;好像类型不对,应该会报错才对。
2013-12-19 12:48
0
雪    币: 178
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

代码就是这么写的,哪能报错!
2014-1-21 08:15
0
游客
登录 | 注册 方可回帖
返回
//