PiCMConvertDeviceKeyType
NTSTATUS __stdcall PiCMConvertDeviceKeyType(_CMAPI_DEVICE_KEY_TYPE CmapiKeyType, _CM_KEY_TYPE *PnpRtlKeyType){
NTSTATUS v2;
__int16 v3;
_CM_KEY_TYPE v4;
_CM_KEY_TYPE v5;
int v6;
v2 = 0;
*PnpRtlKeyType = CM_KEY_TYPE_NONE;
v3 = CmapiKeyType;
switch( (unsigned __int8)CmapiKeyType )
{
case CMAPI_DEVICE_KEY_TYPE_HARDWARE:
*PnpRtlKeyType = CM_KEY_TYPE_DEVICE_HARDWARE;
v4 = CM_KEY_TYPE_SCOPE_CONFIG|CM_KEY_TYPE_DEVICE_HARDWARE;
v5 = CM_KEY_TYPE_SCOPE_USER|CM_KEY_TYPE_DEVICE_HARDWARE;
break;
case CMAPI_DEVICE_KEY_TYPE_SOFTWARE:
*PnpRtlKeyType = CM_KEY_TYPE_DEVICE_SOFTWARE;
v4 = CM_KEY_TYPE_SCOPE_CONFIG|CM_KEY_TYPE_DEVICE_SOFTWARE;
v5 = CM_KEY_TYPE_SCOPE_USER|CM_KEY_TYPE_DEVICE_SOFTWARE;
break;
case CMAPI_DEVICE_KEY_TYPE_CONTROL:
*PnpRtlKeyType = CM_KEY_TYPE_DEVICE_CONTROL;
v4 = CM_KEY_TYPE_SCOPE_CONFIG|CM_KEY_TYPE_DEVICE_CONTROL;
v5 = CM_KEY_TYPE_SCOPE_USER|CM_KEY_TYPE_DEVICE_CONTROL;
break;
case CMAPI_DEVICE_KEY_TYPE_LOGCONF:
*PnpRtlKeyType = CM_KEY_TYPE_DEVICE_LOGCONF;
v4 = CM_KEY_TYPE_SCOPE_CONFIG|CM_KEY_TYPE_DEVICE_LOGCONF;
v5 = CM_KEY_TYPE_SCOPE_USER|CM_KEY_TYPE_DEVICE_LOGCONF;
break;
default:
return -1073741811;
}
v6 = v3 & 0xFF00;
if( v6 )
{
if( v6 == 256 )
{
*PnpRtlKeyType = v5;
return v2;
}
if( v6 == 512 )
{
*PnpRtlKeyType = v4;
return v2;
}
return -1073741811;
}
return v2;
}Referenced by:
PiCMDeleteDeviceKey
PiCMOpenDeviceKey