private MLResult InternalGetScreensInfo(out List <MLScreensScreenInfo> info) { info = new List <MLScreensScreenInfo>(); _screenInfoList.Initialize(); MLResult.Code resultCode = MLScreensNativeBindings.MLScreensGetScreenInfoListEx(ref _screenInfoList); var result = MLResult.Create(resultCode); if (!result.IsOk) { return(result); } long screensArrayAddress = _screenInfoList.Entries.ToInt64(); for (var i = 0; i < _screenInfoList.Count; ++i) { long entryAddress = screensArrayAddress + i * Marshal.SizeOf(typeof(MLScreensNativeBindings.MLScreensScreenInfoExNative)); var entryPtr = new IntPtr(entryAddress); var entryNative = (MLScreensNativeBindings.MLScreensScreenInfoExNative)Marshal.PtrToStructure(entryPtr, typeof(MLScreensNativeBindings.MLScreensScreenInfoExNative)); MLScreensScreenInfo entry = entryNative.Data; info.Add(entry); } resultCode = MLScreensNativeBindings.MLScreensReleaseScreenInfoListEx(ref _screenInfoList); result = MLResult.Create(resultCode); return(result); }
private MLResult InternalUpdateScreenInfo(MLScreensScreenInfo info) { MLScreensNativeBindings.MLScreensScreenInfoExNative nativeScreenInfo = MLScreensNativeBindings.MLScreensScreenInfoExNative.Create(); nativeScreenInfo.Data = info; MLResult.Code resultCode = MLScreensNativeBindings.MLScreensUpdateScreenInfo(ref nativeScreenInfo); var result = MLResult.Create(resultCode); return(result); }
private MLResult InternalGetScreensInfo(ulong id, out MLScreensScreenInfo screenInfo) { var screenNative = MLScreensNativeBindings.MLScreensScreenInfoExNative.Create(); MLResult.Code resultCode = MLScreensNativeBindings.MLScreensGetScreenInfo(id, ref screenNative); var result = MLResult.Create(resultCode); if (!result.IsOk) { screenInfo = new MLScreensScreenInfo(); return(result); } else { screenInfo = screenNative.Data; } return(result); }
/// <summary> /// Updates screen info. /// Only the screen this app was launched from is a valid one. /// </summary> /// <param name="screenInfo"/> /// <returns> /// MLResult.Result will be MLResult.Code.Ok if successful. /// /// MLResult.Result will be MLResult.Code.InvalidParam if failed due to invalid input parameter. /// /// MLResult.Result will be MLResult.Code.UnspecifiedFailure if failed due to internal error. /// /// MLResult.Result will be MLResult.Code.ScreensServiceNotAvailable if failed due to the unavailability of the screens service. /// /// MLResult.Result will be MLResult.Code.PrivilegeDenied if necessary privilege is missing. /// /// MLResult.Result will be MLResult.Code.PermissionDenied if application does not have permission to get information about the specific screen. /// /// MLResult.Result will be MLResult.Code.InvalidScreenId if the id for the screen is invalid. /// </returns> public static MLResult UpdateScreenInfo(MLScreensScreenInfo screenInfo) { return(Instance.InternalUpdateScreenInfo(screenInfo)); }
/// <summary> /// Gets information for all system saved screens. /// </summary> /// <returns> /// MLResult.Result will be MLResult.Code.Ok if successful. /// /// MLResult.Result will be MLResult.Code.InvalidParam if failed due to invalid input parameter. /// /// MLResult.Result will be MLResult.Code.UnspecifiedFailure if failed due to internal error. /// /// MLResult.Result will be MLResult.Code.ScreensServiceNotAvailable if failed due to the unavailability of the screens service. /// /// MLResult.Result will be MLResult.Code.PrivilegeDenied if necessary privilege is missing. /// /// MLResult.Result will be MLResult.Code.PermissionDenied if application does not have permission to get information about the specific screen. /// /// MLResult.Result will be MLResult.Code.InvalidScreenId if the id for the screen is invalid. /// </returns> public static MLResult GetScreensInfo(ulong id, out MLScreensScreenInfo info) { return(Instance.InternalGetScreensInfo(id, out info)); }