Thursday, June 16, 2016

BFF_DISPATCH_PNP / PBFF_DISPATCH_PNP

Description


Callback function for processing a PnP IRP. It must either complete that IRP or, optionally register an IoCompletion routine, and pass that IRP to the next lower driver before returning to BFF. See also BFF_INITIALIZATION_DATA / PBFF_INITIALIZATION_DATA.
Example#1:
NTSTATUS callback1(WDFOBJECT BffDevice, PIRP Irp)
{
        ...
        IoCompleteRequest(Irp, IO_NO_INCREMENT);
        return status;
}

Example#2:
NTSTATUS callback2(WDFOBJECT BffDevice, PIRP Irp)
{
        ...
        IoSkipCurrentIrpStackLocation(Irp);
        status = IoCallDriver(BffDeviceWdmGetAttachedDevice(BffDevice), Irp);
        ...
        return status;
}

Example#3:
NTSTATUS callback3(WDFOBJECT BffDevice, PIRP Irp)
{
        ...
        IoCopyCurrentIrpStackLocationToNext(Irp);
        IoSetCompletionRoutine(Irp, IoCompletion, BffDevice, ...);
        status = IoCallDriver(BffDeviceWdmGetAttachedDevice(BffDevice), Irp);
        ...
        return status;
}

Declarations

typedef NTSTATUS BFF_DISPATCH_PNP(WDFOBJECT BffDevice, PIRP Irp);
typedef BFF_DISPATCH_PNP *PBFF_DISPATCH_PNP;

Parameters


BffDeviceThe WDF object as a bus filter device object.
IrpThe PnP I/O request packet.

Return value


Zero or any positive value for success, otherwise for failure.

No comments:

Post a Comment