【发布时间】:2020-05-18 10:48:14
【问题描述】:
我尝试使用 Windows Wia API 控制我的 Wifi 扫描仪。
我按照以下教程进行操作:
https://docs.microsoft.com/en-us/windows/win32/wia/-wia-wia-tutorial
我查看了示例:
https://github.com/pauldotknopf/WindowsSDK7-Samples/tree/master/multimedia/wia
我基本上是从datatransfer项目中复制代码:
https://github.com/pauldotknopf/WindowsSDK7-Samples/tree/master/multimedia/wia/datatransfer
一切正常。我可以与我的扫描仪通信并将文档扫描为“.BMP”文件。
现在我想尝试一些设置。我开始尝试更改文件格式。
在 DataTransfer.cpp 中:
https://github.com/pauldotknopf/WindowsSDK7-Samples/blob/master/multimedia/wia/datatransfer/DataTransfer.cpp
扫描发生在HRESULT DownloadItem(IWiaItem2* pWiaItem2 , BOOL bTransferFlag)。
我以为那里指定了文件格式:
HRESULT DownloadItem(IWiaItem2* pWiaItem2 , BOOL bTransferFlag
{
...
GUID itemCategory = GUID_NULL;
ReadPropertyGuid(pWiaItem2,WIA_IPA_ITEM_CATEGORY,&itemCategory );
if( (!IsEqualIID(itemCategory,WIA_CATEGORY_FINISHED_FILE)) || (!IsEqualIID(itemCategory,WIA_CATEGORY_FOLDER)) )
{
/* WiaImgFmt_BMP sets the format to ".BMP" */
hr = WritePropertyGuid(pWiaPropertyStorage,WIA_IPA_FORMAT,WiaImgFmt_BMP);
}
if(FAILED(hr))
{
ReportError(TEXT("WritePropertyGuid() failed in DownloadItem().Format couldn't be set to BMP"),hr);
}
...
}
所以我尝试将WiaImgFmt_BMP 更改为其他格式,例如WiaImgFmt_JPEG 或WiaImgFmt_PNG
但他们返回错误:HRESLUT: 0x80070057。
我怎样才能做到这一点?
我认为扫描仪可能不支持其他格式,但我不知道如何检查。 当我对此进行研究时,我只发现了对 Wia Mini Driver 的参考。但是我不太明白API和驱动程序之间的区别。如果有人可以向我解释这一点,我将不胜感激。
Windows 传真和扫描确实提供 PNG、JPEG 格式,我认为它们也使用 Wia,所以如果不支持这些格式,我会感到惊讶。
【问题讨论】:
-
好的,所以我发现 HRESLUT: 0x8007005 意味着我没有访问权限。如果我查看 WIA_IPA_ACCESS_RIGHTS,它也设置为 WIA_ITEM_READ,这意味着只读。