структура 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