امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
رایت dvd سی شارپ
نویسنده پیام
Ghoghnus آفلاین
مدیر بخش
*****

ارسال‌ها: 1,478
موضوع‌ها: 261
تاریخ عضویت: آذر ۱۳۸۸

تشکرها : 1644
( 3909 تشکر در 1436 ارسال )
ارسال: #1
رایت dvd سی شارپ
یه سمپل قدیمی برای رایت
کد:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32.SafeHandles;
using System.Runtime.InteropServices;
using System.IO;
using System.Threading;

namespace Example
{
   class Program
   {
       static void Main(string[] args)
       {
           string driveLetter = args[0].Substring(0, 1).ToUpper() + ":";

           SafeFileHandle _hdev = CreateFileR(driveLetter);
           if (_hdev.IsClosed | _hdev.IsInvalid)
           {
               Console.WriteLine("Error opening device");
               return;
           }

           Console.WriteLine("DeviceIoControl - Version One");

           Console.WriteLine("IOCTL_DVD_START_SESSION");

           bool result = false;
           int bytesReturned = 0;
           int sessionId = 0;

           result = DeviceIoControl(_hdev, CTL_CODE(0x00000033, 0x0400, 0, 1), IntPtr.Zero, 0, (IntPtr)sessionId, Marshal.SizeOf(sessionId), out bytesReturned, IntPtr.Zero);

           if (result == false)
           {
               int error_code = Marshal.GetLastWin32Error();
               Console.WriteLine("Result: " + result);
               Console.WriteLine("error code: " + error_code);
           }
           else
           {
               Console.WriteLine("Result: " + result);
               Console.WriteLine("BytesReturned: " + bytesReturned);
               Console.WriteLine("SessionId: " + sessionId);
               Console.WriteLine("sizeof(SessionId): " + Marshal.SizeOf(sessionId));
           }

           Console.WriteLine("IOCTL_DVD_READ_STRUCTURE");
           Console.WriteLine("Skipping...");

           Console.WriteLine("IOCTL_DVD_END_SESSION");
           bytesReturned = 0;

           result = DeviceIoControl(_hdev, CTL_CODE(0x00000033, 0x0403, 0, 1), new IntPtr(sessionId), Marshal.SizeOf(sessionId), IntPtr.Zero, 0, out bytesReturned, IntPtr.Zero);

           if (result == false)
           {
               int error_code = Marshal.GetLastWin32Error();
               Console.WriteLine("error code: " + error_code);
               Console.WriteLine("Result: " + result);
           }
           else
           {
               Console.WriteLine("Result: " + result);
               Console.WriteLine("BytesReturned: " + bytesReturned);
           }

           Console.WriteLine("\nDeviceIoControl - Version Two");

           Console.WriteLine("IOCTL_DVD_START_SESSION");

           result = false;
           uint bytesReturned2 = 0;
           sessionId = -10;

           NativeOverlapped nativeOverlapped = new NativeOverlapped();

           result = DeviceIoControlAlt(_hdev, EIOControlCode.DvdStartSession, 0, 0, sessionId, (uint)Marshal.SizeOf(sessionId), ref bytesReturned2, ref nativeOverlapped);

           if (result == false)
           {
               int error_code = Marshal.GetLastWin32Error();
               Console.WriteLine("Result: " + result);
               Console.WriteLine("error code: " + error_code);
           }
           else
           {
               Console.WriteLine("Result: " + result);
               Console.WriteLine("BytesReturned: " + bytesReturned2);
               Console.WriteLine("SessionId: " + sessionId);
               Console.WriteLine("sizeof(SessionId): " + Marshal.SizeOf(sessionId));
           }

           Console.WriteLine("IOCTL_DVD_READ_STRUCTURE");
           Console.WriteLine("Skipping...");

           Console.WriteLine("IOCTL_DVD_END_SESSION");
           bytesReturned2 = 0;

           result = DeviceIoControlAlt(_hdev, EIOControlCode.DvdEndSession, sessionId, (uint)Marshal.SizeOf(sessionId), 0, 0, ref bytesReturned2, ref nativeOverlapped);

           if (result == false)
           {
               int error_code = Marshal.GetLastWin32Error();
               Console.WriteLine("Result: " + result);
               Console.WriteLine("error code: " + error_code);
           }
           else
           {
               Console.WriteLine("Result: " + result);
               Console.WriteLine("BytesReturned: " + bytesReturned2);
           }

           _hdev.Close();
       }

       public static int CTL_CODE(int DeviceType, int Function, int Method, int Access)
       {
           return (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2)
             | (Method));
       }

       [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
       private static extern IntPtr CreateFile(string lpFileName, uint dwDesiredAccess, uint dwShareMode, IntPtr lpSecurityAttributes, uint dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile);
       public static SafeFileHandle CreateFileR(string device)
       {
           string str = device.EndsWith(@"\") ? device.Substring(0, device.Length - 1) : device;
           return new SafeFileHandle(CreateFile(@"\\.\" + str, WinntConst.GENERIC_READ, WinntConst.FILE_SHARE_READ, IntPtr.Zero, WinntConst.OPEN_EXISTING, WinntConst.FILE_ATTRIBUTE_NORMAL, IntPtr.Zero), true);
       }

       [return: MarshalAs(UnmanagedType.Bool)]
       [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
       public static extern bool DeviceIoControl([In] SafeFileHandle hDevice,
           [In] int dwIoControlCode, [In] IntPtr lpInBuffer,
           [In] int nInBufferSize, [Out] IntPtr lpOutBuffer,
           [In] int nOutBufferSize, out int lpBytesReturned,
           [In] IntPtr lpOverlapped);

       internal class WinntConst
       {
           // Fields
           internal static uint FILE_ATTRIBUTE_NORMAL = 0x80;
           internal static uint FILE_SHARE_READ = 1;
           internal static uint GENERIC_READ = 0x80000000;
           internal static uint OPEN_EXISTING = 3;
       }

       // Other code for DeviceIoControl from pinvoke.net
       [Flags]
       public enum EIOControlCode : uint
       {
           // DVD
           DvdReadStructure = (EFileDevice.Dvd << 16) | (0x0450 << 2) | EMethod.Buffered | (FileAccess.Read << 14),
           DvdStartSession = (EFileDevice.Dvd << 16) | (0x0400 << 2) | EMethod.Buffered | (FileAccess.Read << 14),
           DvdEndSession = (EFileDevice.Dvd << 16) | (0x0403 << 2) | EMethod.Buffered | (FileAccess.Read << 14)
       };

       [Flags]
       public enum EFileDevice : uint
       {
           Dvd = 0x00000033,
       }

       [Flags]
       public enum EMethod : uint
       {
           Buffered = 0,
           InDirect = 1,
           OutDirect = 2,
           Neither = 3
       }

       [DllImport("Kernel32.dll", EntryPoint="DeviceIoControl", SetLastError = true, CharSet = CharSet.Auto)]
       public static extern bool DeviceIoControlAlt(
           Microsoft.Win32.SafeHandles.SafeFileHandle hDevice,
           EIOControlCode IoControlCode,
           [MarshalAs(UnmanagedType.AsAny)][In] object InBuffer,
           uint nInBufferSize,
           [MarshalAs(UnmanagedType.AsAny)][Out] object OutBuffer,
           uint nOutBufferSize,
           ref uint pBytesReturned,
           [In] ref System.Threading.NativeOverlapped Overlapped
       );
   }
}

[تصویر:  a.jpg]

باور کنیم
همانگونه که در غیبت مقصریم در ظهور موثریم!
نیستیم؟

زیر شمشیر غمش رقص کنان باید رفت #  کان که شد کُشته ی او نیک سرانجام افتاد



 چشمک - بهینه شده برای ورژن جدید دانلود پروژه برنامه نويسي
۲۱-تير-۱۳۹۹, ۱۷:۵۶:۱۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : salehjg, hadikh73


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  کد باز کردن عکس gif در سی شارپ اگه دارید لطفا بهم بدید. game_is_over 2 4,982 ۲۳-خرداد-۱۳۹۶, ۱۲:۴۴:۰۹
آخرین ارسال: sani8888
  برنامه چت در سي شارپ paeezesahar 2 4,525 ۱۰-فروردین-۱۳۹۵, ۰۰:۴۴:۲۹
آخرین ارسال: Ghoghnus
  آموزش مقدماتی سی شارپ به زبان فارسی rastin289 0 2,099 ۰۹-فروردین-۱۳۹۵, ۰۱:۵۷:۰۸
آخرین ارسال: rastin289
  خواندن فایل از وب با سی شارپ Ghoghnus 0 1,958 ۱۹-خرداد-۱۳۹۴, ۰۰:۰۵:۴۱
آخرین ارسال: Ghoghnus
  اتصال به mysqlتحت وب در سی شارپ taksa2012 1 2,875 ۰۵-فروردین-۱۳۹۴, ۱۱:۴۴:۳۶
آخرین ارسال: Ghoghnus
  پردازش تصویر با سی شارپ Lian 3 7,346 ۰۲-فروردین-۱۳۹۴, ۰۲:۵۴:۴۷
آخرین ارسال: rsaghi
  رسم نودار در سی شارپ salmon 1 2,000 ۲۰-آذر-۱۳۹۳, ۱۸:۲۴:۵۳
آخرین ارسال: salehjg
  معادل این دستور تور سی شارپ mehrdad8 1 2,092 ۲۲-اردیبهشت-۱۳۹۳, ۱۴:۵۴:۲۵
آخرین ارسال: Di Di
  عدم وجود کریستال ریپورت در سی شارپ taksa2012 7 4,764 ۲۲-اردیبهشت-۱۳۹۳, ۰۸:۵۹:۵۴
آخرین ارسال: ajlajlajl
  [آموزشی] توابع API ویندوز در سی شارپ Ghoghnus 0 2,245 ۱۲-مهر-۱۳۹۲, ۱۰:۵۰:۰۵
آخرین ارسال: Ghoghnus

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS