Problem mount disk when i disk usb storage is connected

Hello,

I still have a problem with IRP IRP_MN_MOUNT_VOLUME.
It is no longer called in my driver as soon WHEN I connect an external USB drive.
Windows with big concerns !!
How do I works ???
Where IOCTL function should I look ???
Thanks Microsoft, I spent 3 months to developer my driver !!
Thank

I suggest you to stop flooding this forum with the same problem.

It is not possible to isolate your problem from the description. Put code on GitHub and provide a reference. Maybe somebody will bother to look at it.

I deny post the full source code into git-hub.
It’s private source , i have already posted in party in :

https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/1e278f52-9ecd-411e-b197-6ff70ece06d6/request-kernel-for-irp-irpmnmountvolume?forum=wdk

For information :
If a external usb storage disk is connected , there is a different behavior.

If a external usb storage disk connected :
The ioctl IOCTL_DISK_IS_WRITABLE,IOCTL_MEDIA_REMOVAL,IOCTL_STORAGE_QUERY_PROPERTY aren’t called by kernel windows (WHEN A STORAGE DISK IS CONNECTED)

I posted log and i must simplify “by …” for avoid Forum Pollution !

When any external usb storagedisk is not connected , here log :
The irp IRP_MN_MOUNT_VOLUME is called and it WORK GOOD !!!
Number virtual disk already mounted : 0
58:31 IOCTL_STORAGE_GET_HOTPLUG_INFO
58:31 End InternalDeviceiocontrol
58:31 Ioctl unkown :(00074800) (477184)
58:31 End InternalDeviceiocontrol
58:31 Ioctl unkown :(00074800) (477184)
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_IS_WRITABLE
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_DRIVE_GEOMETRY
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_QUERY_PROPERTY
58:31 PropertyStandardQuery Unknown
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_QUERY_PROPERTY
58:31 PropertyStandardQuery Unknown
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_QUERY_PROPERTY
58:31 PropertyStandardQuery Unknown
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_LENGTH_INFO
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_MEDIA_REMOVAL
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_GET_HOTPLUG_INFO
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_MEDIA_REMOVAL
58:31 End InternalDeviceiocontrol
58:31 IOCTL_VOLUME_GET_GPT_ATTRIBUTES
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_GET_DEVICE_NUMBER
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_QUERY_PROPERTY
58:31 PropertyStandardQuery StorageDeviceProperty
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_QUERY_PROPERTY
58:31 PropertyStandardQuery StorageAdapterProperty
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_QUERY_PROPERTY
58:31 PropertyStandardQuery Unknown
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_QUERY_PROPERTY
58:31 PropertyStandardQuery Unknown
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_QUERY_PROPERTY
58:31 PropertyStandardQuery Unknown
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_QUERY_PROPERTY
58:31 PropertyStandardQuery Unknown
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_QUERY_PROPERTY
58:31 PropertyStandardQuery Unknown
58:31 End InternalDeviceiocontrol
58:31 0x4d008|0x2d1190
58:31 End InternalDeviceiocontrol
58:31 0x4d008|0x2d1190
58:31 End InternalDeviceiocontrol
58:31 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME
58:31 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:‘\Device\Volume{cd4c8bfd-d4e2-2401-550e-916f0206fb8f}’
58:31 createfile
58:31 cleanupfile
58:31 End InternalDeviceiocontrol


58:31 Overflow
58:31 closefile
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_LENGTH_INFO
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_DRIVE_GEOMETRY
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_LENGTH_INFO
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_DRIVE_GEOMETRY
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_LENGTH_INFO
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_DRIVE_GEOMETRY
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_LENGTH_INFO
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_DRIVE_GEOMETRY
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_LENGTH_INFO
58:31 End InternalDeviceiocontrol
58:31 IOCTL_DISK_GET_DRIVE_GEOMETRY
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_GET_HOTPLUG_INFO
58:31 End InternalDeviceiocontrol
58:31 Ioctl unkown :(00074800) (477184)
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_GET_HOTPLUG_INFO
58:31 End InternalDeviceiocontrol
58:31 Ioctl unkown :(00074800) (477184)
58:31 End InternalDeviceiocontrol
58:31 IOCTL_VOLUME_GET_GPT_ATTRIBUTES
58:31 End InternalDeviceiocontrol
58:31 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME
58:31 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:‘\Device\Volume{cd4c8bfd-d4e2-2401-550e-916f0206fb8f}’
58:31 createfile
58:31 cleanupfile
58:31 End InternalDeviceiocontrol


58:31 closefile
58:31 createfile
58:31 createfile
58:31 ProcVolumeInfo
58:31 cleanupfile
58:31 cleanupfile
58:31 createfile
58:31 ProcVolumeInfo
58:31 cleanupfile
58:31 closefile
58:31 End InternalDeviceiocontrol
58:31 IOCTL_VOLUME_GET_GPT_ATTRIBUTES
58:31 End InternalDeviceiocontrol
58:31 IOCTL_STORAGE_GET_HOTPLUG_INFO
58:31 createfile
58:31 createfile
58:31 ProcVolumeInfo
58:31 cleanupfile
58:31 cleanupfile
58:31 closefile
58:31 closefile
Virtual filedisk mounted successly in letter c:\cpourtesterlec1 in ID Device ‘0’
Volume:\DosDevices\Global\Volume{cd4c8bfd-d4e2-2401-550e-916f0206fb8f}
58:31 closefile
58:31 closefile
58:32 createfile
58:32 createfile
58:32 cleanupfile
58:32 closefile
58:32 createfile
58:32 procinfo
58:32 procinfo
58:32 procinfo
58:32 procinfo
58:32 End InternalDeviceiocontrol
58:32 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME
58:32 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:‘\Device\Volume{cd4c8bfd-d4e2-2401-550e-916f0206fb8f}’
58:32 cleanupfile
58:32 closefile
58:32 createfile
58:32 cleanupfile




58:32 createfile
58:32 cleanupfile
58:32 End InternalDeviceiocontrol
58:32 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME
58:32 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:‘\Device\Volume{cd4c8bfd-d4e2-2401-550e-916f0206fb8f}’
58:32 Overflow
58:32 End InternalDeviceiocontrol
58:32 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME
58:32 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:‘\Device\Volume{cd4c8bfd-d4e2-2401-550e-916f0206fb8f}’
58:32 Overflow
58:32 closefile
58:32 createfile
58:32 cleanupfile
58:32 closefile

When a usb storage disk is connected , here log :(this IRP_MN_MOUNT_VOLUME is not called)
The log is behavior ! Different behavior
Number virtual disk already mounted : 0
6:42 IOCTL_STORAGE_GET_HOTPLUG_INFO
6:42 End InternalDeviceiocontrol
6:42 Ioctl unkown :(00074800) (477184)
6:42 End InternalDeviceiocontrol
6:42 Ioctl unkown :(00074800) (477184)
6:42 End InternalDeviceiocontrol
6:42 IOCTL_STORAGE_GET_HOTPLUG_INFO
6:42 End InternalDeviceiocontrol
6:42 Ioctl unkown :(00074800) (477184)
6:42 createfile
6:42 End InternalDeviceiocontrol
6:42 IOCTL_DISK_GET_DRIVE_GEOMETRY
6:42 cleanupfile
6:42 End InternalDeviceiocontrol
6:42 IOCTL_DISK_GET_LENGTH_INFO
6:42 End InternalDeviceiocontrol
6:42 IOCTL_VOLUME_GET_GPT_ATTRIBUTES
6:42 End InternalDeviceiocontrol
6:42 IOCTL_STORAGE_GET_HOTPLUG_INFO
6:42 closefile
Virtual filedisk mounted successly in letter c:\cpourtesterlec1 in ID Device ‘0’
Volume:\DosDevices\Global\Volume{cd4c8bfd-6242-c39c-550e-916f0206fb8f}
6:43 createfile
6:43 cleanupfile
6:43 closefile
6:43 createfile
6:43 End InternalDeviceiocontrol
6:43 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME
6:43 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:‘\Device\Volume{cd4c8bfd-6242-c39c-550e-916f0206fb8f}’
6:43 cleanupfile
6:43 closefile
6:43 createfile
6:43 cleanupfile
6:43 End InternalDeviceiocontrol
6:43 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME
6:43 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:‘\Device\Volume{cd4c8bfd-6242-c39c-550e-916f0206fb8f}’
6:43 Overflow
6:43 End InternalDeviceiocontrol
6:43 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME
6:43 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:‘\Device\Volume{cd4c8bfd-6242-c39c-550e-916f0206fb8f}’
6:43 Overflow
6:43 closefile
6:43 createfile
6:43 cleanupfile
6:43 End InternalDeviceiocontrol
6:43 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME
6:43 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:‘\Device\Volume{cd4c8bfd-6242-c39c-550e-916f0206fb8f}’
6:43 Overflow
6:43 End InternalDeviceiocontrol
6:43 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME
6:43 IOCTL_MOUNTDEV_QUERY_DEVICE_NAME:‘\Device\Volume{cd4c8bfd-6242-c39c-550e-916f0206fb8f}’
6:43 Overflow
6:43 closefile
6:43 createfile
6:43 cleanupfile
6:43 closefile

Have you advice for solve this problem ?

I tested the ioctl function when don’t work :
HANDLE fkdd3=CreateFile(“\\.\Volume{cd4c8bfd-9061-e06a-550e-916f0206fb8f}”,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
int err=GetLastError();
if (fkdd3!=INVALID_HANDLE_VALUE)
{
BOOL b;
DWORD dt;
STORAGE_HOTPLUG_INFO _hotplugInfo={0};
b=DeviceIoControl(fkdd3,IOCTL_STORAGE_GET_HOTPLUG_INFO,NULL,0,&_hotplugInfo,sizeof(_hotplugInfo),&dt,NULL);

VOLUME_GET_GPT_ATTRIBUTES_INFORMATION _tvgpt={0};
b=DeviceIoControl(fkdd3,IOCTL_VOLUME_GET_GPT_ATTRIBUTES,NULL,0,&_tvgpt,sizeof(_tvgpt),&dt,NULL);

DISK_GEOMETRY _DISK_GEOMETRY={0};
b=DeviceIoControl(fkdd3,IOCTL_DISK_GET_DRIVE_GEOMETRY,NULL,0,&_DISK_GEOMETRY,sizeof(_DISK_GEOMETRY),&dt,NULL);

MOUNTDEV_NAME name;
//printf(“sizeof %d”,sizeof (MOUNTDEV_NAME));
b=DeviceIoControl(fkdd3,IOCTL_MOUNTDEV_QUERY_DEVICE_NAME,NULL,0,&name,sizeof (MOUNTDEV_NAME),&dt,NULL);
name.Name[name.NameLength>>1]=0;
CloseHandle(fkdd3);
}

It’s good for function IOCTL tested , and i don’t understand why the IRP_MN_MOUNT_VOLUME is not called when i usb stoage disk usb connected.

KeyStoke error:
It’s good for function IOCTL tested , and i don’t understand why the IRP_MN_MOUNT_VOLUME is not called when i usb stoage disk usb connected.

It’s good for function IOCTL tested , and i don’t understand why the IRP_MN_MOUNT_VOLUME is not called when a usb storage disk is connected.

Sorry ,
but my function ioctl function good work and good resultat , i have compared !
So windows have a serious problem ! (bug)
There are no foolproof and perfect programs!