38.9.4.18 CFカード内ファイル一覧読み出し(任意フォルダ指定、サブフォルダ以下を含む)

CFカード内にあるファイル一覧をパラメータで渡されたファイルに出力します。ファイル一覧を取得したいフォルダを任意に指定できます。読み出すファイル一覧はパラメータで渡されたフォルダ以下を再帰的探索して得られたすべてのファイルです。

関数名

INT WINAPI EasyGetListRecursivelyInCfCard(LPCSTR sNodeName, LPCSTR sDirectory, INT* oiCount, LPCSTR sSaveFileName) ;

引数

sNodeName: 局名は「#WinGP」固定になります。

sDirectory: 取得するフォルダ名(すべて大文字)

oiCount: 読み出したファイルの数

sSaveFileName: 読み出したディレクトリ情報の格納先ファイル名。なお、指定したファイル内には、stEasyRecursiveDirInfo型の配列に格納されたデータが、oiCountで返された個数分、バイナリデータとして格納されます。

struct stEasyRecursiveDirInfo {
  BYTE bFileName[8+1];// ファイル名( 最後は0 で完結)
  BYTE bExt[3+1];// ファイルの拡張子( 最後は0 で完結)
  BYTE bDummy[3];// ダミー
  DWORD dwFileSize;// ファイルのサイズ
  BYTE bFileTimeStamp[8+1];// ファイルのタイムスタンプ( 最後は0 で完結)
  BYTE bFolderName[260+1];// フォルダ名( 最後は0 で完結。残りの部分は0が格納される)
  BYTE bDummy2[2];// ダミー2
} ;

戻り値

正常終了:0

異常終了:エラーコード

特記事項

「bFileTimeStamp」の補足として、8バイトのうち、上位4 バイトがMS-DOS形式の時刻を、下位4バイトがMS-DOS形式の日付を16進文字列として表しています。

なお、MS-DOS形式の日付、時刻のフォーマットは以下のとおりです。

例 : 20C42C22の場合、2C22がMS-DOSの日付を16進で表記したもの、20C4がMS-DOSの時刻を16進で表したものとなるため、2002/1/2 4:6:8 を表すことになります。

MS-DOS形式の時刻を指定します。この日付は、次の形式で1個の16ビット値にパックされています。

読み出したファイル一覧の中に、ファイル名が8文字に満たない場合または拡張子名が3文字に満たないファイルが含まれる場合、bFileName[8+1]およびbExt[3+1]は、以下のように表示されます。

bFileName[8+1]の表示

ファイル名が8文字に満たない部分の先頭に0が格納され、その後は不定値が格納される

bExt[3+1]の表示

拡張子名が3文字に満たない部分の先頭に0が格納され、その後は不定値が格納される

(例)ファイル名および拡張子名がABC.Dの場合

bFileName[8+1]

0x410x420x430x00******************** (****は不定値)

bExt[3+1]

0x440x00******** (****は不定値)