示例#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;
}