StillIamge というインターフェイスで GetDevicesList というメソッド呼び出しを呼び出そうとしていますが、空の結果が返されます。これはポインターの問題だと思いますが、私は C++ の専門家ではなく、それが問題だと思います。メソッド呼び出しは次のとおりです。
HRESULT GetDeviceList(
DWORD dwType,
DWORD dwFlags,
[out] DWORD *pdwItemsReturned,
[out] LPVOID *ppBuffer
);
イメージング デバイスを差し込んだり外したりすると、返されたデバイスの数が上下するので、それが機能していることはわかっています。結果が空白であるという事実は、ポインターが正しくないことが原因だと思います-誰かが簡単に見て、それが理由であるかどうかを教えてください。
#include "stdafx.h"
bool debug = true;
int _tmain(int argc, _TCHAR* argv[])
{
DWORD dwStiTotal = 0;
PSTI pSti = NULL;
HRESULT hres = StiCreateInstance(GetModuleHandle(NULL), STI_VERSION, &pSti, NULL);
STI_DEVICE_INFORMATION deviceInfo[255];
memset(deviceInfo,0, sizeof(deviceInfo));
hres = pSti->GetDeviceList(NULL, NULL, &dwStiTotal, (LPVOID*) deviceInfo);
printf("number devices %d\n", dwStiTotal);
for (int i=0; i<dwStiTotal; i++){
printf("---------------------------------------------------\n");
printf("type %d\n", deviceInfo[i].DeviceType);
printf("vendor %s\n", deviceInfo[i].pszVendorDescription);
printf("device %s\n", deviceInfo[i].pszDeviceDescription);
printf("portname %s\n", deviceInfo[i].pszPortName);
printf("PropProvider %s\n", deviceInfo[i].pszPropProvider);
printf("LocalName %s\n", deviceInfo[i].pszLocalName);
printf("InternalName %s\n", deviceInfo[i].szDeviceInternalName);
}
pSti->Release();
if (debug){
char key;
std::cin >> key;
}
return 0;
}
このような基本的な質問をして申し訳ありません!
よろしく、
ニール