_getdcwd、_wgetdcwd
更新 : 2007 年 11 月
指定されたドライブの現在の作業ディレクトリの完全パス名を取得します。
char *_getdcwd(
int drive,
char *buffer,
int maxlen
);
wchar_t *_wgetdcwd(
int drive,
wchar_t *buffer,
int maxlen
);
パラメータ
drive
ディスク ドライブbuffer
パスの格納場所。maxlen
パスの最大長 (文字数)。_getdcwd の場合は char、_wgetdcwd の場合は wchar_t です。
戻り値
buffer を返します。エラーが発生した場合は NULL を返します。また、errno は、maxlen バイトに割り当てるメモリが不十分であることを示す場合 (buffer として NULL 引数を指定した場合) は ENOMEM に設定され、maxlen で指定した文字数よりパスが長い場合は ERANGE に設定されます。drive に有効なドライブを指定しない場合または maxlen が 0 以下の場合、「パラメータの検証」に説明されているように、この関数は無効なパラメータ ハンドラを呼び出します。
リターン コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
解説
_getdcwd 関数は、指定されたドライブの現在の作業ディレクトリの完全パスを取得し、buffer に格納します。パスの長さ (終端の null 文字を含む) が maxlen を超える場合、エラーが発生します。引数 drive には、ドライブを指定します。既定のドライブは 0、A ドライブは 1、B ドライブは 2、のように指定します。buffer 引数には NULL を指定できます。つまり、少なくとも maxlen のサイズのバッファ (必要な場合にだけ、さらに大きいバッファ) が、パスを格納するために malloc を使用して自動的に割り当てられます。free を呼び出して _getdcwd の戻り値 (割り当てられたバッファへのポインタ) を渡すことによって、このバッファを後から解放できます。
_getdcwd は、現在の作業ディレクトリのパスを表す文字列を返します。現在の作業ディレクトリがルートに設定されている場合、文字列は円記号 (\) で終わります。現在の作業ディレクトリがルート以外のディレクトリに設定されている場合、文字列はディレクトリ名で終わり、末尾に円記号は付きません。
ワイド文字を扱う場合は、_getdcwd ではなく _wgetdcwd を使用します。_wgetdcwd の場合、buffer 引数および戻り値はワイド文字列になります。それ以外の場合、_wgetdcwd と _getdcwd の動作は同じです。
_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> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
「_getdrive」の例を参照してください。
.NET Framework の相当するアイテム
System::Environment::CurrentDirectory