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


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

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

Синтаксис

HRESULT wiasWritePageBufToFile(
  [in] PMINIDRV_TRANSFER_CONTEXT pmdtc
);

Параметры

[in] pmdtc

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

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

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

Замечания

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

Эта функция аналогична wiasWriteBufToFile, которая может использоваться для записи буфера данных изображения в любой тип файла изображения. Если мини-driver 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