DefineDosDeviceW 函式 (fileapi.h)
定義、重新定義或刪除 MS-DOS 裝置名稱。
語法
BOOL DefineDosDeviceW(
[in] DWORD dwFlags,
[in] LPCWSTR lpDeviceName,
[in, optional] LPCWSTR lpTargetPath
);
參數
[in] dwFlags
DefineDosDevice函式的可控制層面。 此參數可以是下列一或多個值。
值 | 意義 |
---|---|
|
如果指定這個值以及 DDD_REMOVE_DEFINITION,函式會使用完全相符專案來判斷要移除的對應。 使用此值可確保您不會刪除未定義的專案。 |
|
請勿廣播 WM_SETTINGCHANGE 訊息。 根據預設,此訊息會廣播,以通知殼層和應用程式變更。 |
|
依原樣使用 lpTargetPath 字串。 否則,它會從 MS-DOS 路徑轉換成路徑。 |
|
移除指定裝置的指定定義。 若要判斷要移除的定義,此函式會逐步引導裝置的對應清單,以針對與此裝置相關聯的每個對應前置詞尋找 lpTargetPath 的相符專案。 符合的第一個對應是移除的對應,然後函式會傳回 。
如果 lpTargetPath 是 Null 或 Null 字串的指標,函式將會移除與裝置相關聯的第一個對應,並快顯最近推送的對應。 如果沒有留下任何快顯專案,將會移除裝置名稱。 如果未指定此值, lpTargetPath 參數所指向的字串將會成為此裝置的新對應。 |
[in] lpDeviceName
MS-DOS 裝置名稱字串的指標,指定函式所定義、重新定義或刪除的裝置。 除非定義、重新定義或刪除磁碟機號,否則裝置名稱字串不得具有冒號做為最後一個字元。 例如,磁片磁碟機 C 會是字串 「C:」。 在此情況下,不允許尾端反斜線 (\) 。
[in, optional] lpTargetPath
將實作此裝置之路徑字串的指標。 除非指定 DDD_RAW_TARGET_PATH 旗標,否則字串是 MS-DOS 路徑字串,在此情況下,此字串是路徑字串。
傳回值
如果函式成功,則傳回非零的值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
MS-DOS 裝置名稱會儲存為物件命名空間中的連接點。 將 MS-DOS 路徑轉換成對應路徑的程式碼會使用這些連接點來對應 MS-DOS 裝置和磁碟機號。 DefineDosDevice函式可讓應用程式修改用來實作 MS-DOS 裝置命名空間的連接點。
若要擷取特定 MS-DOS 裝置名稱的目前對應,或取得系統已知的所有 MS-DOS 裝置清單,請使用 QueryDosDevice 函式。
若要定義跨開機而非網路共用持續執行的磁碟機號指派,請使用 SetVolumeMountPoint 函式。 如果要掛接的磁片區已經有指派的磁碟機號,請使用 DeleteVolumeMountPoint 函式來移除指派。
除非使用者是系統管理員,否則系統開機時間定義的磁碟機號和裝置名稱會受到保護,免于重新定義和刪除。
從 Windows XP 開始,此函式會為未在其本機 MS-DOS 裝置命名空間的 「LocalSystem」 內容中執行的呼叫端建立裝置名稱。 如果呼叫端是在 「LocalSystem」 內容中執行,函式會在全域 MS-DOS 裝置命名空間中建立裝置名稱。 如需詳細資訊,請參閱定義 MS DOS 裝置名稱和檔案名、路徑和命名空間。
在 Windows 8 和 Windows Server 2012 中,下列技術支援此函式。
技術 | 支援 |
---|---|
伺服器訊息區 (SMB) 3.0 通訊協定 | 否 |
SMB 3.0 透明容錯移轉 (TFO) | 否 |
具有向外延展檔案共用的 SMB 3.0 (SO) | 否 |
叢集共用磁片區檔案系統 (CsvFS) | 否 |
彈性檔案系統 (ReFS) | 否 |
SMB 不支援磁片區管理功能。 針對 CsvFs,新的名稱將不會複寫到叢集上的其他節點。
範例
如需範例,請參閱 編輯磁碟機號指派。
需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | fileapi.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |