【问题标题】:Windows IStillImage interface: can't get device listWindows IStillImage 界面:无法获取设备列表
【发布时间】:2011-11-04 20:59:53
【问题描述】:

请看我的代码:

#include <windows.h>
#include <Sti.h>
#include <iostream>
#pragma  comment (lib, "Sti.Lib")

using namespace std;
void main ()
{
    HRESULT hr = CoInitialize(NULL);
    PSTI iface = 0;
    hr = StiCreateInstance(GetModuleHandle(NULL), STI_VERSION, &iface, NULL);   
    DWORD numDevices = 0;
    STI_DEVICE_INFORMATION* devices = NULL;
    hr = iface->GetDeviceList(NULL, NULL, &numDevices, (void**) &devices);
    cout << hr;
    hr = iface->Release();
    cin.get();
}

GetDeviceList 给我“索引中指定的键不匹配”。知道这意味着什么吗?谷歌似乎在这里没有帮助。 其他一切都很好(我的意思是初始化)。

提前致谢。

更新:它可以在 Win XP 虚拟机上运行,​​但在主机 Win 7 x64 上仍然失败。奇怪。

【问题讨论】:

  • 我重现,相同的操作系统。请注意,这是一个 Windows 错误 (0x80070491),它使错误消息有点可疑。我的机器上没有任何可以提供静止图像的设备,所以我很容易假设该错误实际上意味着“没有设备”。 YMMV。
  • 不。我已经把我的相机插上——一点帮助都没有。但是,在 win XP 上,我在没有摄像头的情况下遇到了同样的错误,而在插入摄像头的情况下也可以,所以你部分正确。我们仍然不知道是我的操作系统还是暗示了问题的代码。
  • 好的,你知道这个错误意味着“没有找到设备”。找出为什么 Windows 不喜欢你的相机需要访问 superuser.com
  • 我的电脑上绝对没有理由出现这个错误(或者看起来如此)。我的操作系统很新鲜,我从来没有弄乱过驱动程序等等。此外,Windows 可以很好地与这款相机配合使用。

标签: c++ windows com


【解决方案1】:

STI 仅适用于 Win XP,仅此而已。

【讨论】:

  • @jm.:你认为还是你知道?无论如何,在 Vista 和更高版本上应该使用 WPD,至少用于与数码相机通信。
  • 好吧,我在 Windows7 上使用了 IStillImage 的一些 API:RegisterLaunchApplication 和 UnregisterLaunchApplication。
猜你喜欢
  • 1970-01-01
  • 2012-07-04
  • 2014-03-13
  • 2011-02-08
  • 1970-01-01
  • 2012-06-14
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多