Windows驱动开发-派遣函数

一个简单的派遣函数格式

NTSTATUS DispatchFunction(PDEVICE_OBJECT pDeviceObject, PIRP pIrp)
{
    //业务代码区

    //设置返回状态
    pIrp->IoStatus.Status = STATUS_SUCCESS;//getLastError()得到的值
    pIrp->IoStatus.Information = 0;            //返回给3环多少数据,没有填0
    IoCompleteRequest(pIrp, IO_NO_INCREMENT);
    DbgPrint("create device success...%d", pDeviceObject->ActiveThreadCount);
    return STATUS_SUCCESS;
}

函数中,设置了IRP的完成状态为STATUS_SUCCESS,这样发起I/O请求的用户层api将会返回TRUE;

反之,会返回FALSE,此时,可以通过GetLastError(),获取错误代码

原文地址:https://www.cnblogs.com/a-s-m/p/12344378.html