Ejemplo n.º 1
0
BOOL
CNdasAutoRegister::ProcessRegister(
	CONST NDAS_DEVICE_ID& deviceId, 
	ACCESS_MASK autoRegAccess)
{
	CNdasDeviceRegistrar* pRegistrar = pGetNdasDeviceRegistrar();
	CRefObjPtr<CNdasDevice> pExistingDevice = pRegistrar->Find(deviceId);
	if (NULL != pExistingDevice.p) {
		return TRUE;
	}

	CRefObjPtr<CNdasDevice> pDevice = pRegistrar->Register(deviceId, TRUE, TRUE);
	if (NULL == pDevice.p) {
		return FALSE;
	}

	pDevice->SetGrantedAccess(autoRegAccess);

	BOOL fSuccess = pDevice->Enable(TRUE);
	if (!fSuccess) {
		DBGPRT_ERR(_FT("Enable failed: "));
	}

	TCHAR szName[MAX_NDAS_DEVICE_NAME_LEN + 1];
	HRESULT hr = ::StringCchPrintf(szName, MAX_NDAS_DEVICE_NAME_LEN + 1,
		_T("NDAS Device A%04d"), pDevice->GetSlotNo());
	_ASSERTE(SUCCEEDED(hr));

	pDevice->SetName(szName);

	return TRUE;
}
Ejemplo n.º 2
0
CNdasDevicePtr
pGetNdasDevice(const NDAS_DEVICE_ID_EX& device)
{
	return pGetNdasDeviceRegistrar().Find(device);
}
Ejemplo n.º 3
0
CNdasDevicePtr
pGetNdasDevice(DWORD SlotNo)
{
	return pGetNdasDeviceRegistrar().Find(SlotNo);
}
Ejemplo n.º 4
0
BOOL
CNdasAutoRegister::ProcessRegister(
	const NDAS_DEVICE_ID& deviceId, 
	ACCESS_MASK autoRegAccess)
{
	HRESULT hr;

	CComPtr<INdasDeviceRegistrar> pRegistrar;
	COMVERIFY(hr = pGetNdasDeviceRegistrar(&pRegistrar));
	if (FAILED(hr))
	{
		return FALSE;
	}

	CComPtr<INdasDevice> pExistingDevice;
	hr = pRegistrar->get_NdasDevice(&const_cast<NDAS_DEVICE_ID&>(deviceId), &pExistingDevice);
	if (SUCCEEDED(hr)) 
	{
		return TRUE;
	}

	DWORD dwRegFlags = 
		NDAS_DEVICE_REG_FLAG_AUTO_REGISTERED |
		NDAS_DEVICE_REG_FLAG_VOLATILE;
	
	//
	// Register function returns the locked pointer
	//
	CComPtr<INdasDevice> pNdasDevice;
	hr = pRegistrar->Register(
		0, 
		deviceId, 
		dwRegFlags, 
		NULL, 
		CComBSTR(L"NDAS Device"),
		autoRegAccess,
		NULL,
		&pNdasDevice);
	if (FAILED(hr))
	{
		XTLTRACE2(NDASSVC_AUTOREG, TRACE_LEVEL_ERROR,
			"Register failed, hr=0x%X\n", hr);
		return FALSE;
	}

	DWORD slotNo;
	COMVERIFY(pNdasDevice->get_SlotNo(&slotNo));

	CComBSTR ndasDeviceName(MAX_NDAS_DEVICE_NAME_LEN + 1);
	COMVERIFY(StringCchPrintfW(
		ndasDeviceName, MAX_NDAS_DEVICE_NAME_LEN + 1,
		L"NDAS Device A%04d", slotNo));
	COMVERIFY(pNdasDevice->put_Name(ndasDeviceName));

	hr = pNdasDevice->put_Enabled(TRUE);
	if (FAILED(hr)) 
	{
		XTLTRACE2(NDASSVC_AUTOREG, TRACE_LEVEL_ERROR,
			"Enable failed, hr=0x%X\n", hr);
	}

	return TRUE;
}