zoukankan      html  css  js  c++  java
  • win32

    #include <tchar.h>
    #include <windows.h>
    #include <mmsystem.h> // for MCI functions
    
    // Link to winmm.lib (usually included in project settings)
    #pragma comment(lib, "winmm")
    
    void ControlCdTray(TCHAR drive, DWORD command)
    {
        // Not used here, only for debug
        MCIERROR mciError = 0;
    
        // Flags for MCI command
        DWORD mciFlags = MCI_WAIT | MCI_OPEN_SHAREABLE | 
            MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT;
    
        // Open drive device and get device ID
        TCHAR elementName[] = { drive };
        MCI_OPEN_PARMS mciOpenParms = { 0 };
        mciOpenParms.lpstrDeviceType = (LPCTSTR)MCI_DEVTYPE_CD_AUDIO;
        mciOpenParms.lpstrElementName = elementName;    
        mciError = mciSendCommand(0, 
            MCI_OPEN, mciFlags, (DWORD_PTR)&mciOpenParms);
    
        // Eject or close tray using device ID
        MCI_SET_PARMS mciSetParms = { 0 };
        mciFlags = MCI_WAIT | command; // command is sent by caller
        mciError = mciSendCommand(mciOpenParms.wDeviceID, 
            MCI_SET, mciFlags, (DWORD_PTR)&mciSetParms);
        
        // Close device ID
        mciFlags = MCI_WAIT;
        MCI_GENERIC_PARMS mciGenericParms = { 0 };
        mciError = mciSendCommand(mciOpenParms.wDeviceID, 
            MCI_CLOSE, mciFlags, (DWORD_PTR)&mciGenericParms);
    }
    
    // Eject drive tray
    void EjectCdTray(TCHAR drive)
    {
        ControlCdTray(drive, MCI_SET_DOOR_OPEN);
    }
    
    // Retract drive tray
    void CloseCdTray(TCHAR drive)
    {
        ControlCdTray(drive, MCI_SET_DOOR_CLOSED);
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        EjectCdTray(TEXT('E')); // drive letter hardcoded
        CloseCdTray(TEXT('E'));
    
        return 0;
    }
    #include <windows.h>  
    #include <tchar.h>  
    #include <stdio.h>  
    
    int _tmain() 
    { 
       DWORD dwBytes; 
       HANDLE hCdRom = CreateFile(_T("\\.\M:"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); 
       if (hCdRom == INVALID_HANDLE_VALUE) 
       { 
         _tprintf(_T("Error: %x"), GetLastError()); 
         return 1; 
       } 
    
       // Open the door:  
       DeviceIoControl(hCdRom, IOCTL_STORAGE_EJECT_MEDIA, NULL, 0, NULL, 0, &dwBytes, NULL); 
    
       Sleep(1000); 
    
       // Close the door:  
       DeviceIoControl(hCdRom, IOCTL_STORAGE_LOAD_MEDIA, NULL, 0, NULL, 0, &dwBytes, NULL); 
    
       CloseHandle(hCdRom); 
    } 
  • 相关阅读:
    简单小过一个crc
    BUUCTF-RE-babymips
    为IDA插件findcrypt添加更多规则
    2020网鼎杯第一场青龙组re部分wp
    HexionCTF2020 部分wp
    TGhack2020 re&misc
    java反射总结
    BUUCTF-RE-CrackMe
    青年大学习直接出图片的软件出了bug,用frida干他
    小玩具Teensy
  • 原文地址:https://www.cnblogs.com/strive-sun/p/14242598.html
Copyright © 2011-2022 走看看