public static extern void DismUnmountImage( [NotNull] string mountPath, DismCommitAndUnmountFlags flags, [CanBeNull] SafeWaitHandle cancelEvent, [CanBeNull] DismProgressCallback progress, IntPtr userData );
public static extern void DismCommitImage( uint session, DismCommitAndUnmountFlags flags, [CanBeNull] SafeWaitHandle cancelEvent, [CanBeNull] DismProgressCallback progress, IntPtr userData );
public async Task UnmountAsync( ImageCommitOptions options, bool commit, CancellationToken cancellationToken, [CanBeNull] IProgress <DismEventArgs> progress ) { DismCommitAndUnmountFlags flags = 0; if ((options & ImageCommitOptions.Append) != 0) { flags |= DismCommitAndUnmountFlags.Append; } if ((options & ImageCommitOptions.GenerateIntegrityData) != 0) { flags |= DismCommitAndUnmountFlags.GenerateIntegrity; } if (commit) { flags |= DismCommitAndUnmountFlags.Commit; } else { flags |= DismCommitAndUnmountFlags.Discard; } await Task.Run(() => NativeMethods.DismUnmountImage( this._mountPath, flags, cancellationToken.WaitHandle.SafeWaitHandle, (current, total, userData) => progress?.Report(new DismEventArgs(current, total)), IntPtr.Zero ) ); }