internal static int MapPropertyReadStatusToErrorCode(StatusCode statusCode)
{
// map good status.
if (StatusCode.IsGood(statusCode))
{
return ResultIds.S_OK;
}
// map bad status codes.
if (StatusCode.IsBad(statusCode))
{
switch (statusCode.Code)
{
case StatusCodes.BadOutOfMemory: { return ResultIds.E_OUTOFMEMORY; }
case StatusCodes.BadNodeIdInvalid: { return ResultIds.E_INVALID_PID; }
case StatusCodes.BadNodeIdUnknown: { return ResultIds.E_INVALID_PID; }
case StatusCodes.BadNotReadable: { return ResultIds.E_BADRIGHTS; }
case StatusCodes.BadUserAccessDenied: { return ResultIds.E_ACCESSDENIED; }
case StatusCodes.BadAttributeIdInvalid: { return ResultIds.E_INVALID_PID; }
case StatusCodes.BadTypeMismatch: { return ResultIds.E_BADTYPE; }
}
return ResultIds.E_FAIL;
}
// uncertain values for property reads are errors.
return ResultIds.E_FAIL;
}