William
William

Reputation: 976

How to get write access to device?

When I write to a disk device or a drive, sometimes I get an access denied error:

HANDLE hd=CreateFile("\\\\.\\PhysicalDrive1",GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,NULL);
//HANDLE hd=CreateFile("\\\\.\\C:",GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,NULL);
WriteFile(hd,...);

The error persists even after I dismount the volume:

HANDLE hd=CreateFile("\\\\.\\PhysicalDrive1",GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,NULL);
//HANDLE hd=CreateFile("\\\\.\\C:",GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,NULL);
DeviceIoControl(hd,FSCTL_DISMOUNT_VOLUME,NULL,NULL,NULL,NULL,NULL,NULL);
WriteFile(hd,...);

I encountered this problem in Windows Disk Management when I tried to format a volume or delete a volume. Disk Management will show a dialog saying some process is accessing that volume and if I want to proceed. If I choose yes, the formatting or deletion can be performed without problem. I want to know how I can achieve the same in code, i.e., what API I should use to gain the write access.

Upvotes: 0

Views: 64

Answers (0)

Related Questions