IoCreateFileSpecify... Always return faild

Hi,Driver experts! I was used IoCreateFileSpecifyDeviceObjectHint function in a Volume Filter,and it always return STATUS_INVALID_DEVICE_OBJECT_PARAMETER,no once is successful.Does anyone know why this happened?I am very distressed for the hassle. my code is:

	status = IoCreateFileSpecifyDeviceObjectHint(
		&hSnapShot,
		DesirdAccess,
		&objAttr,
		&ioBlock,
		NULL,
		FILE_ATTRIBUTE_NORMAL,
		FILE_SHARE_READ | FILE_SHARE_WRITE,
		FILE_OPEN_IF,
		FILE_SYNCHRONOUS_IO_NONALERT | FILE_NO_INTERMEDIATE_BUFFERING,
		NULL,
		0,
		CreateFileTypeNone,
		NULL,
		IO_IGNORE_SHARE_ACCESS_CHECK |
		IO_NO_PARAMETER_CHECKING,
		IoGetDeviceAttachmentBaseRef(pDexExt->pFltDevObj) // pFltDevObj is my Filter Device
	);

and I call IoCreateFileSpecifyDeviceObjectHint in Read/Write thread,it seems that reentry has occurred again and no return has occurred.

IoCreateFileSpecifyDeviceObjectHint function (ntddk.h) - Windows drivers | Microsoft Learn

[in, optional] DeviceObject

A pointer to the device object to which the create request is to be sent. The device object must be a filter or file system device object in the file system driver stack for the volume on which the file or directory resides. This parameter is optional and can be NULL. If this parameter is NULL, the request will be sent to the device object at the top of the driver stack.

Return code Description
STATUS_INVALID_DEVICE_OBJECT_PARAMETER The specified DeviceObject is not attached to the file system driver stack for the volume specified in the file or directory name. This error can also occur if the name contains a reparse point other than a mount point.

Thanks,Scott. I make sure my paramers are right.This is very distressing to me.