Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Runtime.InteropServices;
- [DllImport("winmm.dll")]
- static extern Int32 mciSendString(String command, StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);
- // To open the door
- mciSendString("set CDAudio door open", null, 0, IntPtr.Zero);
- // To close the door
- mciSendString("set CDAudio door closed", null, 0, IntPtr.Zero);
- using System;
- using System.IO;
- using System.Runtime.InteropServices;
- class Test
- {
- const int OPEN_EXISTING = 3;
- const uint GENERIC_READ = 0x80000000;
- const uint GENERIC_WRITE = 0x40000000;
- const uint IOCTL_STORAGE_EJECT_MEDIA = 2967560;
- [DllImport("kernel32")]
- private static extern IntPtr CreateFile
- (string filename, uint desiredAccess,
- uint shareMode, IntPtr securityAttributes,
- int creationDisposition, int flagsAndAttributes,
- IntPtr templateFile);
- [DllImport("kernel32")]
- private static extern int DeviceIoControl
- (IntPtr deviceHandle, uint ioControlCode,
- IntPtr inBuffer, int inBufferSize,
- IntPtr outBuffer, int outBufferSize,
- ref int bytesReturned, IntPtr overlapped);
- [DllImport("kernel32")]
- private static extern int CloseHandle(IntPtr handle);
- static void EjectMedia(char driveLetter)
- {
- string path = "\\.\" + driveLetter + ":";
- IntPtr handle = CreateFile(path, GENERIC_READ | GENERIC_WRITE, 0,
- IntPtr.Zero, OPEN_EXISTING, 0,
- IntPtr.Zero);
- if ((long) handle == -1)
- {
- throw new IOException("Unable to open drive " + driveLetter);
- }
- int dummy = 0;
- DeviceIoControl(handle, IOCTL_STORAGE_EJECT_MEDIA, IntPtr.Zero, 0,
- IntPtr.Zero, 0, ref dummy, IntPtr.Zero);
- CloseHandle(handle);
- }
- static void Main()
- {
- EjectMedia('f');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement