DefineDosDeviceW 関数 (fileapi.h)

MS-DOS デバイスの名前を定義、再定義、または削除します。

構文

BOOL DefineDosDeviceW(
  [in]           DWORD   dwFlags,
  [in]           LPCWSTR lpDeviceName,
  [in, optional] LPCWSTR lpTargetPath
);

パラメーター

[in] dwFlags

DefineDosDevice 関数の制御可能な側面。 このパラメーターには、次の 1 つ以上の値を指定できます。

意味
DDD_EXACT_MATCH_ON_REMOVE
0x00000004
この値を DDD_REMOVE_DEFINITIONと共に指定すると、関数は完全一致を使用して、削除するマッピングを決定します。 定義していないものを削除しないようにするには、この値を使用します。
DDD_NO_BROADCAST_SYSTEM
0x00000008
WM_SETTINGCHANGE メッセージをブロードキャストしないでください。 既定では、このメッセージはシェルとアプリケーションに変更を通知するためにブロードキャストされます。
DDD_RAW_TARGET_PATH
0x00000001
lpTargetPath 文字列をそのまま使用します。 それ以外の場合は、MS-DOS パスからパスに変換されます。
DDD_REMOVE_DEFINITION
0x00000002
指定したデバイスの指定した定義を削除します。 削除する定義を決定するために、この関数はデバイスのマッピングの一覧を調べて、 lpTargetPath と、このデバイスに関連付けられている各マッピングのプレフィックスとの一致を探します。 一致する最初のマッピングは削除されたマッピングであり、その後関数は を返します。

lpTargetPathNULL または NULL 文字列へのポインターである場合、関数はデバイスに関連付けられている最初のマッピングを削除し、プッシュされた最新のマッピングをポップします。 ポップする必要が残っていない場合は、デバイス名が削除されます。

この値を指定しない場合、 lpTargetPath パラメーターが指す文字列がこのデバイスの新しいマッピングになります。

[in] lpDeviceName

関数が定義、再定義、または削除しているデバイスを指定する MS-DOS デバイス名文字列へのポインター。 ドライブ文字が定義、再定義、または削除されていない限り、デバイス名の文字列の最後の文字としてコロンを使用することはできません。 たとえば、ドライブ C は文字列 "C:" になります。 いずれの場合も、末尾の円記号 (\) は使用できません。

[in, optional] lpTargetPath

このデバイスを実装するパス文字列へのポインター。 この文字列は、 DDD_RAW_TARGET_PATH フラグが指定されていない限り、MS-DOS パス文字列です。この場合、この文字列はパス文字列です。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

MS-DOS デバイス名は、オブジェクト名前空間のジャンクションとして格納されます。 MS-DOS パスを対応するパスに変換するコードでは、これらのジャンクションを使用して MS-DOS デバイスとドライブ文字をマップします。 DefineDosDevice 関数を使用すると、アプリケーションで MS-DOS デバイス名前空間の実装に使用されるジャンクションを変更できます。

特定の MS-DOS デバイス名の現在のマッピングを取得するか、システムに認識されているすべての MS-DOS デバイスの一覧を取得するには、 QueryDosDevice 関数を使用します。

ネットワーク共有ではなく、ブート間で永続的なドライブ文字の割り当てを定義するには、 SetVolumeMountPoint 関数を使用します。 マウントするボリュームに既にドライブ文字が割り当てられている場合は、 DeleteVolumeMountPoint 関数を使用して割り当てを削除します。

システムの起動時に定義されたドライブ文字とデバイス名は、ユーザーが管理者でない限り、再定義と削除から保護されます。

Windows XP 以降、この関数は、独自の Local MS-DOS デバイス名前空間の "LocalSystem" コンテキストで実行されていない呼び出し元のデバイス名を作成します。 呼び出し元が "LocalSystem" コンテキストで実行されている場合、関数はグローバル MS-DOS デバイス名前空間にデバイス名を作成します。 詳細については、「 MS DOS デバイス名の定義 」および「 ファイル名、パス、および名前空間」を参照してください。

Windows 8 と Windows Server 2012 では、この関数は、次のテクノロジによってサポートされています。

テクノロジ サポートされています
サーバー メッセージ ブロック (SMB) 3.0 プロトコル いいえ
SMB 3.0 Transparent Failover (TFO) いいえ
スケールアウト ファイル共有 (SO) を使う SMB 3.0 いいえ
クラスターの共有ボリューム ファイル システム (CsvFS) いいえ
Resilient File System (ReFS) いいえ
 

SMB では、ボリューム管理機能はサポートされていません。 CsvF の場合、新しい名前はクラスター上の他のノードにはレプリケートされません。

例については、「 ドライブ文字の割り当ての編集」を参照してください。

要件

   
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー fileapi.h (Windows.h を含む)
Library Kernel32.lib
[DLL] Kernel32.dll

関連項目

DeleteVolumeMountPoint

QueryDosDevice

SetVolumeMountPoint

ボリューム管理の関数