OpenFileDialog は、null で終わる文字列のシーケンスを含むメモリへのポインターを返し、その後に配列の末尾を示す最後の null が続きます。
これは、アンマネージ ポインターから C# 文字列を取得する方法ですが、より安全でエレガントな方法があるはずです。
IntPtr unmanagedPtr = // start of the array ...
int offset = 0;
while (true)
{
IntPtr ptr = new IntPtr( unmanagedPtr.ToInt32() + offset );
string name = Marshal.PtrToStringAuto(ptr);
if(string.IsNullOrEmpty(name))
break;
// Hack! (assumes 2 bytes per string character + terminal null)
offset += name.Length * 2 + 2;
}