函数指针问题!

龙哥依旧 2013-12-14 11:05:14
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;是函数的声明吗?
...全文
224 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ri_aje 2013-12-16
  • 打赏
  • 举报
回复
引用 6 楼 ddlddy 的回复:
引用 5 楼 ri_aje 的回复:
buf 怎么定义的?
void *buf
这个定义没啥帮助啊。只能看函数调用的时候具体实参的类型了。
  • 打赏
  • 举报
回复
static TCPSendData_t new_TCPSendData; 这句看着不像函数声明啊。
MBSHENG 2013-12-15
  • 打赏
  • 举报
回复
static TCPSendData_t new_TCPSendData; 不是函数声明吧,函数声明起码要个小括号吧。。。
ri_aje 2013-12-15
  • 打赏
  • 举报
回复
buf 怎么定义的?
龙哥依旧 2013-12-15
  • 打赏
  • 举报
回复
这是tdi_fw的代码,当然可以编译过去了,都能运行!
unituniverse2 2013-12-15
  • 打赏
  • 举报
回复
过滤器驱动相关的内容。。自己看看DDK文档吧
碼上道 2013-12-15
  • 打赏
  • 举报
回复
不是函数声明,使用*( TCPSendData_t **)这种写法与你说的写法其实一样
a_mu_lol 2013-12-15
  • 打赏
  • 举报
回复
tcpsenddata 是怎么定义的?
龙哥依旧 2013-12-15
  • 打赏
  • 举报
回复
引用 5 楼 ri_aje 的回复:
buf 怎么定义的?
void *buf
  • 打赏
  • 举报
回复
没见过这种写法 最好精简出一个能编译的代码,看看是咋回事

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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