- 修复RouteService中错误过滤home路由的问题 - 后端现在正确返回所有用户有权限的路由 - 添加设备管理相关功能(列表、在线监控、电源管理、远程监控) - 添加详细的修复文档和重启脚本 - 更新权限配置脚本 问题根源:后端代码中有逻辑会过滤掉home路由,导致前端收到空数组,无法生成菜单 解决方案:移除过滤home路由的逻辑,让后端返回所有有权限的路由
96 lines
3.0 KiB
C#
96 lines
3.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using Intel.Management.Wsman;
|
|
|
|
namespace Intel.Management.PSModule.Amt
|
|
{
|
|
class ClockService : DriveContainer
|
|
{
|
|
|
|
|
|
public ClockService( DriveItem parent)
|
|
: base("Clock", parent)
|
|
{
|
|
}
|
|
|
|
|
|
|
|
public override void GetChildItems(ChildWriter writer)
|
|
{
|
|
|
|
DateTime standardTime = new DateTime(1970, 1, 1);
|
|
IWsmanConnection conn = ((AmtRootService)GetRoot()).Connection;
|
|
|
|
IManagedReference refToClock = conn.NewReference("AMT_TimeSynchronizationService");
|
|
IManagedInstance inputObj = refToClock.CreateMethodInput("GetLowAccuracyTimeSynch");
|
|
IManagedInstance outObj = refToClock.InvokeMethod(inputObj);
|
|
|
|
|
|
uint ta0 = uint.Parse( outObj.GetProperty("Ta0").ToString());
|
|
DateTime time = standardTime.AddSeconds(ta0);
|
|
|
|
|
|
writer.Add(new DriveEntry("LocalTime", time.ToLocalTime(), this));
|
|
writer.Add(new DriveEntry("UniversalTime", time, this));
|
|
|
|
|
|
|
|
}
|
|
|
|
public override void Invoke(DriveProvider provider)
|
|
{
|
|
DateTime standardTime = new DateTime(1970, 1, 1);
|
|
IWsmanConnection conn = ((AmtRootService)GetRoot()).Connection;
|
|
|
|
IManagedReference refToClock = conn.NewReference("AMT_TimeSynchronizationService");
|
|
IManagedInstance inputObj = refToClock.CreateMethodInput("GetLowAccuracyTimeSynch");
|
|
IManagedInstance outObj = refToClock.InvokeMethod(inputObj);
|
|
|
|
if (!outObj.GetProperty("ReturnValue").ToString().Equals("0"))
|
|
AmtException.ThrowInvokeError(outObj);
|
|
|
|
uint ta0 = uint.Parse(outObj.GetProperty("Ta0").ToString());
|
|
|
|
uint tm1 =(uint)DateTime.UtcNow.Subtract(standardTime).TotalSeconds;
|
|
|
|
|
|
inputObj = refToClock.CreateMethodInput("SetHighAccuracyTimeSynch");
|
|
inputObj.SetProperty("Ta0", ta0.ToString());
|
|
inputObj.SetProperty("Tm1", tm1.ToString());
|
|
inputObj.SetProperty("Tm2", tm1.ToString());
|
|
outObj = refToClock.InvokeMethod(inputObj);
|
|
|
|
|
|
switch (outObj.GetProperty("ReturnValue").ToString())
|
|
{
|
|
case "0":
|
|
break;
|
|
case "1":
|
|
throw new WsmanInvokeException("Internal Error");
|
|
case "36":
|
|
throw new WsmanInvokeException("Invalid Parameter");
|
|
case "38":
|
|
throw new WsmanInvokeException("Flash write limit exceeded");
|
|
|
|
default:
|
|
throw new WsmanInvokeException("AMT error " + outObj.GetProperty("ReturnValue").ToString());
|
|
}
|
|
|
|
|
|
_items = null;
|
|
|
|
|
|
}
|
|
|
|
public override object GetReturnObject()
|
|
{
|
|
return new NameValuePairItem(Name, Value);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|