ボリューム名の取得ができないんです。
初めて質問します。
宜しくお願いいたします。
バックアップツールを作成しています。
3台のPCをネットワーク設定が実施されている自社内で使用します。
バックアップ元、バックアップ先は共に特定しません。
仮に、パソコン1のTドライブ(=パソコン2)内のあるフォルダをパソコン3にバックアップするとします。
リストア時に、バックアップ元がどのパソコンであるかを特定するために、バックアップ情報元を記録する時に「Tドライブ」とはせずに、ボリューム名にしようとしています。
【質問1】
ボリューム名は初期値という可能性もある事が最近わかりました。シリアル番号なら特定素材として適していますか?
*-----------------------------------------*
ボリューム名が取れるかCドライブを固定のキーとしてとりあえず
ソースを作成してみたのですが、ret=0なのに、ボリューム名は空値
です。シリアル番号は返却されます。
他の人のPCであれば取得ができるそうなのです。
Cドライブのプロパティにはボリューム名が入っています。
【質問2】
原因が分からずお手上げです。
どのようなことが考えられますか?
見づらいかもしれませんが、ソースを載せます。
よろしくおねがいいたします。
/* ボリューム情報取得関数 */
int get_volime()
{
int ret;
char szRootPathName[4] = "c:\\";
char szVolumeNameBuf[MAX_VOLUME_SIZE];
DWORD dwVolumeNameSize = MAX_VOLUME_SIZE;
DWORD dwVolumeSerial;
DWORD dwMaxComponentLen;
DWORD dwFileSysFlags;
char szFileSystemName[MAX_VOLUME_SN_SIZE];
DWORD dwFileSystemNameSize = MAX_VOLUME_SN_SIZE;
//szRootPathName[3] = "\0";
/* ボリューム情報の取得 */
ret = GetVolumeInformation((LPCSTR)&szRootPathName,(LPSTR)&szVolumeNameBuf,dwVolumeNameSize,&dwVolumeSerial,&dwMaxComponentLen,&dwFileSysFlags,(LPSTR)&szFileSystemName,dwFileSystemNameSize);
/* ボリューム情報をコンソールへ出力 */
printf("%s",szVolumeNameBuf);
return 0;