Lenguaje de programación Borland Delphi
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;
Publicado el: 2003-10-05