aben1223
驱动小牛
驱动小牛
  • 注册日期2004-11-29
  • 最后登录2007-06-01
  • 粉丝1
  • 关注0
  • 积分1000分
  • 威望201点
  • 贡献值0点
  • 好评度192点
  • 原创分2分
  • 专家分0分
阅读:1544回复:3

借问一下 在驱动中有什么好方法写文件

楼主#
更多 发布于:2007-04-18 12:16
  我想要将一些信息写入txt文件当中,
譬如一些kdprint的信息写入文件保存。有什么好方法吗?

我找到的方法
1.zwcreatefile
2.交给上一层应用程序,让上一层来作。我看tdi_fw就是这么干的。

tdi_fw里面的log_request就是将这些信息写入一个q_queue当中。
让应用程序来取的。但是q_queue里面的一个
HANDLE        event_handle;
PKEVENT        event;
确只有setevent,没看到有waitfor的动作。
应用程序里面也没有。好奇怪。这个event不是应用程序传进驱动的。
也没看到驱动传给应用程序
周维彬
cyliu
论坛版主
论坛版主
  • 注册日期2003-06-13
  • 最后登录2014-04-11
  • 粉丝5
  • 关注0
  • 积分1238分
  • 威望2531点
  • 贡献值0点
  • 好评度577点
  • 原创分14分
  • 专家分10分
沙发#
发布于:2007-04-18 13:06
驱动里面为什么要waitfor,做什么作用?

zwcreatefile很好使阿。只要能够达到目的就可以了
走走看看开源好 Solaris vs Linux
aben1223
驱动小牛
驱动小牛
  • 注册日期2004-11-29
  • 最后登录2007-06-01
  • 粉丝1
  • 关注0
  • 积分1000分
  • 威望201点
  • 贡献值0点
  • 好评度192点
  • 原创分2分
  • 专家分0分
板凳#
发布于:2007-04-18 13:13
大哥 谢谢了
周维彬
aben1223
驱动小牛
驱动小牛
  • 注册日期2004-11-29
  • 最后登录2007-06-01
  • 粉丝1
  • 关注0
  • 积分1000分
  • 威望201点
  • 贡献值0点
  • 好评度192点
  • 原创分2分
  • 专家分0分
地板#
发布于:2007-04-18 13:22
知道你一定是个很了解tdi_fw的大人物
要不顺便再帮我回答个问题
tdi_fw里面的驱动中。有一个函数是tdi_client_irp_complete。
这是在tdi_event_receive中定下的完成函数。下面是这个函数的一部分代码
NTSTATUS
tdi_client_irp_complete(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID Context)
{
    struct tdi_client_irp_ctx *ctx = (struct tdi_client_irp_ctx *)Context;
    NTSTATUS status;

    if (Irp->IoStatus.Status == STATUS_SUCCESS) {

        struct ot_entry *ote_conn;
        KIRQL irql;

        ote_conn = ot_find_fileobj(ctx->connobj, &irql);
        if (ote_conn != NULL) {
            ULONG bytes = Irp->IoStatus.Information;

            ote_conn->bytes_in += bytes;

            // traffic stats
            KeAcquireSpinLockAtDpcLevel(&g_traffic_guard);
            
            g_traffic[TRAFFIC_TOTAL_IN] += bytes;
//问题在这里,我将这个bytes打印出来。绝大部分这个数值都超过1514字节。但是看程序这个字节确实是接收的字节数,这是怎么回事???
            
            if (ote_conn->log_disconnect)
                g_traffic[TRAFFIC_COUNTED_IN] += bytes;
            
            KeReleaseSpinLockFromDpcLevel(&g_traffic_guard);

            KeReleaseSpinLock(&g_ot_hash_guard, irql);
        }
    }
周维彬
游客

返回顶部