using SHH.CameraSdk; /// /// 海康 SDK 扩展方法类 /// 功能:提供海康 API 调用结果校验的快捷扩展,简化错误处理逻辑 /// public static class HikExtensions { #region --- 结果校验扩展 (Result Validation Extensions) --- /// /// 校验海康 API 调用结果是否成功 /// 功能:若结果为 false(调用失败),自动捕获海康错误码并抛出统一异常 /// /// 海康 API 调用返回的布尔结果(true=成功,false=失败) /// 操作名称(用于异常信息描述,如“设备登录”“启动预览”) /// 设备品牌(默认海康威视,无需手动指定) /// API 调用失败时抛出,包含标准错误码与原始错误描述 public static void EnsureSuccess(this bool result, string actionName, DeviceBrand brand = DeviceBrand.HikVision) { // 调用成功则直接返回,无需后续处理 if (result) return; // 1. 获取海康 SDK 最后一次操作的原始错误码 uint lastError = HikNativeMethods.NET_DVR_GetLastError(); // 2. 将海康原始错误码映射为系统统一标准错误码 CameraErrorCode standardCode = HikErrorMapper.Map(lastError); // 3. 抛出统一异常,携带操作名称、标准错误码、原始错误描述等上下文 throw new CameraException(standardCode, $"{actionName} 失败", brand, (int)lastError) .WithContext("Action", actionName) // 附加操作名称上下文 .WithContext("HikDesc", HikErrorMapper.GetRawDescription(lastError)); // 附加海康原始错误描述 } #endregion }