2017-02-15 13 views
3

Windows 데스크톱 시스템에서 사용할 USB 기반 주변 장치를 개발 중이며 드라이버 설치 단계를 피하는 것이 좋습니다. 부분적으로 사용자 지정 드라이버를 개발하고 서명하는 데 필요한 리소스로 인해 일부는 타사 드라이버로 인해 사용자에게 중대한 걸림돌이되었습니다.드라이버가 필요없는 I/O 용 USB 대용량 저장 클래스 악용

표준 USB 장치 클래스의 사용을 제안합니다. HID는 간단하고 유연하지만 MCU 관련 제한 사항으로 인해 처리량이 저하됩니다. 대신 대량 저장 장치를 가장하는 계획을 평가하고 있습니다.

숨겨진 장치 I/O 파일이 들어있는 FAT 파일 시스템에 대한 메타 데이터를보고하는 트릭으로, 인터페이스 응용 프로그램은 원시 파일 버퍼링되지 않은 I/O를 사용하여 통신합니다. 유선 I/O 파일 섹터 외부의 모든 데이터는 열거로 RAM으로 다시로드되어 무시됩니다.

지금까지 테스트 한 모든 시스템에서 잘 최적화 된 경로를 통해 빠른 I/O 및 열거를 통해 놀라 울 정도로 원활하게 작동했으며 권한 상승은 없었습니다. 그러나 은 분명히 시스템의 남용이며 Windows에서 I/O 데이터가 일관성없이 다시 읽혀지고 있음을 감지하고 클러스터 체인을 조각 모음하고 exFAT로 다시 포맷하는 등의 작업을 결정하면 넘어 질 수 있습니다.

제 질문은 이러한 시나리오가 실제로 발생하는지 또는 가까운 미래에 발생할 가능성이 있는지 여부입니다. 그런 계획이 과거에 시도 되었습니까? dodgy USB 대용량 저장 장치의 수량이 운영체제에 대한 효과적인 방패가 될 것입니까?

마지막으로,보다 안정적인 대안으로 생각할 수있는 다른 표준 USB 클래스 또는 접근법이 있습니까? Windows 10은 마침내 표준 CDC 지원을 추가했지만 이전 버전을 지원하면 서명 된 드라이버 설치를 건너 뛰었을뿐 아니라 BSOD의 기록, 임의 연결 해제 및 열거 오류로 인해 가상 직렬 장치에주의해야합니다.

+0

아마도 CDC 클래스/VCOM 장치를 고려해보십시오. 꽤 중요한 모든 OS가 기본적으로 이것을 지원합니다 (win7은 .inf 파일이 필요할 수도 있습니다). –

+1

@Russ Schultz : 감사합니다. 필자가 실험 한 마지막 순간부터 Windows 10 이전에는 기본 제공 드라이버를 참조하는 동안에도 서명 된 INF 파일이 필요했습니다 (https://msdn.microsoft.com/en-us/library/ 참조). windows/hardware/dn707976 (v = vs.85) .aspx). – doynax

+0

. sys 파일은 서명되었지만 .inf는 단순한 텍스트 파일입니다. –

답변

1

MS OS 2.0 Descriptors을 고려해보십시오. 기본적으로 USB 장치에 몇 가지 특수 요청과 설명자를 추가하여 Windows 8.1 이상에서 장치에 대해 WinUSB를 자동으로 사용하도록 지시 할 수 있습니다. WinUSB가 설치되면 libusblibusbp과 같은 라이브러리를 사용하여 장치에 액세스하거나 WinUSB API를 직접 사용할 수 있습니다.

Windows 7 이하 사용자의 경우 서명 된 INF 전용 드라이버를 제공 할 수 있습니다.이 드라이버는 너무 어렵거나 비싸지 않습니다. 그것에 대해 쓴 document을 참조하십시오. 또는, WinUSB를 설치하기 위해 Zadig과 같은 유틸리티를 사용하도록 말할 수 있습니다. Zadig는 자체 루트 인증서를 생성하고이를 사용자의 컴퓨터에 신뢰할 수있는 루트 인증서로 설치하여 드라이버 요구 사항을 해결합니다.

+0

감사합니다! WinUSB를 통한 독점적 인 USB 통신에 대한 접근은 매우 매력적이며 나는 그것을 시험해야 할 것입니다. 이전 Windows 릴리스의 처리는 여전히 대기 상태이지만 수동 설치 단계 또는 권한 상승없이 신뢰할 수있는 자동 열거 및 사용법 인 true _plug-and-play_에 대한 잠재력은 지나치게 좋지 않습니다. 아무것도없는 경우 대체 전송 계층이 확실히 신중해야합니다. – doynax