Setting FileObject for a WDFREQUEST

I am writing a filter driver (KMDF) which needs to initiate its own reading of the underlying device for our purpose. I have a EvtWdfDeviceFileCreate/EvtFileClose callback to track the fileobject creation/deletion and plan to use these file object(s) when reading the device. I am using WdfRequestCreate to create a new framework request, allocated a framework memory and use WdfIoTargetFormatRequestForRead. However, how do I set appropriate file object (I know which one to use) for the newly created request before sending it down the stack?

Thanks
JSL

Two choices

  1. open a new WDFIOTARGET via WDF_IO_TARGET_OPEN_PARAMS_INIT_EXISTING_DEVICE and then manually set WDF_IO_TARGET_OPEN_PARAMS::TargetFileObject.
  2. Use the default io target and then after each format call, get the irp, get the next stack location and set stack->FileObject

I would think 1) is the easier choice, but it is up to you