コード例 #1
0
ファイル: QcdmEfsManager.cs プロジェクト: mikalovtch/EfsTools
 public void DeleteFile(string path)
 {
     InitializeIfNeed();
     if (_manager.TryGetTarget(out var manager))
     {
         var request  = new EfsUnlinkFileCommandRequest(path);
         var response = (EfsUnlinkFileCommandResponse)manager.ExecuteQcdmCommandRequest(request);
         QcdmEfsErrorsUtils.ThrowQcdmEfsErrorsIfNeed(response.Error);
     }
 }
コード例 #2
0
 public void Close()
 {
     if (IsOpen)
     {
         CheckManager();
         var request  = new EfsCloseDirectoryCommandRequest(_directory);
         var response = (EfsCloseDirectoryCommandResponse)_manager.ExecuteQcdmCommandRequest(request);
         QcdmEfsErrorsUtils.ThrowQcdmEfsErrorsIfNeed(response.Error);
         _directory = -1;
     }
 }
コード例 #3
0
        private DirectoryEntry GetEntry(int index)
        {
            var request  = new EfsReadDirectoryCommandRequest(_directory, index);
            var response = (EfsReadDirectoryCommandResponse)_manager.ExecuteQcdmCommandRequest(request);

            if (response.Error == QcdmEfsErrors.InvalidSequence)
            {
                return(null);
            }
            QcdmEfsErrorsUtils.ThrowQcdmEfsErrorsIfNeed(response.Error);
            return(response.DirectoryEntry);
        }
コード例 #4
0
 public void DeleteDirectory(string path)
 {
     InitializeIfNeed();
     if (_manager.TryGetTarget(out var manager))
     {
         var request  = new EfsRemoveDirectoryCommandRequest(path);
         var response = manager.ExecuteQcdmCommandRequest <EfsRemoveDirectoryCommandResponse>(request);
         if (response != null)
         {
             QcdmEfsErrorsUtils.ThrowQcdmEfsErrorsIfNeed(response.Error);
         }
     }
 }
コード例 #5
0
ファイル: QcdmEfsManager.cs プロジェクト: mikalovtch/EfsTools
 public void PutItemFile(string path, EfsFileFlag flags, int permission, byte[] data)
 {
     InitializeIfNeed();
     if (_manager.TryGetTarget(out var manager))
     {
         if (manager.IsOpen)
         {
             var request  = new EfsPutItemFileCommandRequest(path, flags, permission, data);
             var response = (EfsPutItemFileCommandResponse)manager.ExecuteQcdmCommandRequest(request);
             QcdmEfsErrorsUtils.ThrowQcdmEfsErrorsIfNeed(response.Error);
         }
     }
 }
コード例 #6
0
ファイル: QcdmEfsManager.cs プロジェクト: mikalovtch/EfsTools
 public void SyncNoWait(string path, ushort sequence)
 {
     InitializeIfNeed();
     if (_manager.TryGetTarget(out var manager))
     {
         if (manager.IsOpen)
         {
             var request  = new EfsSyncNoWaitCommandRequest(path, sequence);
             var response = (EfsSyncNoWaitCommandResponse)manager.ExecuteQcdmCommandRequest(request);
             QcdmEfsErrorsUtils.ThrowQcdmEfsErrorsIfNeed(response.Error);
         }
     }
 }
コード例 #7
0
ファイル: QcdmEfsManager.cs プロジェクト: mikalovtch/EfsTools
 public void CreateDirectory(string path, ushort mode)
 {
     InitializeIfNeed();
     if (_manager.TryGetTarget(out var manager))
     {
         var request  = new EfsMakeDirectoryCommandRequest(mode, path);
         var response = (EfsMakeDirectoryCommandResponse)manager.ExecuteQcdmCommandRequest(request);
         if (response.Error != QcdmEfsErrors.DirectoryExist)
         {
             QcdmEfsErrorsUtils.ThrowQcdmEfsErrorsIfNeed(response.Error);
         }
     }
 }
コード例 #8
0
ファイル: QcdmEfsManager.cs プロジェクト: mikalovtch/EfsTools
 public void CheckAccess(string path, byte permissionBits)
 {
     InitializeIfNeed();
     if (_manager.TryGetTarget(out var manager))
     {
         if (manager.IsOpen)
         {
             var request  = new EfsAccessCommandRequest(path, permissionBits);
             var response = (EfsAccessCommandResponse)manager.ExecuteQcdmCommandRequest(request);
             QcdmEfsErrorsUtils.ThrowQcdmEfsErrorsIfNeed(response.Error);
         }
     }
 }
コード例 #9
0
ファイル: QcdmEfsManager.cs プロジェクト: mikalovtch/EfsTools
 public void RenameFile(string path, string newPath)
 {
     InitializeIfNeed();
     if (_manager.TryGetTarget(out var manager))
     {
         if (manager.IsOpen)
         {
             var request  = new EfsRenameFileCommandRequest(path, newPath);
             var response = (EfsRenameFileCommandResponse)manager.ExecuteQcdmCommandRequest(request);
             QcdmEfsErrorsUtils.ThrowQcdmEfsErrorsIfNeed(response.Error);
         }
     }
 }
コード例 #10
0
        public void Open()
        {
            if (!IsOpen)
            {
                CheckManager();

                var request  = new EfsOpenDirectoryCommandRequest(_path);
                var response = (EfsOpenDirectoryCommandResponse)_manager.ExecuteQcdmCommandRequest(request);
                if (response.IsError)
                {
                    var errorMessage = QcdmEfsErrorsUtils.EfsErrorString(response.Error);
                    throw new QcdmEfsDirectoryException(string.Format(Strings.QcdmCantOpenEfsDirectoryFormat, _path,
                                                                      errorMessage));
                }

                _directory = response.Directory;
            }
        }