_getdcwd、_wgetdcwd
指定されたドライブの現在の作業ディレクトリの完全なパスを取得します。
重要
この API は、Windows ランタイムで実行するアプリケーションでは使用できません。詳細については、「/ZW でサポートされない CRT 関数」を参照してください。
char *_getdcwd(
int drive,
char *buffer,
int maxlen
);
wchar_t *_wgetdcwd(
int drive,
wchar_t *buffer,
int maxlen
);
パラメーター
drive
ドライブを指定する負でない整数 (0 = 既定のドライブ、1 = A、2 = B など)。指定されたドライブが使用できない場合、またはドライブの種類 (たとえば、リムーバブル ドライブ、固定ドライブ、CD-ROM ドライブ、RAM ディスク ドライブ、ネットワーク ドライブ) を特定できない場合、「パラメーターの検証」に説明されている無効なパラメーター ハンドラーが呼び出されます。
buffer
パスの格納場所または NULL。NULL を指定した場合、この関数は、malloc を使用して maxlen サイズ以上のバッファーを割り当てます。_getdcwd の戻り値は、割り当てられたバッファーへのポインターになります。 バッファーは、free を呼び出し、ポインターに渡すことによって解放できます。
maxlen
文字数でパスの最大長を指定する 0 以外の正の整数。_getdcwd では char、_wgetdcwd では wchar_t。maxlen が 0 以下の場合、「パラメーターの検証」に説明されている無効なパラメーター ハンドラーが呼び出されます。
戻り値
指定されたドライブの現在の作業ディレクトリの完全なパスを表す文字列へのポインター、またはエラーを示す NULL。
buffer を NULL に指定し、maxlen 文字を割り当てるためのメモリが不足している場合は、エラーが発生し、errno は ENOMEM に設定されます。 終端の null 文字を含むパスの長さが maxlen を超える場合、エラーが発生し、errno は ERANGE に設定されます。 これらのエラー コードの詳細については、「errno、_doserrno、_sys_errlist、および _sys_nerr」を参照してください。
解説
_getdcwd 関数は、指定されたドライブの現在の作業ディレクトリの完全なパスを取得し、それを buffer に格納します。 現在の作業ディレクトリがルートに設定されている場合、文字列は円記号 (\) で終わります。 現在の作業ディレクトリがルート以外のディレクトリに設定されている場合、文字列は、円記号ではなく、ディレクトリの名前で終わります。
_wgetdcwd は、_getdcwd のワイド文字バージョンで、その buffer パラメーターと戻り値はワイド文字列になります。 それ以外では、_wgetdcwd と _getdcwd の動作は同じです。
この関数は、スレッド セーフではない GetFullPathName に依存しますが、スレッド セーフです。 ただし、マルチスレッド アプリケーションでこの関数と GetFullPathName を両方とも呼び出した場合、スレッド セーフを侵害する可能性があります。 詳細については、MSDN ライブラリで GetFullPathName を検索してください。
_nolock サフィックスが付いているこの関数のバージョンは、スレッド セーフではなく、他のスレッドによる干渉から保護されないという点を除いて、この関数とまったく同じように動作します。 詳細については、「_getdcwd_nolock、_wgetdcwd_nolock」を参照してください。
_DEBUG と _CRTDBG_MAP_ALLOC が定義されている場合、_getdcwd と _wgetdcwd への呼び出しは _getdcwd_dbg と _wgetdcwd_dbg への呼び出しに置き換えられるので、メモリ割り当てをデバッグできます。 詳細については、「_getdcwd_dbg、_wgetdcwd_dbg」を参照してください。
汎用テキスト ルーチンのマップ
Tchar.h のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_tgetdcwd |
_getdcwd |
_getdcwd |
_wgetdcwd |
必要条件
ルーチン |
必須ヘッダー |
---|---|
_getdcwd |
<direct.h> |
_wgetdcwd |
<direct.h> または <wchar.h> |
互換性の詳細については、「互換性」を参照してください。
使用例
_getdrive の例を参照してください。
同等の .NET Framework 関数
System::Environment::CurrentDirectory