¿Cómo escribir un archivo en un disco físico (Windows 7) sin obtener ERROR_ACCESS_DENIED?

Estoy tratando de escribir un patrón de prueba en cada sector de una unidad USB formateada. Hay una unidad lógica (por ejemplo, h :). Este volumen tiene formato FAT y contiene datos para sobrescribir. Además, quiero sobrescribir todo el disco físico. El programa se ejecuta con derechos de usuario elevados.

Primero hice lo siguiente:

// from the drive letter "h:" I get the physical disk number using
// IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS => "\\.\PhysicalDrive2"

hDevice = ::CreateFile( "\\.\PhysicalDrive2", GENERIC_READ|GENERIC_WRITE, 
  FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL ); 

// get the number of available sectors with IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
// => ulNumberOfSectors

// now I try to write some sectors, e.g. 2 (I want to use a higher value):
WriteFile( hDevice, abBuffer, 2*512, &byteswritten, NULL );

La llamada aWriteFile falla conERROR_ACCESS_DENIED.

Si escribo un sector, funciona.

Cuando sobrescribo el primer sector y enchufo el dispositivo de nuevo, Windows quiere formatearlo. En esta situación, mi código con 2048 sectores a la vez funciona sinERROR_ACCESS_DENIED.

También desmonté el volumen como se describe enCodeProject: WriteFile en unidades físicas con Windows 7 pero esto no cambió nada. Obviamente, el volumen está desmontado porque ya no es visible en el Explorador de Windows.

Quiero escribir más de un sector debido a razones de rendimiento. También me temo que podrían ocurrir otros problemas en el campo porque no entiendo completamente este problema.

¿Alguna sugerencia