Fork me on GitHub

Conduit 外部メモリの特定フォルダへのファイルインストール

  • Jun 02, 2006

categoryプラグインは存在しません。

外部メモリの特定フォルダにファイルをインストールするには、VFS API を直接利用する。

まず、

// get slot id
hLib = LoadLibrary("VFSAPI.dll");
if (hLib) \{
  fvolenum = GetProcAddress(hLib, "VFSVolumeEnumerate");
  if (fvolenum) \{
    volRefs = (WORD *)malloc(sizeof(WORD) * volumes);
    lres = (*fvolenum)(&volumes, volRefs);
  \}
  if (!lres) \{
    volRef = volRefs[index - 1];
  \} else \{
    volRef = 0;
  \}
  FreeLibrary(hLib);
\}

というコードで、Volume Reference ID を取得する。これを用いて、

// get slot id
hLib = LoadLibrary("VFSAPI.dll");
if (hLib) \{
  fput = GetProcAddress(hLib, "VFSFilePut");
  if (fput) \{
    lres = (*fput)(volRef, devicePath, localPath);
  \}
  FreeLibrary(hLib);
\}

というコードでファイルをインストールする。この際の注意点は、

  • Local Path には、相対パスでファイル名を指定し、パス区切り文字を含めない。
  • Local Path で指定するファイルは、他のプロセスからのアクセスがないようにする。私は Java で FileInputStream を close し忘れていて、インストールがうまくいかず悩みました。
  • Device Path には、/ からはじまる絶対パスを指定し、ファイル名まで指定する。この際、ファイル名に使用できない文字 ( / * ? など) をエスケープすること。

というところ。

commentプラグインは存在しません。

目次