2009-10-05 2 views
6

WinSxS를 사용하여 배포 된 mydll.dll에 모듈을 연결하면 모듈의 PE 헤더가 단순히 "mydll.dll"을 참조합니다. Windows는 어떻게 런타임에 WinSxS를 통해이 종속성을로드해야하는지, 둘째로 어셈블리가 무엇인지 결정합니다.WinSxS는 DLL 이름을 DLL 위치로 어떻게 변환합니까?

+0

매니페스트 파일에 별도로 지정하지 않는 한 가장 좋은 추측으로 DLL의 한 버전이 기본값으로 설정되어 있습니다. – Powerlord

+0

나는 이것이 슈퍼 유저가 아니라 그렇게 생각한다. –

+1

왜? 그것은 프로그래밍에 많은 관련이 있습니다 (독자의 90 %가 SxS가 무엇인지 또는 어떻게 작동하는지 이해하지 못하는 최근/이야기로서). –

답변

7

"활성화 컨텍스트"를 통해 그렇게합니다. 제 생각에 WinSxS는 활성화 컨텍스트와 관리 방법에 대해 알기 전까지는 이해가되지 않습니다.

http://omnicognate.wordpress.com/2009/10/05/winsxs/에 세부 정보를 설명하는 다소 오랜 블로그 게시물을 올렸습니다.

이 기사를 요약하면 활성화 컨텍스트는 WinSxS가 런타임에 버전없는 개체 이름 (예 : DLL 이름)을 찾는 방법에 대한 전체 정보를 확인하기 위해 사용하는 구조입니다. WinSxS의 "매니페스트"의 목적은 활성화 컨텍스트를 구성하는 것입니다. 이러한 활성화 컨텍스트가 어떻게 구성되는지, 그리고 언제 어떻게 관리되는지 (스레드 로컬 스택에 보관되는지) 이해하지 못하면 WinSxS를 통해 DLL을로드하는 단계를 추론 할 수 없으므로 진단 할 수 없습니다 발생할 수있는 대부분의 문제.

+0

이 기사는 메타에 대한 제안으로 인해 Q/A 형식으로 게시되었습니다 : http://meta.stackexchange.com/questions/24608/what-is-the-etiquette-for-posting-an-article. –

+0

참고 : 필자는 관련성을 입증하기 위해 기사에 최소한 약간의 답을 달 것을 제안합니다. –