BOOL DefineDosDevice( DWORD Flags, LPCTSTR DosDeviceName, LPTSTR SrcDevice);
この関数はNTで使用可能。
SrcDeviceで指定されたデバイスに対して、DosDeviceNameで指定されたDOSデバイス名を新たに定義する。DosDeviceNameで指定されたDOSデバイス名が既に存在する場合、SrcDeviceを指すDOSデバイス名に再定義される。
FlagsにDDD_REMOVE_DEFINITIONを指定した場合、DefineDosDeviceはDosDeviceNameで指定したDOSデバイス名をシステムから削除する。
ただし、以前に複数回DefineDosDeviceでDOSデバイス名を再定義していた場合で、SrcDeviceをNULLとしていた場合、削除ではなく、最後にDefineDosDeviceによって定義したシンボリックリンクの状態への復帰となる。これ以上復帰ができない場合のみ、削除される。 DefineDosDeviceによる定義は、システムの再起動までの間有効である。
システム起動時に定義されたデバイス名を再定義するには、管理者の権限が必要である。
引数の意味は以下の通り。
Flags | DefineDosDeviceの動作を指定するビットマスク。設定可能な値については後述の表を参照。 |
DosDeviceName | 定義または削除するDOSデバイス名。 |
SrcDevice | 定義または削除の対象となるデバイス。FlagsにDDD_RAW_TARGET_PATHが指定されていない場合、DOSデバイス名を表し、指定されている場合はデバイスパス名を表す。FlagsにDDD_EXACT_MATCH_ON_REMOVEが指定されていない場合、SrcDeviceはデバイス名のプリフィックスを指定しているものとみなされる。 |
Flagsに指定可能な値は、以下のフラグの組み合わせである。
DDD_RAW_TARGET_PATH | SrcDeviceに指定されている文字列は、ドライブパスである。このフラグを指定していない場合、SrcDriveに指定した文字列はDOSデバイス名であるとみなされる。 |
DDD_REMOVE_DIFINITION | DosDeviceNameで指定されたDOSデバイス名をシステムから削除する。このフラグを指定していない場合、DefineDosDeviceは、DosDeviceNameで指定されたDOSデバイス名をシステムに追加する。 |
DDD_EXACT_MATCH_ON_REMOVE | DDD_REMOVE_DIFINITIONが指定されている場合のみ意味を持つ。このフラグを指定した場合、DefineDosDeviceはSrcDeviceで指定したデバイスに完全に一致するデバイス名に対して削除を行う。このフラグを指定していない場合、プリフィックスがSrcDeviceと一致するデバイス名に対して削除を行う。 |
戻り値は、関数の実行に成功したか否かを表す真偽値である。
void MapPhysicalDrive() { /* プライマリハードディスクの二番目のパーティションを、ドライブ'S:'に割り当てる */ DefineDosDevice( DDD_RAW_TARGET_PATH, "s:", "\\Device\\Harddisk0\\Partition2"); /* 30秒間待機 */ printf("待機...\n"); Sleep(30000); /* ドライブ'S:'を削除する */ DefineDosDevice( DDD_REMOVE_DEFINITION, "s:", NULL); } void MapPath() { /* 'c:\test'というディレクトリを'S:'というドライブにマップする */ DefineDosDevice( 0, "s:", "c:\\test"); /* 30秒間待機 */ printf("待機...\n"); Sleep(30000); /* ドライブ'S:'を削除する */ DefineDosDevice( DDD_REMOVE_DEFINITION, "s:", NULL); }