⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wiacammc.h

📁 winddk src目录下的WDM源码压缩!
💻 H
字号:
/**************************************************************************** 
*
*  (C) COPYRIGHT 2000, MICROSOFT CORP.
*
*  FILE:        wiacammc.h
*
*  VERSION:     1.0
*
*  DATE:        12/16/2000
*
*  DESCRIPTION:
*    Header for WIA camera microdriver.
*
*****************************************************************************/

#pragma once

#define WIACAMMICRO_API __declspec(dllexport) HRESULT __stdcall

#include <pshpack8.h>

/****************************************************************************\
* Camera microdriver definitions
\****************************************************************************/

//
// GetItemData state bit masks
//
const UINT MCAM_STATE_NEXT   = 0x00;
const UINT MCAM_STATE_FIRST  = 0x01;
const UINT MCAM_STATE_LAST   = 0x02;
const UINT MCAM_STATE_CANCEL = 0x04;

//
// Item type definition
//
enum {
    WiaMCamTypeUndef,
    WiaMCamTypeFolder,
    WiaMCamTypeOther,
    WiaMCamTypeImage,
    WiaMCamTypeAudio,
    WiaMCamTypeVideo
};

enum {
    WiaMCamEventItemAdded,
    WiaMCamEventItemDeleted,
    WiaMCamEventPropChanged
};

//
// Other constants
//
const INT MCAM_VERSION = 100;
const INT MCAM_EXT_LEN = 4;

//
// Structures
//
typedef struct _MCAM_DEVICE_INFO {
    INT          iSize;                // Size of this structure
    INT          iMcamVersion;         // Microcamera architecture version
    BYTE        *pPrivateStorage;      // Pointer to an area where the microdriver can store it's own device information
    BOOL         bSyncNeeded;          // Should be set if the driver can get out-of-sync with the camera (i.e. for serial cameras)
    BOOL         bSlowConnection;      // Indicates that the driver should optimize for a slow connection (i.e. serial)
    BOOL         bExclusivePort;       // Indicates that the device should be opened/closed for every operation (i.e. serial)
    BOOL         bEventsSupported;     // Set if the driver supports events
    PWSTR        pwszFirmwareVer;      // String representing the firmware version of the device, set to NULL if unknown
    LONG         lPicturesTaken;       // Number of pictures stored on the camera
    LONG         lPicturesRemaining;   // Space available on the camera, in pictures at the current resolution
    LONG         lTotalItems;          // Total number of items on the camera, including folders, images, audio, etc.
    SYSTEMTIME   Time;                 // Current time on the device
    LONG         Reserved[8];          // Reserved for future use
} MCAM_DEVICE_INFO, *PMCAM_DEVICE_INFO;

typedef struct _MCAM_ITEM_INFO {
    INT          iSize;                // Size of this structure
    BYTE        *pPrivateStorage;      // Pointer to an area where the microdriver can store it's own item information
    IWiaDrvItem *pDrvItem;             // Pointer to the driver item created from this item--should not be used by microdriver

    struct _MCAM_ITEM_INFO *pParent;   // Pointer to this item's parent, equal to NULL if this is a top level item
    struct _MCAM_ITEM_INFO *pNext;     // Next item in the list
    struct _MCAM_ITEM_INFO *pPrev;     // Previous item in the list

    PWSTR        pwszName;             // Name of the item without the extension
    SYSTEMTIME   Time;                 // Last modified time of the item
    INT          iType;                // Type of the item (e.g. folder, image, etc.)
    const GUID  *pguidFormat;          // Format of the item
    const GUID  *pguidThumbFormat;     // Format of the thumbnail for the item
    LONG         lWidth;               // Width of the image in pixels, zero for non-images
    LONG         lHeight;              // Height of the image in pixels, zero for non-images
    LONG         lDepth;               // Pixel depth in pixels (e.g. 8, 16, 24)
    LONG         lChannels;            // Number of color channels per pixel (e.g. 1, 3)
    LONG         lBitsPerChannel;      // Number of bits per color channel, normally 8
    LONG         lSize;                // Size of the image in bytes
    LONG         lSequenceNum;         // If image is part of a sequence, the sequence number
    LONG         lThumbWidth;          // Width of thumbnail (can be set to zero until thumbnail is read by app)
    LONG         lThumbHeight;         // Height of thumbnail (can be set to zero until thumbnail is read by app)
    BOOL         bHasAttachments;      // Indicates whether an image has attachments
    BOOL         bReadOnly;            // Indicates if item can or cannot be deleted by app
    BOOL         bCanSetReadOnly;      // Indicates if the app can change the read-only status on and off
    WCHAR        wszExt[MCAM_EXT_LEN]; // Filename extension
    LONG         Reserved[8];          // Reserved for future use    
} MCAM_ITEM_INFO, *PMCAM_ITEM_INFO;

typedef struct _MCAM_PROP_INFO {
    INT          iSize;                // Size of this structure

    struct _MCAM_PROP_INFO *pNext;

    WIA_PROPERTY_INFO *pWiaPropInfo;

    LONG         Reserved[8];
} MCAM_PROP_INFO, *PMCAM_PROP_INFO;

typedef struct _MCAM_EVENT_INFO {
    INT          iSize;                // Size of this structure

    struct _MCAM_EVENT_INFO *pNext;

    INT          iType;                // Event type

    MCAM_ITEM_INFO *pItemInfo;
    MCAM_PROP_INFO *pPropInfo;

    LONG         Reserved[8];
} MCAM_EVENT_INFO, *PMCAM_EVENT_INFO;

//
// Interface to micro camera driver
//
WIACAMMICRO_API WiaMCamInit(MCAM_DEVICE_INFO **ppDeviceInfo);
WIACAMMICRO_API WiaMCamUnInit(MCAM_DEVICE_INFO *pDeviceInfo);
WIACAMMICRO_API WiaMCamOpen(MCAM_DEVICE_INFO *pDeviceInfo, PWSTR pwszPortName);
WIACAMMICRO_API WiaMCamClose(MCAM_DEVICE_INFO *pDeviceInfo);
WIACAMMICRO_API WiaMCamGetDeviceInfo(MCAM_DEVICE_INFO *pDeviceInfo, MCAM_ITEM_INFO **ppItemList);
WIACAMMICRO_API WiaMCamReadEvent(MCAM_DEVICE_INFO *pDeviceInfo, MCAM_EVENT_INFO **ppEventList);
WIACAMMICRO_API WiaMCamStopEvents(MCAM_DEVICE_INFO *pDeviceInfo);
WIACAMMICRO_API WiaMCamGetItemInfo(MCAM_DEVICE_INFO *pDeviceInfo, MCAM_ITEM_INFO *pItemInfo);
WIACAMMICRO_API WiaMCamFreeItemInfo(MCAM_DEVICE_INFO *pDeviceInfo, MCAM_ITEM_INFO *pItemInfo);
WIACAMMICRO_API WiaMCamGetThumbnail(MCAM_DEVICE_INFO *pDeviceInfo, MCAM_ITEM_INFO *pItem, INT *pThumbSize, BYTE **ppThumb);
WIACAMMICRO_API WiaMCamFreeThumbnail(MCAM_DEVICE_INFO *pDeviceInfo, BYTE *pThumb);
WIACAMMICRO_API WiaMCamGetItemData(MCAM_DEVICE_INFO *pDeviceInfo, MCAM_ITEM_INFO *pItem, UINT uiState, BYTE *pBuf, DWORD dwLength);
WIACAMMICRO_API WiaMCamDeleteItem(MCAM_DEVICE_INFO *pDeviceInfo, MCAM_ITEM_INFO *pItem);
WIACAMMICRO_API WiaMCamSetItemProt(MCAM_DEVICE_INFO *pDeviceInfo, MCAM_ITEM_INFO *pItem, BOOL bReadOnly);
WIACAMMICRO_API WiaMCamTakePicture(MCAM_DEVICE_INFO *pDeviceInfo, MCAM_ITEM_INFO **ppItemInfo);
WIACAMMICRO_API WiaMCamStatus(MCAM_DEVICE_INFO *pDeviceInfo);
WIACAMMICRO_API WiaMCamReset(MCAM_DEVICE_INFO *pDeviceInfo);

#include <poppack.h>


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -