리눅스 박스가있는 네트워크를 통해 연결된 MacOSX (Windows는 이미 실행 중) 용 가상 USB 버스 드라이버에서 작업하고 있습니다. 10.6 및 10.7에서 대용량 저장 장치 및 마우스 또는 키보드와 같은 HID 장치를 사용하면 정상적으로 작동합니다.kext는 10.7 언로드에 실패했지만 10.6은 작동하지 않습니다.
그러나 장치를 제거하거나 플러그를 뽑으면 더 쉽게 꺼낼 수 있습니다. HID 장치 은 10.7 (.5) 미만이므로 인스턴스가 남아 있습니다 (분리 후 보유 수는 0이되지 않음). 내 10.6 및 10.7 테스트 환경은 동일하게 MacBooksPro 8.2 i7입니다.
간혹 (5 ~ 50 분 후) kext가 내 옆에서 아무런 행동없이 자유롭게됩니다. 전원 모드가 바뀌지 않는 것 같습니다.
네, USBFamily 로깅 LIB 출력을 많이 가지고 있지만, (kextunload 확인) 작업 실행을 작동하지 않는 사이에 난 때문에 대용량 저장 장치의 로깅 수준을 7
과 함께 loggings의 차이를 찾을 장치가 잘 작동하는 것처럼 보입니다. 문제는 10.7 이하의 HID 드라이버 스택 안에 있다고 생각합니까?
10.6과 10.7 사이의 USB HID 장치 드라이버 스택을 제거하는 데있어 알려진 차이점이 있습니까?
내 kext는 실제 (원격 Linux 상자에) USB 장치에 연결된 USBDevice를 설정/생성하는 (가상) ControllerV3 파생 클래스입니다. XCode 사용하기 4.4.1. 어떤 아이디어 나 힌트에 미리
감사합니다, 관련 마르쿠스
추신 : 10.7에서 많은 HID 객체가 드라이버 스택의 상단에있는 것을 나에게 조금 이상한 보인다. kextunload (실패 "..VirDevice 1 인스턴스가") 이후 그들은 여전히 살아있는 것. 하지만 이것은 100 %로 로컬 연결 및 분리 된 Logitech 마우스와 동일합니다.
저로부터 저는 IOUSBDevice에서 파생 된 객체 인 MsVirBus (가상 USB 버스, IOUSBControllerV3에서 파생 됨)와 Mouse @ xaffe003f만이 가장 낮습니다.
건설적인 제안에 많은 감사드립니다! 레지스트리가 정리 된 것 같습니다. 드라이버 스택 맨 위에는 여전히 재미있는 HID 객체가 많이 있지만, 플러그 앤 플러그되지 않은 로컬 마우스 (똑같은 광학로 연결된 Logitech 마우스를 사용합니다)와 똑같습니다. 여기에 사진을 추가하는 방법을 모르겠다. 어쩌면 kextunload 이후 스택을 보는 것이 중요 할 것이다. –
taggedRetain/Release 메소드를 오버라이드하는 것은 좋은 생각입니다. 월요일에 시도하고 e 피드백을 가능한 빨리 추가 할 것입니다. 다른 이상한 점은 "... has 1 instance"오류로 언로드 한 후 kext를 다시로드 할 수 있다는 것입니다. 언로드 두 번째 시간은 인스턴트 카운트 "1"로 동일하게 오류입니다. –
안녕하세요, 도움을 요청하기 전에 이미 내 로그에 getRetainCount() 정보를 추가했지만 제시 한 오버로드 방식은 훨씬 더 똑똑합니다. 지금까지 백 트레이스가 작동하지 않고 시스템이 바쁜 마우스 포인터 (회전 된 공)로 멈 춥니 다.하지만 USBLogger를 사용하기 때문에 OSDebug에 대한 작업이 조금 더 있습니다. 카운터의 결과는 예상대로입니다 : 10.6의 경우 0으로 내려 가고 10.7의 경우 오류의 경우 1로 이동합니다. RetainCounter는 USBDevice :: start 후에 성공적으로 일치하고 드라이버 스택을 확립 한 후에 달라진 것 같습니다. –