投稿者 KOZ  (社会人) 投稿日時 2022/10/21 05:14:03
ふと思ったんですが、ReadFile API を呼び出したほうが楽な気もします。

[DllImport("kernel32.dll", SetLastError = true)]
static extern bool ReadFile(SafeHandle hFile, out Form1.usrData lpBuffer,
       int nNumberOfBytesToRead, out int lpNumberOfBytesRead, IntPtr lpOverlapped);

var lst = new List<Form1.usrData>();
int structSize = Marshal.SizeOf(typeof(Form1.usrData));
using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) {
    while (true) {
        if (ReadFile(fs.SafeFileHandle, out Form1.usrData data,
                            structSize, out int readedSize, IntPtr.Zero)) {
            if (readedSize < structSize) break;
            lst.Add(data);
        } else {
            throw new Win32Exception();
        }
    }
}