|
Obteniendo la letra de la unidad de CD-ROM
Copyright © 2000 Ernesto
De Spirito
GetLogicalDriveStrings y GetDriveType
Para obtener la letra de la unidad correspondiente a la primera unidad
de CD-ROM en un sistema haremos uso de dos funciones de la API de
Windows: GetLogicalDriveStrings y GetDriveType.
Con la primera recuperaremos la lista de de las unidades lógicas en un
búfer. La lista es una secuencia de cadenas terminadas en nulo de cuatro
caracteres de longitud (contando el terminador nulo), y termina en un
caracter nulo, por ejemplo:
'a:\'#0'b:\'#0'c:\'#0'd:\'#0'f:\'#0#0
Con GetDriveType podemos determinar si una unidad determinada
es una unidad de CD-ROM comprobando si el valor devuelto es igual a la
constante DRIVE_CDROM.
La siguiente función devuelve la primera unidad lógica que corresponde
a una unidad de CDROM. La función devuelve la cadena vacía ('')
si no se encontró ninguna unidad de CDROM.
uses Windows;
function GetFirstCdRomDrive: string;
var
r: LongWord;
Unidades: array[0..128] of char;
pUnidad: pchar;
begin
Result := '';
r := GetLogicalDriveStrings(sizeof(Unidades), Unidades);
if r = 0 then exit;
if r > sizeof(Unidades) then
raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
pUnidad := Unidades; // Apunta a la primera unidad
while pUnidad^ <> #0 do begin
if GetDriveType(pUnidad) = DRIVE_CDROM then begin
Result := pUnidad;
exit;
end;
inc(pUnidad, 4); // Apunta a la siguiente unidad
end;
end;
Llamada de ejemplo
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GetFirstCdRomDrive);
end;
|