お世話になります。
 今、Cで作成されたとあるDLLをC#から利用できるようにしたいと思っているのですが、DLLの関数を呼ぶ際の構造体の作成で困っています。
 なお、DLLの文字コードはUnicodeです。
 C言語のヘッダファイルで、構造体の部分を見ると、1つだけTCHARが指定されており、後はcharが指定されている状態です。
 また、TCHARの部分のサイズは256バイト、CHARの部分のサイズは512バイトで宣言されています。
 下記にCのヘッダファイルの抜粋を記載します。

#define STR_MAX_LENGTH      512
#ifdef _UNICODE
#define FILENAME_MAX_LENGTH 256
#else
#define FILENAME_MAX_LENGTH 512
#endif

typedef struct {
  TCHAR             name[FILENAME_MAX_LENGTH];
  char              error[STR_MAX_LENGTH];
} FILE_INFO;

 このような構造体をC#で再現するにはどうしたらよいのでしょうか。
 ちなみに、下記が現在私が作成した構造体の部分の抜粋になりますが、これだとうまく結果が入らないようです。

public const int FILENAME_MAX_LENGTH = 256;
public const int STR_MAX_LENGTH = 512;

[StructLayout(LayoutKind.Sequential, Pack=4)]
public struct FileInfo{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = FILENAME_MAX_LENGTH)]
public string Name;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = STR_MAX_LENGTH)]
public string Error;

 なお、DLLの呼び出し部分ではCharSetにUnicodeを指定しております。
 上記のような場合で、構造体をうまく作成する方法はないでしょうか。
 何かアドバイス等があれば、教えていただけると幸いです。
 よろしくお願いいたします。