unsigned int 
USBDeviceFactory_DiscoverDevices(
	LPSKYETEK_DEVICE** lpDevices
)
{
	SKYETEK_STATUS status;
	unsigned int deviceCount; 

	PDEVMGR_DEVICE_INFORMATION pDevInfo;
	HANDLE hSearch;
	
	if((lpDevices == NULL) || (*lpDevices != NULL))
		return 0;

	deviceCount = 0;
	pDevInfo = NULL;
	hSearch = INVALID_HANDLE_VALUE;

	pDevInfo = (PDEVMGR_DEVICE_INFORMATION)malloc(sizeof(DEVMGR_DEVICE_INFORMATION));
	memset(pDevInfo, 0, sizeof(DEVMGR_DEVICE_INFORMATION));
	pDevInfo->dwSize = sizeof(DEVMGR_DEVICE_INFORMATION);
	hSearch = FindFirstDevice(DeviceSearchByDeviceName, L"SKY*", pDevInfo);
	
	if(hSearch == INVALID_HANDLE_VALUE)
		goto done;

	for(hSearch = FindFirstDevice(DeviceSearchByDeviceName, L"SKY*", pDevInfo); hSearch != INVALID_HANDLE_VALUE; FindNextDevice(hSearch, pDevInfo))
	{
		status = USBDeviceFactory_CreateDevice(pDevInfo->szLegacyName, &((*lpDevices)[deviceCount]));
		
		memset(pDevInfo, 0, sizeof(DEVMGR_DEVICE_INFORMATION));
		pDevInfo->dwSize = sizeof(DEVMGR_DEVICE_INFORMATION);

		if(status != SKYETEK_SUCCESS)		
			continue;

		deviceCount++;
	}

done:
	if(hSearch != INVALID_HANDLE_VALUE)
		FindClose(hSearch);
	
	if(pDevInfo)
		free(pDevInfo);

	return deviceCount;
}
Ejemplo n.º 2
0
HRESULT 
CGraphManager::GetFirstCameraDriver( WCHAR *pwzName )
{
	HRESULT hr = S_OK;
	HANDLE	handle = NULL;
	DEVMGR_DEVICE_INFORMATION di;
	GUID guidCamera = { 0xCB998A05, 0x122C, 0x4166, 0x84, 0x6A, 0x93, 0x3E, 0x4D, 0x7E, 0x3C, 0x86 };
	// Note about the above: The driver material doesn't ship as part of the SDK. This GUID is hardcoded
	// here to be able to enumerate the camera drivers and pass the name of the driver to the video capture filter

	if( pwzName == NULL )
	{
		return E_POINTER;
	}

	di.dwSize = sizeof(di);

	handle = FindFirstDevice( DeviceSearchByGuid, &guidCamera, &di );
	if(( handle == NULL ) || ( di.hDevice == NULL ))
	{
		ERR( HRESULT_FROM_WIN32( GetLastError() ));
	}

	StringCchCopy( pwzName, MAX_PATH, di.szLegacyName );

Cleanup:
	FindClose( handle );
	return hr;
}
Ejemplo n.º 3
0
/* Doesn't work on CE < 5 ... */
static int
FindFreeInstanceIndex (void)
{
  HANDLE h;
  DEVMGR_DEVICE_INFORMATION di;
  WCHAR wzName[6];
  for (int i=0; i < MAX_INSTANCES; i++)
    {
      wsprintf (wzName, L"%s%02d:", NAME_BASE, i);
      di.dwSize = sizeof (di);
      h = FindFirstDevice (DeviceSearchByLegacyName, wzName, &di);
      if (h == INVALID_HANDLE_VALUE)
	return i;
      CloseHandle (h);
    }
  return -1;
}
Ejemplo n.º 4
0
static int
deinstall (void)
{
  int result = 0;
  HANDLE shd;
  DEVMGR_DEVICE_INFORMATION dinfo;

  memset (&dinfo, 0, sizeof dinfo);
  dinfo.dwSize = sizeof dinfo;
  shd = FindFirstDevice (DeviceSearchByLegacyName, L"GPG1:", &dinfo);
  if (shd == INVALID_HANDLE_VALUE)
    {
      if (GetLastError () == 18)
        fprintf (stderr, PGM": device not found\n");
      else
        {
          fprintf (stderr, PGM": FindFirstDevice failed: rc=%d\n", 
                   (int)GetLastError ());
          result = 1;
        }
    }
  else
    {
      fprintf (stderr, PGM": ActivateDevice handle is %p\n", dinfo.hDevice);
      if (dinfo.hDevice && dinfo.hDevice != INVALID_HANDLE_VALUE)
        {
          if (!DeactivateDevice (dinfo.hDevice))
            {
              fprintf (stderr, PGM": DeactivateDevice failed: rc=%d\n",
                       (int)GetLastError ());
              result = 1;
            }
          else
            fprintf (stderr, PGM": DeactivateDevice succeeded\n");
        }
      FindClose (shd);
    }

  return result;
}
Ejemplo n.º 5
0
HANDLE GetUSBfnHandle()
{
    HANDLE                      hUSBfn = INVALID_HANDLE_VALUE;
    BYTE                        guidBuffer[sizeof(GUID) + 4]; // +4 since scanf writes longs
    LPGUID                      pGuid = (LPGUID) guidBuffer;
    LPCTSTR                     pUSBFnGuid = _T("E2BDC372-598F-4619-BC50-54B3F7848D35");
    DEVMGR_DEVICE_INFORMATION   devInfo;
    HANDLE                      hTemp;
    DWORD                       error;


    error = _stscanf(pUSBFnGuid, SVSUTIL_GUID_FORMAT, SVSUTIL_PGUID_ELEMENTS(&pGuid));
    
    if ((error == 0) || (error == EOF)) {
        DEBUGMSG(ZONE_ERROR, (_T("Can not find USB FN GUID!\r\n")));
        return hUSBfn;
    }
    ASSERT(error != 0 && error != EOF);  


    // Get a handle to the bus driver
    memset(&devInfo, 0, sizeof(devInfo));
    devInfo.dwSize = sizeof(devInfo);
    hTemp = FindFirstDevice(DeviceSearchByGuid, pGuid, &devInfo);

    if (hTemp != INVALID_HANDLE_VALUE) {
        hUSBfn = CreateFile(devInfo.szBusName, 
                            GENERIC_READ, 
                            FILE_SHARE_READ, 
                            NULL, 
                            OPEN_EXISTING, 
                            0, 
                            NULL);
    } else {
//        RETAILMSG(ZONE_ERROR, (_T("No available UsbFn controller!\r\n")));
    }
    return hUSBfn;
}
Ejemplo n.º 6
0
HRESULT GetFirstCameraDriver( WCHAR *pwzName ) {
  HRESULT hr = S_OK;
  HANDLE handle = NULL;
  DEVMGR_DEVICE_INFORMATION di;
  GUID guidCamera = { 0xCB998A05, 0x122C, 0x4166, 0x84, 0x6A,
                      0x93, 0x3E, 0x4D, 0x7E, 0x3C, 0x86 };

  if( pwzName == NULL ) {
    return E_POINTER;
  }

  di.dwSize = sizeof(di);

  handle = FindFirstDevice( DeviceSearchByGuid, &guidCamera, &di );
  if(( handle == NULL ) || ( di.hDevice == NULL )) {
	  return S_FALSE;
  }

  StringCchCopy( pwzName, MAX_PATH, di.szLegacyName );
 
  FindClose( handle );
  return hr;
}
Ejemplo n.º 7
0
bool Camera::isInstalled()
{
    if(RHO_IS_WMDEVICE)
    {
        HRESULT hr = S_OK;
        HANDLE	handle = NULL;
        DEVMGR_DEVICE_INFORMATION di;
        GUID guidCamera = { 0xCB998A05, 0x122C, 0x4166, 0x84, 0x6A, 0x93, 0x3E, 0x4D, 0x7E, 0x3C, 0x86 };
        // Note about the above: The driver material doesn't ship as part of the SDK. This GUID is hardcoded
        // here to be able to enumerate the camera drivers and pass the name of the driver to the video capture filter

        di.dwSize = sizeof(di);

        handle = FindFirstDevice(DeviceSearchByGuid, &guidCamera, &di);

        if(( handle != INVALID_HANDLE_VALUE ) && ( di.hDevice != NULL ))
        {
            return true;
        }
    }

    return false;
}
Ejemplo n.º 8
0
int DoEnumFilter() {
	HRESULT hr;
	IFilterMapper   *pMapper = NULL;
	IEnumRegFilters *pEnum   = NULL;
	IBaseFilter * pFilter = NULL;
	hr = CoCreateInstance(CLSID_FilterMapper, NULL, CLSCTX_INPROC, IID_IFilterMapper, (void **)&pMapper);
	if(FAILED(hr)){
		return 0;
	}
	hr = pMapper->EnumMatchingFilters(&pEnum,0,FALSE,GUID_NULL,GUID_NULL,FALSE,FALSE,GUID_NULL,GUID_NULL);

	REGFILTER *pRF = NULL;
	ULONG cFetched;
	while (pEnum->Next(1, &pRF, &cFetched) == S_OK) {
		SendMessage(g_hList,LB_ADDSTRING,0,(LPARAM)pRF->Name);
		CoTaskMemFree(pRF);
		
		hr = CoCreateInstance(pRF->Clsid, NULL, CLSCTX_INPROC
			, IID_IBaseFilter, (void **)&pFilter);
		SendMessage(g_hList,LB_ADDSTRING,0,(LPARAM)TEXT(" [IN]"));
		EnumPins(pFilter,PINDIR_INPUT);
		SendMessage(g_hList,LB_ADDSTRING,0,(LPARAM)TEXT(" [OUT]"));
		EnumPins(pFilter,PINDIR_OUTPUT);
		SAFE_RELEASE(pFilter);
	}
	// capture device
	HANDLE handle = NULL;
	DEVMGR_DEVICE_INFORMATION di={sizeof(di)};
	GUID guidCamera = { 0xCB998A05, 0x122C, 0x4166, 0x84, 0x6A,0x93, 0x3E, 0x4D, 0x7E, 0x3C, 0x86 };
	handle = FindFirstDevice( DeviceSearchByGuid, &guidCamera, &di );
	if(( handle == NULL ) || ( di.hDevice == NULL )) {
	}else{
		SendMessage(g_hList,LB_ADDSTRING,0,(LPARAM)di.szLegacyName );
	}
	FindClose( handle );
	return 1;
}