given a device name in the form \\.\X: which is an usb hard-drive,i want to dismount it

Code:
	HANDLE hUsbDevice = CreateFile(szDevice,0,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);

	if(!hUsbDevice || hUsbDevice == INVALID_HANDLE_VALUE)
	 return FALSE;

 DWORD dwBytesReturned;

	BOOL bRet = DeviceIoControl(hUsbDevice,FSCTL_DISMOUNT_VOLUME,NULL,0,NULL,0,&dwBytesReturned,NULL);

// this will fail, bRet==FALSE
getlasterror() returns "invalid operation",and if i try
DeviceIoControl() whit IOCTL_STORAGE_MEDIA_REMOVAL it returns "denied access"...

Code:
	HANDLE hUsbDevice = CreateFile(szDevice,0,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,NULL);

	if(!hUsbDevice || hUsbDevice == INVALID_HANDLE_VALUE)
	 return FALSE;

 DWORD dwBytesReturned;
 PREVENT_MEDIA_REMOVAL mediaremoval;
 // set media removal to TRUE or FALSE,the call will fail in both cases with the same error

	BOOL bRet = DeviceIoControl(hUsbDevice,IOCTL,&mediaremoval,sizeof(mediaremoval),NULL,0,&dwBytesReturned,NULL);

// this will fail, bRet==FALSE