Al fin. Funcionó.
La función
MicroSDPressent de eficsa me da
True cuando la tarjeta está disponible sin sacar el mesajito del sistema.
SetErrorMode no estaba sirviendo de mucho, lo probe con todas las flags, supongo que por que no se trata de una excepcion propiamente dicha, es más bien un "Dialogo del sistema" indicando que la unidad no tiene disco.
En cualquier caso, ya está solucionado
Solo modifiqué la función para que me haga de comprobación de una unidad concreta, y listo, problema resuelto
Código Delphi
[-]
function MicroSDPresent(i : char): Boolean;
var
FName: string;
Error: LongWord;
Hnd : THandle;
begin
Error := SetErrorMode(SEM_FAILCRITICALERRORS);
Result:= False;
if GetDriveType(PChar(i+':\')) = DRIVE_REMOVABLE then
begin
FName:= Format('\\.\%s:\%s',[i,'@@@prueba@@@.txt']);
Hnd:= CreateFile(PChar(FName),
GENERIC_READ, 0, nil, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL, 0);
if Hnd <> INVALID_HANDLE_VALUE then
begin
Result := True;
CloseHandle(Hnd);
DeleteFile(PChar(FName));
end;
End;
SetErrorMode(Error);
end;
Muchas gracias a todos los interesados, casi me sabe mal por cuanto me habeis ayudado.