bangping
驱动牛犊
驱动牛犊
  • 注册日期2008-01-04
  • 最后登录2008-03-23
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2603回复:3

为什么调用listen的时候没有TDI_LISTEN的irp

楼主#
更多 发布于:2008-01-23 17:49
希望可以在这个版问关于TDI的问题。

我用的是pcausa的TDI passthru的例子程序,
用这个driver来记录所有的tdi的IRP(io request packet)。
编译之后,用instdrv装入内核。
然后启动一个用户程序,调用socket, bind, listen, accept。

从debugview上可以看到,
先是IRP_MJ_CREATE (Address),
然后注册了几个event handler,
然后IRP_MJ_CREATE (Connection),
然后Associate Address with Connection,
然后注册connect的event handler,
之后如果有连接过来,相应的connect call back函数会被调用。

可是,从头到尾都没有发现TDI_LISTEN的IRP包。
这是为什么呢?
谢谢指教。
Butcher.elife
驱动牛犊
驱动牛犊
  • 注册日期2011-02-13
  • 最后登录2011-04-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2011-03-02 10:40
LISTEN 并不是单纯IRP控制滴

是通过TDI_SET_EVENT 这个Internal Control IRP子功能控制滴

event handler

另外LISTEN是服务端才会调用滴。
xiaoxiaobian
驱动牛犊
驱动牛犊
  • 注册日期2011-01-12
  • 最后登录2016-11-26
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望30点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2011-06-25 12:57
有TDI——LISTEN,是子功能号
iihacker
论坛版主
论坛版主
  • 注册日期2010-01-07
  • 最后登录2017-08-16
  • 粉丝5
  • 关注8
  • 积分377分
  • 威望1941点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2011-06-27 17:20
从头到尾没有看见TDI_LISTEN


TdiBuildListen Macro
TdiBuildListen sets up an internal device control IRP for a TDI_LISTEN request to the underlying transport in which the local-node client has already associated an address and a connection endpoint.

Syntax
CopyVOID TdiBuildListen(
  [in]   PIRP Irp,
  [in]   PDEVICE_OBJECT DevObj,
  [in]   PFILE_OBJECT FileObj,
  [in]   PVOID CompRoutine,
  [in]   PVOID Contxt,
  [in]   ULONG Flags,
  [in]   PTDI_CONNECTION_INFORMATION RequestConnectionInfo,
  [out]  PTDI_CONNECTION_INFORMATION ReturnConnectionInfo
);

NDIS 1群74755180 NDIS 2群182802097 交换机软硬件技术群 187471475 FPGA PCI PCIE 群187471817
游客

返回顶部