Hi all,
I’m trying to lock and unlock a volume from my driver. I keep getting error
code c0000010: STATUS_INVALID_DEVICE_REQUEST
In my driver I have this code:
PAGED_CODE();
RtlInitUnicodeString(&VolumeName, L"\DosDevices\N <file:>
:“);
//RtlInitUnicodeString(&VolumeName, L”\??\N <file:>:“);
//RtlUnicodeStringPrintf(&VolumeName,
L”\DosDevices\%c<file:>:",
DriveLetter);
//KdPrint((FUNCTION_NAME “Full Volume Path: %s\n”, VolumeName.Buffer));
InitializeObjectAttributes(&oa,
&VolumeName,
OBJ_CASE_INSENSITIVE| OBJ_KERNEL_HANDLE,
NULL, NULL);
status = ZwOpenFile(&fileHandle,
SYNCHRONIZE,
&oa,
&ioStatusBlock,
FILE_SHARE_READ|FILE_SHARE_WRITE,
FILE_SYNCHRONOUS_IO_NONALERT);
if(!NT_SUCCESS(status)) {
KdPrint((FUNCTION_NAME “Could not open volume\n”));
return STATUS_UNSUCCESSFUL;
}
status = ZwFsControlFile(fileHandle, NULL, NULL, NULL,
&ioStatusBlock,
FSCTL_LOCK_VOLUME,
NULL,0, NULL,0);
if(!NT_SUCCESS(status)) {
KdPrint((FUNCTION_NAME “Could not lock volume - status: %x\n”, status));
return STATUS_UNSUCCESSFUL;
}
status = ZwFsControlFile(fileHandle, NULL, NULL, NULL,
&ioStatusBlock,
FSCTL_UNLOCK_VOLUME,
NULL,0, NULL,0);
if(!NT_SUCCESS(status)) {
KdPrint((FUNCTION_NAME “Could not unlock volume - status: %x\n”, status));
return STATUS_UNSUCCESSFUL;
}
Thanks,
Kelvin</file:></file:></file:>