GetDriveType 将“Google Drive”检测为 DRIVE_FIXED ...如何排除它们?

问题描述 投票:0回答:1

我有一个小实用程序(在心爱的 Delphi 上)可以监控 HardDisks FreeSpace

我使用 GetDriveType

问题是“Google Drives”被识别为 DRIVE_FIXED 所以我正在尝试管理如何识别这个 dirves,以便将它们排除在外......目前的工作是获取驱动器名称并在它的名称中找到“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:\
(只是真正的物理驱动器)

delphi winapi hard-drive getdrivetype
1个回答
0
投票

答案是标志 FILE_SUPPORTS_REMOTE_STORAGE(值 0x00000100)

一项研究可以看到这里

或这里here

© www.soinside.com 2019 - 2024. All rights reserved.