用户层是什么?
界面?console?

解决方案 »

  1.   

    DriverEntry是驱动初始化的入口,这里不能接受用户的输入。驱动一般都要指定IRP_MJ_DEVICE_CONTROL函数,可以在这个里面处理,通过DeviceIoControl写入。
      

  2.   

    在DriverEntry 可以定义str为IRP_MJ_DEVICE_CONTROL吗?
      

  3.   

    IRP_MJ_DEVICE_CONTROL是个常数,I/O请求的类型代号,定义str是什么意思?
      

  4.   

       晕。DriverEntry 一般是不能直接接受用户输入的,这是OS调用的接口,一般用户根本就接触不到它,所以也就输入不了什么东东!    驱动是通过功能码与用户层面通信的。该功能码即可以自己定义,也可以用已经有的如IRP_MJ_READ。    当你通过功能码与驱动通信时,参数是通过一个叫做IRP包的结构传进去的。至于该IRP包里面的数据该怎么解释,应该遵从相关功能码的规定。     至于用户层面怎么用这个功能码,通用的就是DeviceIoControl。这个不管是已有功能码或是自己定义的功能码都可以用;对于已经有的功能码来说,一般都有相应的API与其对应。如与IRP_MJ_READ对应的API就是ReadFile。
       建议LZ先搞懂驱动与OS的交互再来写。要不然,你可能会对一些“规定”感到非常茫然。
      

  5.   

    我说的指定IRP_MJ_DEVICE_CONTROL是这个意思:
     DriverObject->MajorFunction[IRP_MJ_CREATE] = Open;
        DriverObject->MajorFunction[IRP_MJ_CLOSE]  = Close;
        DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DeviceControl;
        DriverObject->MajorFunction[IRP_MJ_CLEANUP] = Cleanup;
        DriverObject->DriverUnload = Unload;
    有了DeviceControl函数,就可以处理输入输出了
      

  6.   

    驱动一般都要指定IRP_MJ_DEVICE_CONTROL函数,可以在这个里面处理,通过DeviceIoControl写入