xiao_chongzi
驱动牛犊
驱动牛犊
  • 注册日期2010-05-10
  • 最后登录2010-07-02
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望51点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1739回复:0

DbgPrint打印的问题

楼主#
更多 发布于:2010-07-02 13:48
// 这是一个IRP完成回调函数的原型
NTSTATUS c2pReadComplete(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp,IN PVOID Context)
{
PIO_STACK_LOCATION IrpSp;
ULONG buf_len = 0;
PUCHAR buf = NULL;
size_t i;

IrpSp = IoGetCurrentIrpStackLocation( Irp );

// 如果这个请求是成功的。很显然,如果请求失败了,这么获取进一步的信息是没意义的。
if( NT_SUCCESS( Irp->IoStatus.Status ) )
{
// 获得读请求完成后输出的缓冲区
buf = Irp->AssociatedIrp.SystemBuffer;
// 获得这个缓冲区的长度。一般的说返回值有多长都保存在Information中。
buf_len = Irp->IoStatus.Information;

//… 这里可以做进一步的处理。我这里很简单的打印出所有的扫描码。
//for(i=0;i<buf_len;++i)
//{
// DbgPrint("按键: %2x\r\n", buf);
//}
DbgPrint("按键: %S\n", buf);
}
gC2pKeyCount--;

if( Irp->PendingReturned )
{
IoMarkIrpPending( Irp );
}
return Irp->IoStatus.Status;
}


我想把buf中的内容一次打印出来,可是用DbgPrint("按键: %S\n", buf),或DbgPrint("按键: %s\n", buf)或DbgPrint("按键: %c\n", buf) ..等等都没有任何内容的呢?期待高手!
游客

返回顶部