0

ディレクトリが Native Clientファイル システムに存在するかどうかを確認しようとしていますが、それを行う関数が見つかりません。PPB_FileRefディレクトリの を作成してからPPB_FileIO::Open、それを使用して開いてみましたが、呼び出しPPB_FileIO::QueryPPB_FileIO::Open返さPP_ERROR_NOTAFILEれ、2番目の呼び出しが失敗しました。

これは私が試したコードです。簡潔にするために初期化の一部を省略しています。

PP_Instance instance; // initialised elsewhere
PPB_FileRef *fileRefInterface; // initialised elsewhere
PPB_FileIO *fileIOInterface; // initialised elsewhere
PP_Resource fileSystemResource; // initialised elsewhere

PP_Resource fileRefResource = fileRefInterface->Create(
  fileSystemResource,
  "/directory");

PP_Resource fileIOResource = fileIOInterface->Create(instance);

// This call is returning PP_ERROR_NOTAFILE
//
int32_t result = fileIOInterface->Open(
  fileIOResource,
  fileRefResource,
  PP_FILEOPENFLAG_READ,
  PP_BlockUntilComplete()); // this is being called from a background thread.
if (result != PP_OK)
{
  return false;
}

PP_FileInfo info;
result = fileIOInterface->Query(fileIOResource, &info, PP_BlockUntilComplete());
if (result != PP_OK)
{
  return info.type == PP_FILETYPE_DIRECTORY;
}

return false;

ディレクトリであることを伝えるのに十分な有効なPP_ERROR_NOTAFILEfromの戻り値ですか、それとも使用すべき別のより良い方法がありますか?PPB_FileIO::OpenPPB_FileRef

ありがとう、ジェームズ

4

1 に答える 1

1

はい、現在、a がディレクトリを参照しているかどうかを判断する方法は、ディレクトリを開いて戻り値PPB_FileRefを探すことです。PP_ERROR_NOTAFILE

PP_ERROR_NOTAFILEのブランチが作成された後にバックグラウンドが追加されたため、SDK で使用可能になるpepper_25までは、 で開発して で定義を取得する必要があります。詳細については、関連する Chrome変更リストを参照してください。特に、この戻り値がディレクトリを開こうとするときに使用されることが言及されています。pepper_26pepper_canarypp_errors.h

現在の動作は、おそらく少し不透明です。PPB_DirectoryReaderディレクトリを操作するためのより直接的な方法を提供する「dev」(実験的/未完成) インターフェイスがあります。

于 2013-01-24T20:04:25.640 に答える