У меня есть маленькая утилитка (на любимом Delphi), которая мониторит HardDisks FreeSpace
Я использую GetDriveType
Проблема в том, что "Диски Google" распознаются как DRIVE_FIXED. Итак, я пытаюсь определить, как идентифицировать эти каталоги, чтобы исключить их ... пока обходной путь заключается в том, чтобы получить имя диска и найти «google» в его имени ... но я думаю, что это не самый лучший способ.
procedure TFormSpace.CreaLabels;
var
Type, i, n: Word;
LblDummy: TLabel;
Candidate: string;
begin
Max:=0;
i:=1;
repeat
Candidate:=chr(ord('c')+i-1) + ':\';
Type:=GetDriveType(pchar(Candidate));
if (Tipo=DRIVE_FIXED) then begin
//Do something
end;
i:=i+1;
until (i=MaxItems);
end;
Спасибо!
На примере настройки:
c:\ -> 1TB SSD
d:\ -> 2TB SSD
f:\ -> Maped network drive
g:\ -> google drive, replicated con "d:\Drive"
приведенный выше код вернет:
C:\ D:\ G:\
Но ожидаемый результат:
C:\ D:\
(только настоящие физические диски)
@SimonMourier, на самом деле хорошая идея. У меня до сих пор нет репутации, чтобы ответить самому себе, но: кажется, флаг FILE_SUPPORTS_REMOTE_STORAGE
(значение 0x00000100)
Вот исследование, если кому интересно: ссылка
Вам не нужна никакая репутация для ответа. Исключением из этого правила являются некоторые часто посещаемые вопросы со многими ответами, которые в прошлом привлекали низкокачественные ответы или спам. Они защищены, и вам нужно как минимум 10 очков репутации, чтобы ответить. Но эти вопросы имеют синий баннер сверху, указывающий, что они защищены. Если вы нашли решение, вы можете свободно опубликовать свой ответ здесь.
Ответом был флаг FILE_SUPPORTS_REMOTE_STORAGE (значение 0x00000100)
Исследование можно увидеть здесь
или здесь
Ну, вам нужно найти другой дискриминант с другим API, может что-то вроде GetVolumeInformationW: learn.microsoft.com/en-us/windows/win32/api/fileapi/…