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
クエリの結果を受け取るバッファーへのポインター。 関数は、このバッファーに 1 つ以上の null で終わる文字列を入力します。 最終的な null で終わる文字列の後に、追加の NULL が続きます。
lpDeviceName が NULL 以外の場合、この関数は lpDeviceName で指定された特定の MS-DOS デバイスに関する情報を取得します。 バッファーに格納されている最初の null で終わる文字列は、デバイスの現在のマッピングです。 その他の null で終わる文字列は、デバイスの未削除の以前のマッピングを表します。
lpDeviceName が NULL の場合、関数は既存のすべての MS-DOS デバイス名の一覧を取得します。 バッファーに格納されている null で終わる各文字列は、既存の MS-DOS デバイスの名前 (\Device\HarddiskVolume1 や \Device\フロッピー0 など) です。
[in] ucchMax
lpTargetPath が指すバッファーに格納できる TCHAR の最大数。
戻り値
関数が成功した場合、戻り値は lpTargetPath が指すバッファーに格納されている TCHAR の数です。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、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 プロトコル | いいえ |
SMB 3.0 Transparent Failover (TFO) | いいえ |
スケールアウト ファイル共有 (SO) を使う SMB 3.0 | いいえ |
クラスターの共有ボリューム ファイル システム (CsvFS) | はい |
Resilient File System (ReFS) | はい |
SMB では、ボリューム管理機能はサポートされていません。
例
例については、「 ファイル ハンドルからファイル名を取得する 」または 「ボリューム パスを表示する」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | fileapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |