溫馨提示×

請教函數(shù)FlushFileBuffers和PurgeComm的用法

小億
122
2023-12-19 14:11:58
欄目: 編程語言

函數(shù)FlushFileBuffers用于刷新指定文件的緩沖區(qū),確保數(shù)據(jù)被寫入文件中。其原型如下:

BOOL FlushFileBuffers( HANDLE hFile );

參數(shù)hFile為文件的句柄,通過CreateFile函數(shù)獲取。函數(shù)返回值為BOOL類型,表示操作成功與否。

函數(shù)PurgeComm用于清除指定串口的輸入和輸出緩沖區(qū)。其原型如下:

BOOL PurgeComm( HANDLE hFile, DWORD dwFlags );

參數(shù)hFile為串口的句柄,通過CreateFile函數(shù)獲取。參數(shù)dwFlags為清除標(biāo)志,可以是以下值的組合:

  • PURGE_TXABORT:終止串口發(fā)送操作,并清除輸出緩沖區(qū)。
  • PURGE_RXABORT:終止串口接收操作,并清除輸入緩沖區(qū)。
  • PURGE_TXCLEAR:清除串口輸出緩沖區(qū)。
  • PURGE_RXCLEAR:清除串口輸入緩沖區(qū)。

函數(shù)返回值為BOOL類型,表示操作成功與否。

使用示例:

// 以寫入方式打開文件 HANDLE hFile = CreateFile( “test.txt”, // 文件路徑 GENERIC_WRITE, // 訪問權(quán)限 0, // 共享模式 NULL, // 安全屬性 OPEN_ALWAYS, // 打開方式 FILE_ATTRIBUTE_NORMAL, // 文件屬性 NULL // 模板文件句柄 ); if (hFile != INVALID_HANDLE_VALUE) { // 寫入數(shù)據(jù)到文件 DWORD dwBytesWritten; char data[] = “Hello, World!”; WriteFile(hFile, data, sizeof(data), &dwBytesWritten, NULL);

// 刷新文件緩沖區(qū)
FlushFileBuffers(hFile);

// 關(guān)閉文件
CloseHandle(hFile);

}

// 打開串口 HANDLE hComm = CreateFile( “COM1”, // 串口名稱 GENERIC_READ | GENERIC_WRITE,// 訪問權(quán)限 0, // 共享模式 NULL, // 安全屬性 OPEN_EXISTING, // 打開方式 0, // 文件屬性 NULL // 模板文件句柄 ); if (hComm != INVALID_HANDLE_VALUE) { // 清除串口輸入和輸出緩沖區(qū) PurgeComm(hComm, PURGE_RXCLEAR | PURGE_TXCLEAR);

// 關(guān)閉串口
CloseHandle(hComm);

}

0