0

私はLOTUSNotesAPIに取り組んでいますが、その過程で、このように機能するようになりました。

bytesRead = fread (Buffer, 1, (WORD) Length, hCDFile);

ここで、whileループ内で実行されるのようなC#と同等のメソッドを見つけました。最初の反復では、メソッドは正常に機能しているようです(cバージョンのコードとC#バージョンをデバッグしても結果は同じです)。しかし、2回目の反復では、dwLengthHost = 35の値を想定します。このメソッドの前に、別のメソッドを呼び出しました。

NSFDUMPReadFromFile(hCDFile, ref RecordTypeCanonicalPtr, sizeof (ushort))freadこれは関数を呼び出して値を与えますRecordTypeCanonicalPtr=149。しかし、その後同じメソッドが後で呼び出されるとRecordTypeCanonicalPtrdwLengthHost 値は自動的に変更されます。

[DllImport("msvcrt.dll")]
public static extern UInt32 fread(ref IntPtr Buffer, uint Size, uint Count, IntPtr Stream);

private bool NSFDUMPReadFromFile(IntPtr hCDFile,
                                        ref IntPtr Buffer,
                                        UInt32 Length)
{
    UInt32 bytesRead = NotesApi.fread(ref Buffer, 1, (uint)Length, hCDFile);
    /* Read bytes from the file */ 
    if (bytesRead == Length)
        return true;
    else
        return false;
}
4

1 に答える 1

1

使用する必要があるように見えますFileStream

を使用して作成できます。File.Open

以下とまったく同じ動作:

bytesRead = fread (Buffer, 1, (WORD) Length, hCDFile); 

次の C# コードを提供する必要があります

bytesRead = file.Read(Buffer, 0, Length)

完全な例は次のとおりです

using(file = File.Open("test.bin", FileMode.Open))
{
    var length = 256;
    var buffer = new byte[length];
    var bytesRead = file.Read(buffer, 0, length);
}
于 2013-03-10T08:15:05.370 に答える