QueryDosDeviceW 函式 (fileapi.h)

擷取 MS-DOS 裝置名稱的相關信息。 函式可以取得特定 MS-DOS 裝置名稱的目前對應。 函式也可以取得所有現有 MS-DOS 裝置名稱的清單。

MS-DOS 裝置名稱會儲存為物件命名空間中的連接點。 將 MS-DOS 路徑轉換成對應路徑的程式代碼會使用這些連接點來對應 MS-DOS 裝置和驅動器號。 QueryDosDevice 函式可讓應用程式查詢用來實作 MS-DOS 裝置命名空間的連接點名稱,以及每個特定連接點的值。

語法

DWORD QueryDosDeviceW(
  [in, optional] LPCWSTR lpDeviceName,
  [out]          LPWSTR  lpTargetPath,
  [in]           DWORD   ucchMax
);

參數

[in, optional] lpDeviceName

指定查詢目標的 MS-DOS 裝置名稱字串。 裝置名稱不能有尾端反斜杠;例如,使用 “C:”,而不是 “C:\”。

此參數可以是 Null。 在此情況下, QueryDosDevice 函式會將所有現有的 MS-DOS 裝置名稱清單儲存到 lpTargetPath 所指向的緩衝區中。

[out] lpTargetPath

將接收查詢結果之緩衝區的指標。 函式會以一或多個以 Null 結尾的字串填入此緩衝區。 最後以 Null 結尾的字串後面接著額外的 NULL

如果 lpDeviceName 不是 NULL,函式會擷取 lpDeviceName 所指定之特定 MS-DOS 裝置的相關信息。 儲存在緩衝區中的第一個Null 終止字串是裝置目前的對應。 其他以 Null 結尾的字串代表裝置先前未刪除的對應。

如果 lpDeviceNameNULL,函式會擷取所有現有 MS-DOS 裝置名稱的清單。 儲存在緩衝區中的每個 Null 終止字串都是現有 MS-DOS 裝置的名稱,例如 \Device\HarddiskVolume1 或 \Device\Floppy0。

[in] ucchMax

可以儲存到 lpTargetPath 所指向之緩衝區的最大 TCHA 數目

傳回值

如果函式成功,則傳回值是儲存在 lpTargetPath 所指向之緩衝區中的 TCHAR 數目。

如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

如果緩衝區太小,則函式會失敗,且最後 一個錯誤碼ERROR_INSUFFICIENT_BUFFER。

備註

DefineDosDevice 函式可讓應用程式建立和修改用來實作 MS-DOS 裝置命名空間的連接點。

Windows Server 2003 和 Windows XP: QueryDosDevice 會先搜尋本機 MS-DOS 裝置命名空間中的指定裝置名稱。 如果找不到裝置名稱,函式會接著搜尋全域 MS-DOS 裝置命名空間。

查詢所有現有的 MS-DOS 裝置名稱時,傳回的裝置名稱清單取決於它是否在 「LocalSystem」 內容中執行。 如果是,則只會傳回全域 MS-DOS 裝置命名空間中包含的裝置名稱。 如果沒有,將會傳回全域和本機 MS-DOS 裝置命名空間中的裝置名稱串連。 如果這兩個命名空間中有裝置名稱, QueryDosDevice 將會傳回本機 MS-DOS 裝置命名空間中的專案。

如需全域和本機 MS-DOS 裝置命名空間和 MS-DOS 裝置名稱輔助功能變更的詳細資訊,請參閱 定義 MS DOS 裝置名稱

在 Windows 8 和 Windows Server 2012 中,下列技術支援此函式。

技術 支援
伺服器消息塊 (SMB) 3.0 通訊協定 No
SMB 3.0 透明故障轉移 (TFO) No
具有向外延展檔案共用的SMB 3.0 (SO) No
叢集共用磁碟區文件系統 (CsvFS) Yes
彈性檔案系統 (ReFS) Yes
 

SMB 不支援磁碟區管理功能。

範例

如需範例,請參閱 從檔句柄取得檔名顯示磁碟區路徑

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 fileapi.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

DefineDosDevice

磁碟區管理功能