private void ShredderBW_DoWork(object sender, DoWorkEventArgs e) { if (Globalvariables.Filepath.Length == 0) { Log("No file open!"); } else { Log("Initializing stream..."); for (int i = 0; i < Globalvariables.Passes.Count; i++) { byte val = Globalvariables.Passes[i]; using (FileStreamEx Wiper = new FileStreamEx(Globalvariables.Filepath, System.IO.FileMode.Open)) { Log("Executing Pass " + (i + 1).ToString() + " - 0x" + val.ToString("X2")); if (Globalvariables.FullBuffer) { byte[] buffer = new byte[Wiper.Length]; Utils.FillBuffer(ref buffer, val); Wiper.Write(buffer); } if(Globalvariables.CustomBuffer) { int Blocksize = Globalvariables.BufferSize; long Progress = 0; byte[] buffer = new byte[Blocksize]; Utils.FillBuffer(ref buffer, val); while (Progress < Wiper.Length) { if ((Progress + Blocksize) <= Wiper.Length) { Wiper.Write(buffer); Progress += Blocksize; } else { int Remaining = (int)(Wiper.Length - Progress); byte[] FinalBlock = new byte[Remaining]; Utils.FillBuffer(ref FinalBlock, val); Wiper.Write(FinalBlock); Progress += Remaining; } } } if (Globalvariables.OneByte) { while (!Wiper.eof()) { Wiper.Write(val); } } } } } }