一个简单的派遣函数格式

NTSTATUS DispatchFunction(PDEVICE_OBJECT pDeviceObject, PIRP pIrp)
{
//业务代码区 //设置返回状态
pIrp->IoStatus.Status = STATUS_SUCCESS;//getLastError()得到的值
pIrp->IoStatus.Information = ; //返回给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(),获取错误代码

05-19 21:31