internal static int MapReadStatusToErrorCode(StatusCode statusCode)
{
// map bad well known status codes.
if (StatusCode.IsBad(statusCode))
{
switch (statusCode.Code)
{
case StatusCodes.BadOutOfMemory: { return ResultIds.E_OUTOFMEMORY; }
case StatusCodes.BadNodeIdInvalid: { return ResultIds.E_INVALIDITEMID; }
case StatusCodes.BadNodeIdUnknown: { return ResultIds.E_UNKNOWNITEMID; }
case StatusCodes.BadNotReadable: { return ResultIds.E_BADRIGHTS; }
case StatusCodes.BadUserAccessDenied: { return ResultIds.E_ACCESSDENIED; }
case StatusCodes.BadAttributeIdInvalid: { return ResultIds.E_INVALIDITEMID; }
case StatusCodes.BadUnexpectedError: { return ResultIds.E_FAIL; }
case StatusCodes.BadInternalError: { return ResultIds.E_FAIL; }
case StatusCodes.BadSessionClosed: { return ResultIds.E_FAIL; }
case StatusCodes.BadTypeMismatch: { return ResultIds.E_BADTYPE; }
}
}
// all other values are mapped to quality codes.
return ResultIds.S_OK;
}