SetVolumeMountPoint return fail with error 87 Why ?

Hello,
I developped my virtualdisk and the function setvolumemountpoint fail with error 87.
The ioctl function ‘IOCTL_MOUNTDEV_QUERY_DEVICE_NAME’ return the name of my driver.
Can you help please ?

Sample code user debugging :

* 1. HANDLE hDevice;
    1.     wchar_t  szDeviceName[512];
      
    1.     wcscpy_s(szDeviceName,L"\\\\?\\Volume{cd4cfca8-484c-8042-550e-916f0206fb8f}");
      
    1.     BYTE byBuffer[1024];
      
    1.     PMOUNTDEV_NAME pMountDevName;
      
    1.      hDevice = CreateFile(szDeviceName, FILE_GENERIC_READ | FILE_GENERIC_WRITE,
      
    1.         FILE_SHARE_READ | FILE_SHARE_WRITE,
      
    1.         NULL, OPEN_EXISTING, 0, NULL);
      
    1.     if (hDevice == INVALID_HANDLE_VALUE)
      
    1.         return 1;
      
    1.     ULONGLONG lw = 0;
      
    1.     DWORD cbBytesReturned = 0;
      
    1.     int err;
      
    1.     DISK_GEOMETRY diskg;
      
    1.         BOOL bSuccess = DeviceIoControl(hDevice,
      
    1.             IOCTL_DISK_UPDATE_DRIVE_SIZE,
      
    1.             NULL, 0,
      
    1.             (LPVOID)&diskg, sizeof(diskg),//sizeof(byBuffer),
      
    1.             &cbBytesReturned,
      
    1.             (LPOVERLAPPED)NULL);
      
    1.         err = GetLastError();
      
    1.          bSuccess = DeviceIoControl(hDevice,
      
    1.             IOCTL_DISK_GET_LENGTH_INFO,
      
    1.             NULL, 0,
      
    1.             (LPVOID)&lw, 8,//sizeof(byBuffer),
      
    1.             &cbBytesReturned,
      
    1.             (LPOVERLAPPED)NULL);
      
    1.          err = GetLastError();
      
    1.          STORAGE_DEVICE_NUMBER storageDeviceNumber;
      
    1.          bSuccess = DeviceIoControl(hDevice,
      
    1.              IOCTL_STORAGE_GET_DEVICE_NUMBER,
      
    1.              NULL, 0,
      
    1.              (LPVOID)&storageDeviceNumber, sizeof(storageDeviceNumber),//sizeof(byBuffer),
      
    1.              &cbBytesReturned,
      
    1.              (LPOVERLAPPED)NULL);
      
    1.          err = GetLastError();
      
    1.          PARTITION_INFORMATION_EX ts = { 0 };
      
    1.              bSuccess = DeviceIoControl(hDevice,
      
    1.                  IOCTL_DISK_GET_PARTITION_INFO_EX,
      
    1.                  NULL, 0,
      
    1.                  (LPVOID)&ts, sizeof(ts),//sizeof(byBuffer),
      
    1.                  &cbBytesReturned,
      
    1.                  (LPOVERLAPPED)NULL);
      
    1.              err = GetLastError();
      
    1.     bSuccess = DeviceIoControl(hDevice,
      
    1.         IOCTL_MOUNTDEV_QUERY_DEVICE_NAME,
      
    1.         NULL, 0,
      
    1.         (LPVOID)byBuffer,100,//sizeof(byBuffer),
      
    1.         &cbBytesReturned,
      
    1.         (LPOVERLAPPED)NULL);
      
    1.     err = GetLastError();
      
    1.     pMountDevName = (PMOUNTDEV_NAME)byBuffer;
      
    1.     printf("\n%.*ls\n", pMountDevName->NameLength / sizeof(WCHAR),
      
    1.         pMountDevName->Name);
      
    1.     bSuccess = CloseHandle(hDevice);
      

code for mounting drive into empty directory which fail with error 87.

    1. wcscpy_s(szUniqueVolumeName, L"\\?\Volume{cd4cfca8-484c-8042-550e-916f0206fb8f}\");
    1.     BOOL b=SetVolumeMountPoint(L"c:\\mnt2\\", szUniqueVolumeName);
      

The name volume disk is correct THEN why SetVolumeMountPoint don’t work !.

Thank for solve this problem !