정보: 전화 Shell 함수 및 다중 스레드 아파트에서 인터페이스

기술 자료 번역 기술 자료 번역
기술 자료: 287087 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

호출하거나 다중 스레드 아파트 같이 초기화되지 않은 스레드에서 셸 함수 또는 셸 인터페이스를 액세스할 때 함수나 인터페이스 있습니다 장애가 해당 기능이 또는 완전히 실패할.

추가 정보

CoInitializeEx(COINIT_MULTITHREADED) 호출하면을 호출 스레드에서 만든 개체 호출하여를 모든 스레드에서 실행할 수 있습니다. 아파트 스레딩 다중 스레드 아파트 모델을 사용하는 개체를 액세스할 때 COM 개체에 대한 액세스를 동기화합니다. 이 동기화 발생할 순서로 COM 개체에 호출을 마샬링하는 합니다. 셸은 현재 필요한 정보를 제공하지 않기 때문에 형식 라이브러리 또는 프록시/스텁 통해 마샬링될 수, 해당 개체에 대한 코드를 에서 다중 스레드 아파트 실패 셸 개체에 액세스하려고 시도합니다.

어떻게 CoInitializeEx(COINIT_MULTITHREADED) 호출을 셸 개체에 의존하는 함수에 영향을 줄 수 있는 예는 다음과 같습니다.

GetOpenFileName/GetSaveFileName
사용자가 열기다른 이름으로 저장 대화 상자를 통해 "내 문서" 와 같은 네임스페이스 확장 폴더를 이동할 수 있습니다. 그러나 브라우저에서 IShellFolder 같은 필수 인터페이스를 만들 수 없기 때문에 위해 이러한 폴더는 탐색할 수 없습니다.
ShellExecute/ShellExecuteEx
ShellExecute 후크는 IShellExecuteHook 인터페이스를 구현하여 ShellExecute/ShellExecuteEx의 기능을 확장하는 쓸 수 있습니다. ShellExecute/ShellExecuteEx 호출될 때 등록된 ShellExecute 후크는 로드할 수 없습니다.
두 이 예제를, CoCreateInstance, IUnknown::QueryInterface, 셸 개체에 대한 인터페이스 포인터를 얻는 등의 시도하는 구성 일반적으로 다중 스레드 아파트를 에서 호출할 때 E_NOINTERFACE 오류와 함께 실패합니다. 그 이유는 위에서 언급한 대로 요청되는 개체에 대한 형식 정보 또는 프록시/스텁 코드가 것입니다.

참조

"프로세스, 스레드 및 아파트," 에서 COM 기본 플랫폼 SDK 설명서:
http://msdn.microsoft.com/en-us/library/ms693344(VS.85).aspx

속성

기술 자료: 287087 - 마지막 검토: 2005년 7월 11일 월요일 - 수정: 1.4
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Platform Software Development Kit-January 2000 Edition
키워드:?
kbmt kbinfo kbpending kbshellgrp KB287087 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com