HI All,
I am facing a issue in using FltAttachVolume.
I have to Stop write operation in USB Driver.
On InstanceSetup i m able to identify USB volume using FltDeviceIoControlFile &IOCTL_STORAGE_QUERY_PROPERTY.
Afterwards
I tried to attach the minifilter driver to USB Driver using below code base:
if (pStorageDescriptor->BusType == BusTypeUsb)
{
// there is a check for volume name
PFLT_INSTANCE volume = NULL;
status = FltAttachVolume(MiniFilterData.Filter, FltObjects->Volume, NULL, &volume);
if (!NT_SUCCESS(status)){
DEBUGTRACE("FltAttachVolume failed with status = 0x%x\n", status);
}
//release code
}
But i am getting FltAttachVolume failed with status = 0xc01c0012 ( STATUS_FLT_INSTANCE_NAME_COLLISION)
i am not able to figure out, what is the problem.
I tried check using cmd :
FLTMC filters
but i see num instance count for my minifilter driver is 0.
Any input will be appreciable.
Try changing the name in the registry. Filter instance names are device wide, not device & filter wide.
1 Like
Are you trying to call FltAttachVolume from inside InstanceSetup? That wouldn't make sense...
1 Like
Just return either STATUS_SUCCESS to attach, or STATUS_FLT_DO_NOT_ATTACH to not attach. You do not need to call FltAttachVolume in your instanceSetup callback.
1 Like
Thanks for response Scott,
yes i m trying to call FltAttachVolume inside InstanceSetup.
Basically, I m trying to block write operation in USB Drive/volume.
I was trying to check for USB volume in InstanceSetup and then FltAttachVolume driver to USB volume.
Can u share a better approach.
I m a new folks.
regards
perform your check for usb and if successful return STATUS_SUCCESS otherwise return STATUS_FLT_DO_NOT_ATTACH . The filter manager will attach your instance based on the return value.
1 Like
Thanks Rod, Scott and Mark, for your valuable suggestion. It works.
regards