Поделиться через


Функция wiasWritePageBufToFile (wiamdef.h)

Функция wiasWritePageBufToFile записывает содержимое временного буфера страницы в файл изображения.

Синтаксис

HRESULT wiasWritePageBufToFile(
  [in] PMINIDRV_TRANSFER_CONTEXT pmdtc
);

Параметры

[in] pmdtc

Указатель на структуру MINIDRV_TRANSFER_CONTEXT .

Возвращаемое значение

При успешном выполнении функция возвращает S_OK. Если функция завершается сбоем, она возвращает стандартную com-ошибку или одну из WIA_ERROR_XXX ошибок (описано в документации по Microsoft Windows SDK).

Комментарии

Функция записывает данные из выделенного мини-накопителем временного буфера страницы в файл изображения, открытый службой WIA. Мини-накопители обычно вызывают эту функцию после получения страницы данных, для которой мини-диск выделил временный буфер.

Эта функция похожа на wiasWriteBufToFile, которую можно использовать для записи буфера данных изображения в файл изображения любого типа. Если мини-накопитель WIA намерен записать страницу данных изображения в многостраничный TIFF-файл, включая все соответствующие теги, записи каталога файлов изображений (IFD) и другие данные, не относящиеся к образам, он должен вызывать эту функцию, а не wiasWriteBufToFile.

Выражение pmdtc-hFile> содержит дескриптор файла при передаче TYMED_FILE (и TYMED_MULTIPAGE_FILE). Его можно использовать для прямого доступа к файлу, в который выполняется запись.

Пример использования:

SetFilePointer((HANDLE)(LONG_PTR)pmdtc->hFile,0,NULL,FILE_BEGIN);
if (!WriteFile((HANDLE)(LONG_PTR)pmdtc->hFile,
    pMyBuffer,
    dwNumBytesToWrite,
   &dwNumBytesWritten,
    NULL)) {
     //
     // Some error happened
     //
     .
     .
     .
    }

Однако если вы планируете использовать только дескриптор файла в TYMED_FILE и TYMED_MULTIPAGE_FILE передачи (для записи данных непосредственно в файл с помощью дескриптора файла вместо вызова wiasWritePageBufToFile), используйте wiasWriteBufToFile. Эта функция выполняет эквивалент:

bRet = WriteFile((HANDLE)ULongToPtr(pmdtc->hFile),
    pmdtc->pTransferBuffer,
    pmdtc->lItemSize,
    &ulWritten,
    NULL);

Это, по сути, то, что можно сделать, если бы вы использовали дескриптор файла напрямую. Преимущество первого примера заключается в том, что если реализация была изменена в будущем выпуске WIA (например, если служба WIA начала использовать каналы, а не файлы, внутренне), драйвер не нужно будет обновлять.

Требования

Требование Значение
Минимальная версия клиента Доступно в Microsoft Windows Me, Windows XP и более поздних версиях операционных систем Windows.
Целевая платформа Персональный компьютер
Верхняя часть wiamdef.h (включая Wiamdef.h)
Библиотека Wiaservc.lib
DLL Wiaservc.dll

См. также раздел

MINIDRV_TRANSFER_CONTEXT

wiasWriteBufToFile

wiasWritePageBufToStream