2011-08-23 4 views

답변

3

mdToken은 메타 데이터 토큰이거나 메타 데이터 테이블의 행 ID입니다 (int의 일부는 해당 테이블을 식별하고 다른 부분은 해당 테이블의 행을 식별 함).

내부 및 외부의 두 가지 유형의 토큰이 있습니다.

내부 토큰은 외부보다 작으며 행 ID는 3 바이트이고 테이블 ID는 1 바이트 인 4 바이트 만 사용됩니다. (x64의 경우 이러한 크기가 변경된 것은 확실하지 않지만 아이디어는 얻을 수 있습니다.) 예 : 메서드 테이블의 첫 번째 행 (0부터 시작)은 0x06000000입니다.

외부 토큰 (또는 코드화 된 토큰)이 더 크고 특정 테이블이 아닌 테이블 범위에 해당됩니다. 여러 가지 코드화 된 토큰 유형이 있으며 코딩 된 값을 이해하기 위해 알아야하는 스키마가 알려져 있습니다. 예를 들어 HasCustomAttribute 토큰은 19 개의 메타 데이터 테이블 중 하나에 대한 토큰이 될 수 있습니다 (속성은 코드의 여러 부분에 첨부 될 수 있기 때문에). 코딩 된 토큰의 일부는 태그라고도하는 테이블의 ID입니다 (그러나이 부분을 유지하는 데 사용되는 비트 폭은 각기 다르므로 알려진 스키마). 나머지 부분은 행 ID로 남습니다. 외부 토큰의 크기는 다양 할 수 있습니다. 행 수가 적을 때 크기를 더 작게 유지하는 데 도움이됩니다.

관련 문제