Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

99 lines
2.1 KiB

//=================================================================
//
// Win32_ControllerHasHub.cpp -- Controller to usb hub assoc
//
// Copyright (c) 2000-2001 Microsoft Corporation, All Rights Reserved
//
//=================================================================
#include "precomp.h"
#include <Binding.h>
#include <ConfgMgr.h>
#include "Win32_ControllerHasHub.h"
CContHasHub::CContHasHub(
LPCWSTR pwszClassName,
LPCWSTR pwszNamespaceName,
LPCWSTR pwszLeftClassName,
LPCWSTR pwszRightClassName,
LPCWSTR pwszLeftPropertyName,
LPCWSTR pwszRightPropertyName,
LPCWSTR pwszLeftBindingPropertyName,
LPCWSTR pwszRightBindingPropertyName
) : CBinding (
pwszClassName,
pwszNamespaceName,
pwszLeftClassName,
pwszRightClassName,
pwszLeftPropertyName,
pwszRightPropertyName,
pwszLeftBindingPropertyName,
pwszRightBindingPropertyName
)
{
}
CContHasHub UserToDomain(
L"Win32_ControllerHasHub",
IDS_CimWin32Namespace,
L"Win32_USBController",
L"Win32_USBHub",
IDS_Antecedent,
IDS_Dependent,
IDS_DeviceID,
IDS_DeviceID
);
bool CContHasHub::AreRelated(
const CInstance *pLeft,
const CInstance *pRight
)
{
// Ok, at this point, we know pLeft is a usb controller and pRight
// is a usb hub. The only question left is whether the usb controller
// is controlling this specific hub.
bool bRet = false;
CHString sHub;
pRight->GetCHString(IDS_DeviceID, sHub);
CConfigManager cfgmgr;
CConfigMgrDevicePtr pDevice, pParentDevice;
if ( cfgmgr.LocateDevice ( sHub , pDevice ) )
{
CHString sController, sDeviceID;
pLeft->GetCHString(IDS_DeviceID, sController);
while (pDevice->GetParent(pParentDevice))
{
pParentDevice->GetDeviceID(sDeviceID);
if (sDeviceID.CompareNoCase(sController) == 0)
{
bRet = true;
break;
}
else
{
pDevice = pParentDevice;
}
}
}
return bRet;
}