Программирование для Windows NT (том 2)




Исходные тексты приложения - часть 7


  CloseHandle(hSrcFile);

  CloseHandle(hDstFile);

#endif

 

  // В случае успеха возвращаем значение TRUE

  return TRUE;

}

// -----------------------------------------------------

// Функция Oem2Char

// -----------------------------------------------------

// Синхронный вариант функции

// -----------------------------------------------------

#if FILEOP == SYNCHRONOUS_IO

void Oem2Char(HANDLE hSrcFile, HANDLE hDstFile)

{

  DWORD dwBytesRead;

  DWORD dwBytesWritten;

  BOOL  bResult;

  // Выполняем перекодировку файла в цикле

  while(TRUE)

  {

    // Читаем блок данных из исходного файла

    // в буфер cBuf

    bResult = ReadFile(hSrcFile, cBuf, 2048,

      &dwBytesRead, NULL);

   

    // Проверяем, не был ли достигнут конец файла

    if(bResult && dwBytesRead == 0)

      break;

    // Выполняем преобразование в соответствии с

    // содержимым глобальной переменной fConversionType

    if(fConversionType == OEM_TO_ANSI)

     

      // Преобразование из OEM в ANSI

      OemToCharBuff(cBuf, cBuf, dwBytesRead);

   

    else if(fConversionType == ANSI_TO_OEM)

      // Преобразование из ANSI в OEM

      CharToOemBuff(cBuf, cBuf, dwBytesRead);

    // Запись содержимого буфера в выходной файл

    WriteFile(hDstFile, cBuf, dwBytesRead,

      &dwBytesWritten, NULL);

  }

}

// -----------------------------------------------------

// Функция Oem2Char

// -----------------------------------------------------

// Асинхронный вариант функции

// -----------------------------------------------------

#elif FILEOP == ASYNCHRONOUS_IO

void Oem2Char(HANDLE hSrcFile, HANDLE hDstFile)

{

  DWORD dwBytesRead;

  DWORD dwBytesWritten;

  BOOL  bResult;

  DWORD dwError;

  // Структуры для выполнения асинхронной работы

  OVERLAPPED ovRead;

  OVERLAPPED ovWrite;

  // Инициализация структуры для асинхронного чтения

  ovRead.Offset = 0;




Содержание  Назад  Вперед