2009년 7월 13일 월요일

USB Device batch 파일로 안전제거하기..

안녕하십니까?

연구소, 연구소장 전진우 입니다 ^^

이번에는 흥미로운 주제를 다뤄볼까요?

USB에 연결되는 장치를 터미널 상에서 제거하는 방법을 알려드리겠습니다.


일반적으로 우리가 USB 장치를 그냥 무심코 USB 슬롯에서 빼는 경우가 많습니다.

USB 장치에서 파일을 옮긴다거나, 아니면 OS가 USB장치와 통신을 하고 있는 중에

빼버린다면...

데이터가 유실되거나, USB 장치에 무리를 줄수 있답니다.


이럴경우 매우 좋은 방법이 있는데..

아래와 같이 안전하게 USB 하드웨어를 제거하는 방법입니다.



이렇게 제거를 하고 USB를 슬롯에서 뽑을 경우 매우 안전하게 USB를 사용할 수 있다는 것이죠.



그런데, 간혹 이 일을 마우스 더블클릭으로 한번에 해결 하거나,

특정 프로그램에서 버튼을 클릭함으로 제거되게 하고 싶은 분들이 계신단 말이죠.

특히, 저 같이 교수님이 칠판에 써주신 E-Mail 주소를 노트에 적기 싫어서

휴대폰을 꺼내 사진으로 찍어가는 사람같은 분들이 계신다는 것이죠 ^^



각 설하고 방법을 알아봅시다.

그럼 어떻게 하면 더블클릭으로 또는 프로그램에 심어서 해결할 수 있을까??

방법은 몇가지 있습니다.

1. Win32에서 제공해주는 API를 사용해서 USB 창치를 Enumeration 한뒤, 그중에 내가 원하는 장치를 Remove 해주는 방법이 있습니다.

2. MS에서 제공해주는 유틸리티인 devcon.exe를 사용하는 방법이 있습니다.


오늘은 2번째를 이용해볼 텐데요..

1번째 방법은 CreateFIle을 이용해서 드라이버를 로드하고 언로드하는 방법임으로,

나중에 프로그래밍 파트에서 다루도록하겠습니다.


자.. 이제 따라 해볼까요?

시작 버튼 -> 실행 -> cmd.exe <엔터>



이거 뭐지... devcon.exe 파일은 윈도우에서 제공해주는게 아닌가 -_-;!!!



그렇습니다.

devcon.exe 파일은 유틸리티로 MS에서 따로 제공해준답니다.

아래 링크를 따라서 다운로드 받으시길 바랍니다.




죠기 가운데 Download the DevCon package now. 라는 글자가 있죠?

그대로 다운로드 받으시면 됩니다.


다운로드 받으시면 devcon.exe 이 다운로드 됩니다.

그런데, 사실 이 파일은 winzip 파일입니다 더블클릭 하셔서 'c:\devcon' 디렉터리에 풀어주십시오.




그 다음 이제 'c:\devcon' 으로 들어가봐야 겠죠?


뭐지???

나는 dir 치면 바로 devcon.exe 파일이 날 반겨줄줄 알았는데 ㅎㅎ i386방까지 들어가 봐야 겠네요..


빙고! i386 방에 있었군요.


자 이제 devcon.exe 를 사용해보겠습니다.

일단 제가 USB LG XTick 를 테스트용으로 사용해보겠습니다.


먼저 USB LG XTick를 꽂습니다.

그리고,

 c:\devcon\i386> devcon status * <엔터>



죽~~ 글자가 올라가고, 마지막에 보면 제가 꽂은 USB 메모리 스틱이 있는것을 알 수가 있습니다.

자 이름을 찾으셨다면 이제 아래와 같이 해줍니다.

c:\devcon\i386> devcon remove usbstor\disk* <엔터>


제거가 됬습니다.


시스템 -> 등록정보 -> 장치관리자 에서도 찾을수가 없습니다.


아주 간단하게 제거가 되었습니다.




자 이제 배치 파일을 만들어 볼까요?

메모장을 열어서 아래와 같이 적어 줍니다.




그리고 아래와 같이 저장합니다.

저장하실때 꼭 '파일 형식(T)' 를 '모든 파일'로 선택하시고,

파일 이름 뒤에 '.bat' 를 붙여 주십시오.



자 이제 저장까지 끝났습니다.



앞으로는 아래 'usb안전제거.bat'를 더블클릭 하시면, 한방에 제거 가능합니다.




여담으로 MFC나 Win32 에서 사용하실 때는

WinExec 함수나, CreateProcess 함수를 이용해서 batch 파일을 실행 하거나.

devcon.exe 파일을 직접 실행하게 해서 프로그램에 심을 수 있겠습니다.

^^


댓글 5개:

  1. 제가 필요한 기능을 이제야 찾긴 했는데



    전부 똑 같이 따라 했는데 왜 안되는 거죠?.....ㅠ

    답글삭제
  2. devcon remove USBSTOR\DISK*

    이렇게 했습니다.



    제거는 잘 되는것 같은데

    USB를 다시 장착했을때 '새 하드웨어 발견'을 해서

    설치를 다시하는 절차를 매번 반복하네요.



    마우스를 사용해서 '하드웨어 안전제거'를 하게되면

    제거 후 다시 장착시 설치하는 절차가 없는데 말이죠...



    방법이 없을까요?

    답글삭제
  3. @탕골드 - 2009/09/17 12:49
    음..

    조금더 생각을 해봐야되겠네요..



    방법을 찾아보겠습니다 ^^

    답글삭제
  4. devcon disable InstanceID

    답글삭제
  5. devcon disable InstanceID 이걸 쓰면 단점이
    enable 하기 전에는 다시 인식하지를 않네요 ㅎㅎ
    그래서 disable 하고 enable 하는 방법도 있겟네요..

    답글삭제