2014-03-27 45 views
3

我正在做一個將代碼從C++轉換爲C#打印機的項目。 我用C#中的SerialPort.Write()替換C++中的WriteFile()如何獲取寫入成功的字節數?

C#

public void Write(
    byte[] buffer, 
    int offset, 
    int count 
) 

C++

BOOL WINAPI WriteFile(
    _In_   HANDLE hFile, 
    _In_   LPCVOID lpBuffer, 
    _In_   DWORD nNumberOfBytesToWrite, 
    _Out_opt_ LPDWORD lpNumberOfBytesWritten, 
    _Inout_opt_ LPOVERLAPPED lpOverlapped 
); 

在C++中我可以得到寫入lpNumberOfBytesWritten的字節數。如何在C#中做同樣的事情?

回答

2

在C#中,我們可以使用如下的API調用,

[DllImport("kernel32.dll")] 
static extern bool WriteFile(IntPtr hFile, byte [] lpBuffer, 
uint nNumberOfBytesToWrite, out uint lpNumberOfBytesWritten, 
[In] ref System.Threading.NativeOverlapped lpOverlapped); 

欲瞭解更多信息,請參閱http://www.pinvoke.net/default.aspx/kernel32.writefile

相關問題