다음을 통해 공유


실행 중인 문서 테이블

IDE 실행 문서 테이블 (RDT)을 호출 하는 내부 구조에서 현재 열려 있는 모든 문서 목록을 유지 관리 합니다. 이 목록을 이러한 문서가 현재 편집 중인 여부에 관계 없이 메모리에 열려 있는 모든 문서를 포함 합니다. 문서에서 저장된 프로시저 편집기와 파일은 프로젝트에 나의 주 프로젝트 파일 (예를 들어, *.vcproj 파일)을 열을 포함 하 여 유지 되는 항목입니다.

실행 중인 문서 테이블의 요소

실행 문서 테이블에는 다음과 같은 항목이 포함 되어 있습니다.

요소

설명

문서 모니커

문서 데이터 개체를 고유 하 게 식별 하는 문자열입니다. 이 파일 (예: C:\MyProject\MyFile)을 관리 하는 프로젝트 시스템에 대 한 절대 파일 경로입니다. 이 문자열 저장된 프로시저는 데이터베이스에서와 같은 파일 시스템 이외의 다른 저장소에 저장 된 프로젝트에도 사용 됩니다. 이 경우 프로젝트 시스템 인식 하 고 가능한 경우 문서를 저장 하는 방법을 확인 하려면 구문 분석 하는 고유한 문자열을 만들 수 있습니다.

소유자 계층 구조

표시 되는 문서를 소유 하는 계층 구조 개체는 IVsHierarchy 인터페이스입니다.

항목 ID

계층 내에서 특정 항목에 대 한 항목 id입니다. 이 값은 모든 문서에서이 문서를 소유한 계층 간에 고유입니다 하지만이 값이 다른 계층 구조 간에 고유 해야 않을.

문서 데이터 개체

최소한이 되는IUnknown

개체입니다. IDE는 특정 인터페이스 외 필요 하지 않습니다을 IUnknown 사용자 지정 편집기의 문서 데이터 개체에 대 한 인터페이스. 그러나 표준 편집기에 대 한 편집기의 구현을 IVsPersistDocData2 프로젝트에서 파일 지 속성 호출을 처리 하려면 인터페이스 필요 합니다. 자세한 내용은 표준 문서를 저장합니다.를 참조하십시오.

Flags

RDT에 항목을 추가할 때 편집 또는 읽기 잠금이 적용 된 여부에 관계 없이 문서 저장 여부를 제어 하는 플래그 등을 지정할 수 있습니다. 자세한 내용은 _VSRDTFLAGS 열거형을 참조하십시오.

잠금 횟수를 편집 합니다.

편집 잠금 수입니다. 편집 잠금 일부 편집기에 문서를 편집 하기 위해 열어 있음을 나타냅니다. 편집 잠금 횟수가 0으로 전환 하는 경우 수정 된 경우 사용자 문서를 저장 하 라는 메시지가 표시 됩니다. 예를 들어, 편집기를 사용 하 여 문서를 열 때마다 해당 새 창 명령을 편집 잠금에 RDT는 해당 문서에 대 한 추가 됩니다. 설정 될 수 있는 편집 잠금에 대 한 순서 대로 문서 해야 또는 계층이 있습니다 항목 id입니다.

읽기 잠금 수

읽기 잠금을의 개수를 계산 합니다. 읽기 잠금을 하는 마법사와 같은 메커니즘을 통해 문서를 읽는 것을 나타냅니다. 읽기 잠금을 문서 살아 있는 RDT에서 문서를 편집할 수 없습니다 나타내는 동안 저장 됩니다. 문서에 계층 구조가 있는 또는 id가 항목을 하지 경우에 읽기 잠금을 설정할 수 있습니다. 이 기능은 메모리에 문서를 열고 모든 계층 구조에 의해 소유 되 고 문서 없이 RDT에서 입력 수 있습니다. 이 기능은 거의 사용 되지.

잠금 소유자

인스턴스는 IVsDocumentLockHolder 인터페이스입니다. 잠금 소유자가 편집기 외부에서 문서 열기 및 편집 마법사와 같은 기능에 의해 구현 됩니다. 잠금 소유자 편집 잠금 문서 여전히 편집 하는 동안 폐쇄 되 고를 방지 하기 위해 문서에 추가 하는 기능을 수 있습니다. 일반적으로 편집 잠금 문서 windows (예: 편집기)에 추가 합니다.

RDT는 각 항목 마다 고유한 계층 또는 일반적으로 프로젝트의 노드 중 하나가 해당 관련 항목 ID가 있습니다. 일반적으로 모든 문서 편집에 사용할 수 있는 계층 구조에서 소유 합니다. RDT에서 변경한 항목은 프로젝트 제어 또는-더 정확 하 게-현재 소유 하 고 편집 하 고 문서 데이터 개체는 계층 구조입니다. RDT에서 정보를 사용 하 여 한 번에 둘 이상의 프로젝트에 열 중인 IDE 문서를 방지할 수 있습니다.

계층 구조 또한 데이터의 지 속성을 제어 하 고 RDT에서 정보를 사용 하 여 업데이트 하는 저장으로 저장 대화 상자. 때 사용자가 문서를 수정 하 고 선택은 종료 명령에서 파일 메뉴에서 IDE 표시 된는 변경 내용 저장 프로젝트와 현재 수정 된 프로젝트 항목을 모두 표시 하는 대화 상자. 이 사용자가 저장할 수 있는 문서 중에서 선택할 수 있습니다. 저장할 수 있는 문서 목록 (변경 된 해당 문서) RDT에서 생성 됩니다. 볼 것으로 예상 되는 항목은 변경 내용 저장 응용 프로그램을 종료할 때 대화 상자가 RDT에서 레코드를 가져야 합니다. RDT는 어떤 문서를 저장할 및 저장에 대 한 사용자 요청 여부 좌표 플래그 항목 각 문서에 지정 된 값을 사용 하 여 작업 합니다. RDT 플래그에 대 한 자세한 내용은 참조 하십시오 있는 _VSRDTFLAGS 열거형입니다.

잠금 및 읽기 잠금 편집

편집 잠금 및 읽기 잠금을 RDT에서 상주합니다. 문서 창이 증가 하 고 감소 편집을 잠급니다. 따라서, 사용자가 새 문서 창이 열리면 편집 잠금 횟수 증가 하 여. 편집 잠금 수가 0이 되 면 계층 구조 신호를 유지 하거나 연결 된 문서에 대 한 데이터를 저장 합니다. 다음 계층 유지 저장소에 있는 항목 또는 파일을 포함 하 여 어떤 방식으로 데이터를 유지할 수 있습니다. 사용할 수는 LockDocument 메서드에서 IVsRunningDocumentTable 인터페이스 편집 잠금을 추가 하 고, 읽기 하는 UnlockDocument 이러한 잠금을 제거 하는 방법.

일반적으로 편집기의 문서 창을 인스턴스화할 때 창 프레임 문서에 대 한 편집 잠금을 RDT에 자동 추가 됩니다. 문서의 사용자 지정 보기를 만들 경우,는 표준 문서 창을 사용 하지 않습니다 (구현 하지 않는, 즉의 IVsWindowFrame 인터페이스), 직접 편집 잠금 설정 해야 합니다. 예를 들어, 마법사를 문서 편집기에서 열지 않고 편집 합니다. 마법사와 비슷한 엔터티에 의해 열려는 문서 잠금에 대 한 순서로 이러한 엔터티를 구현 해야 합니다는 IVsDocumentLockHolder 인터페이스입니다. 문서 잠금 소유자를 등록 하기 위해 호출을 RegisterDocumentLockHolder 메서드 및 패스에서를 IVsDocumentLockHolder 구현 합니다. 이렇게 하면 문서 잠금 소유자 RDT를 추가 합니다. 특수 도구 창을 통해 문서를 열 경우 문서의 잠금 소유자를 구현 하는 또 다른 시나리오가입니다. 이 들어, 하면 문서를 닫기 도구 창이 있는 수 없는.입니다. 그러나 문서 잠금 홀더는 RDT의로 등록 하 여 IDE의 구현을 호출할 수 있습니다 해당 CloseDocumentHolder 메서드는 문서 닫기 메시지를 표시 하도록 합니다.

실행 중인 문서 테이블의 다른 용도

RDT는 IDE에서 다른 엔터티를 사용 하 여 문서에 대 한 정보를 얻을 수 있습니다. 예를 들어, 소스 제어 관리자 시스템 파일의 최신 버전을 얻으면 편집기에서 문서를 다시 로드 하 여 RDT를 사용 합니다. 이 작업을 수행 하려면 소스 제어 관리자 파일을 열려 있는지 확인 하려면 RDT에서 조회 합니다. 경우 소스 제어 관리자 먼저 계층 구조를 구현 하는지 확인 하는 ReloadItem 메서드. 프로젝트를 구현 하지 않는 경우는 ReloadItem 메서드를 다음 소스 제어의 구현에 대 한 관리자 검사는 ReloadDocData 직접 문서 데이터 개체 메서드를.

IDE는 또한 resurface 수는 RDT를 사용 (앞으로 가져오기) 열린 문서에서 사용자가 해당 문서를 요청 하는 경우. 자세한 내용은 파일 열기 명령 사용 하 여 파일을 표시 합니다.를 참조하십시오. 파일 RDT에서 열려 있는지 여부를 확인 하려면 하나가 다음을 수행 합니다.

  • 쿼리 문서 모니커 (문서의 전체 경로) 항목이 열려 있는지 확인 하십시오.

  • 계층 구조 또는 항목 ID를 사용 하 여 프로젝트 시스템 전체 문서 경로 대 한 요청 및 다음 항목 RDT에서 조회할 수 있습니다.

참고 항목

참조

OpenItem

CreateDocumentWindow

개념

계층 구조에서 Visual Studio

프로젝트 형식의 필수 정보