Se hace de la siguiente forma.
// abrimos la disquetera como si de un archivo se tratara.
hDevice = CreateFile("\\\\.\\A:", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, NULL, NULL);
// en este caso la he abierto solo para escribir, si quieres leer pon un flag más y ya esta, mira en msdn. leer
// preparamos la posición a escribir se utiliza un entero de 64 bits, por lo tanto tengo que convertir
__int64 posicion = sector * bytesSector; // bytes por sector suelen ser 512, pero se puede averiguqar con el api.
LARGE_INTEGER liNewPos;
liNewPos.QuadPart = posicion;
if (hDevice != INVALID_HANDLE_VALUE)
{
// nos posicionamos
if(liNewPos.u.HighPart == 0)
dw = SetFilePointer(hDevice, liNewPos.u.LowPart, NULL,FILE_BEGIN);
else
dw = SetFilePointer(hDevice, liNewPos.u.LowPart, &liNewPos.u.HighPart,FILE_BEGIN);
if (dw != INVALID_SET_FILE_POINTER && GetLastError() == NO_ERROR)
{
b = WriteFile(hDevice, sbuffer0, bytesSector, &dw, NULL);
else
b = WriteFile(hDevice, sbuffer + (posRand*bytesSector), bytesSector, &dw, NULL);
if(b == FALSE || dw != bytesSector)
{
printf("Error escribiendo en el sector %d", sector);
delete sbuffer;
delete sbuffer0;
CloseHandle(hDevice);
return 0;
}
}
else
{
printf("Error posicionandome en el sector %d", sector);
delete sbuffer;
delete sbuffer0;
CloseHandle(hDevice);
return 0;
}
CloseHandle(hDevice);
}
// ya lo tienes