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


структура MINIDRV_TRANSFER_CONTEXT (wiamindr_lh.h)

Структура MINIDRV_TRANSFER_CONTEXT используется для хранения изображений и других сведений, необходимых для передачи данных обратного вызова в памяти или передачи файловых данных.

Синтаксис

typedef struct _MINIDRV_TRANSFER_CONTEXT {
  LONG                lSize;
  LONG                lWidthInPixels;
  LONG                lLines;
  LONG                lDepth;
  LONG                lXRes;
  LONG                lYRes;
  LONG                lCompression;
  GUID                guidFormatID;
  LONG                tymed;
  LONG_PTR            hFile;
  LONG                cbOffset;
  LONG                lBufferSize;
  LONG                lActiveBuffer;
  LONG                lNumBuffers;
  BYTE                *pBaseBuffer;
  BYTE                *pTransferBuffer;
  BOOL                bTransferDataCB;
  BOOL                bClassDrvAllocBuf;
  LONG_PTR            lClientAddress;
  IWiaMiniDrvCallBack *pIWiaMiniDrvCallBack;
  LONG                lImageSize;
  LONG                lHeaderSize;
  LONG                lItemSize;
  LONG                cbWidthInBytes;
  LONG                lPage;
  LONG                lCurIfdOffset;
  LONG                lPrevIfdOffset;
} MINIDRV_TRANSFER_CONTEXT, *PMINIDRV_TRANSFER_CONTEXT;

Члены

lSize

Задает размер структуры MINIDRV_TRANSFER_CONTEXT в байтах.

lWidthInPixels

Задает ширину текущего изображения в пикселях. Значение этого элемента является производным от общего свойства элемента WIA_IPA_PIXELS_PER_LINE .

lLines

Указывает общее количество строк (количество горизонтальных строк в пикселях) на текущем изображении. Значение этого элемента является производным от свойства общего элемента WIA_IPA_NUMBER_OF_LINES .

lDepth

Задает значение глубины цвета текущего изображения в битах на пиксель. Значение этого элемента является производным от свойства общего элемента WIA_IPA_DEPTH .

lXRes

Задает текущее горизонтальное разрешение изображения в пикселях на дюйм. Значение этого элемента является производным от свойства элемента сканера WIA_IPS_XRES .

lYRes

Задает текущее вертикальное разрешение изображения в пикселях на дюйм. Значение этого элемента является производным от свойства элемента сканера WIA_IPS_YRES .

lCompression

Указывает тип сжатия, используемого устройством. Значение этого элемента является производным от свойства WIA_IPA_COMPRESSION общего элемента.

guidFormatID

Указывает GUID, указывающий формат данных для устройства. Значение этого элемента является производным от общего свойства элемента WIA_IPA_FORMAT .

tymed

Указывает тип передачи данных. Указанная передача данных может быть либо обратным вызовом памяти (TYMED_CALLBACK или TYMED_MULTIPAGE_CALLBACK), либо передачей файлов (TYMED_FILE или TYMED_MULTIPAGE_FILE). Значение этого элемента является производным от свойства WIA_IPA_TYMED общего элемента.

Этот элемент передает сведения, связанные с этим, в члене bTransferDataCB . Дополнительные сведения см. в примечаниях.

hFile

Указывает дескриптор открытого файла, используемого во время передачи файлов. Мини-диск не должен использовать этот элемент. Дополнительные сведения см. в примечаниях.

cbOffset

Задает текущее смещение в байтах следующего расположения буфера, используемого во время этой передачи.

lBufferSize

Указывает общий размер буфера передачи.

lActiveBuffer

Указывает, какой буфер используется для текущей передачи. Значение этого элемента должно находиться в диапазоне от 1 до lNumBuffers.

lNumBuffers

Указывает количество буферов, доступных для передачи данных. В настоящее время это значение может быть равно 1 или 2.

pBaseBuffer

Указывает на начало базового буфера передачи.

pTransferBuffer

Указывает на начало текущего буфера передачи. Для передачи обратного вызова, в которой используется двойная буферизация, этот член чередуется между двумя буферами, указывая на начало первого буфера, а затем на начало второго и т. д.

bTransferDataCB

Указывает, является ли передача данных обратным вызовом памяти или передачей файлов. Для этого элемента задано значение TRUE , если передача является обратным вызовом памяти, и FALSE , если передача является передачей файлов. Для передачи файлов служба WIA обычно предоставляет подпрограмму обратного вызова, которая позволяет приложению получать от мини-хранилища обновления о состоянии передачи файлов. (Служба WIA предоставляет подпрограмму обратного вызова, если приложение предоставляет собственную процедуру обратного вызова. Дополнительные сведения см. в разделе COM-интерфейс IWiaMiniDrvCallback.) Для передачи файлов мини-диск должен проверка значение, хранящееся в элементе pIWiaMiniDrvCallBack. Если этот член имеет значение NULL, служба WIA не предоставляет подпрограмму обратного вызова, поэтому драйвер не должен пытаться вызвать его. Для передачи обратного вызова в памяти служба WIA всегда обеспечивает обратный вызов.

Этот элемент передает сведения, связанные с этим, в элементе с тимовым элементом . Дополнительные сведения см. в примечаниях.

bClassDrvAllocBuf

Указывает, выделяет ли служба WIA буфер передачи. Это значение равно TRUE , если служба WIA выделила буфер, и FALSE , если нет. В этом случае за выделение буфера передачи отвечает мини-диск.

lClientAddress

Указывает адрес передачи в адресном пространстве клиента. Мини-диск не должен изменять это значение.

pIWiaMiniDrvCallBack

Указывает на интерфейс IWiaMiniDrvCallBack , используемый для передачи обратного вызова данных или состояния.

lImageSize

Указывает размер в байтах несжатых битов на одной странице.

lHeaderSize

Указывает размер (в байтах) данных заголовков изображений на одной странице.

lItemSize

Указывает размер битов и заголовка (в байтах). Это значение может быть равным нулю, если размер элемента неизвестен до приобретения.

cbWidthInBytes

Указывает размер (в байтах) строки изображения.

lPage

Указывает номер текущей страницы при сканировании многостраничного изображения TIFF. Нумеровка страниц начинается с нуля.

lCurIfdOffset

Указывает смещение каталога файла изображения (IFD) на текущей странице многостраничного изображения TIFF.

lPrevIfdOffset

Указывает смещение каталога файла изображения (IFD) на предыдущей странице многостраничного изображения TIFF.

Комментарии

Служба WIA задает большинство членов этой структуры перед вызовом метода IWiaMiniDrv::d rvAcquireItemData мини-driver. Если мини-диск вызывает wiasGetImageInformation, эта функция заполняет остальные элементы MINIDRV_TRANSFER_CONTEXT переданного ей.

Так как служба WIA в настоящее время использует только константы TYMED_FILE и TYMED_CALLBACK, члены tymed и bTransferDataCB хранят практически одинаковые сведения. Для передачи файлов, если параметру bTransferDataCB присвоено значение FALSE, параметру tymed присваивается значение TYMED_FILE или TYMED_MULTIPAGE_FILE. Если для передачи обратного вызова памяти для параметра bTransferDataCB задано значение TRUE, параметру tymed присваивается значение TYMED_CALLBACK или TYMED_MULTIPAGE_CALLBACK.

Элемент hFile зарезервирован для использования исключительно службой WIA. Вместо использования этого элемента для передачи файлов мини-driver должен записать данные в буфер, а затем вызвать метод wiasWritePageBufToFile для завершения передачи файла.

Мини-диск получает значения из определенных общих свойств элементов или элементов сканера, чтобы задать элементы, показанные в следующей таблице:

Член Задать по
lWidthInPixels WIA_IPA_PIXELS_PER_LINE
lLines WIA_IPA_NUMBER_OF_LINES
lDepth WIA_IPA_DEPTH
lXRes WIA_IPS_XRES
lYRes WIA_IPS_YRES
lCompression WIA_IPA_COMPRESSION
guidFormatID WIA_IPA_FORMAT
тимовая WIA_IPA_TYMED

Как правило, мини-диск устанавливает предыдущие элементы структуры непосредственно из значений свойств элемента. Приложение или мини-диск будет задавать свойства элемента ранее. Служба WIA заполняет контекст своей службы, используя значения свойств. Драйвер может использовать значения, хранящиеся в этом контексте, для быстрого использования.

Служба WIA задает следующие элементы структуры:

  • hFile

  • bTransferDataCB

  • bClassDrvAllocBuf

Функция библиотеки службы minidriver или wiasGetImageInformation задает следующие элементы структуры:

  • lImageSize

  • lHeaderSize

  • lItemSize

  • cbWidthInBytes

Следующие элементы этой структуры используются в обратных вызовах передачи данных. Эти элементы задаются службой WIA или мини-накопителем. В некоторых случаях значение, хранящееся в bClassDrvAllocBuf , определяет, задает ли этот элемент служба WIA или мини-driver.

Член Задать по
cbOffset Мини-диск
lBufferSize Служба WIA или мини-диск. Если параметр bClassDrvAllocBuf имеет значение TRUE, служба WIA задает этот элемент; в противном случае мини-диск устанавливает его.
lActiveBuffer Служба WIA. Мини-диск не должен изменять этот элемент.
lNumBuffers Служба WIA. Мини-диск не должен изменять этот элемент.
pBaseBuffer Служба WIA или мини-диск. Если параметр bClassDrvAllocBuf имеет значение TRUE, служба WIA задает этот элемент; в противном случае мини-диск устанавливает его.
pTransferBuffer Служба WIA или мини-диск. Если параметр bClassDrvAllocBuf имеет значение TRUE, служба WIA задает этот элемент; в противном случае мини-диск устанавливает его.
lClientAddress Служба WIA. Мини-диск не должен изменять этот элемент.
pIWiaMiniDrvCallBack Служба WIA

Требования

Требование Значение
Заголовок wiamindr_lh.h (включая Wiamindr.h)

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

IWiaMiniDrv::d rvAcquireItemData

IWiaMiniDrvCallBack::MiniDrvCallback

wiasGetImageInformation

wiasWritePageBufToFile