2010-04-23 10 views
5

하나의 프로세스가 32 비트이고 다른 프로세스가 64 비트이면 하위 프로세스가 상위 프로세스에서 핸들을 상속받을 수 있습니까?Windows에서 상속을 처리 할 때 32 비트/64 비트 경계를 넘을 수 있습니까?

HANDLE은 Win64에서 64 비트 유형이고 Win32에서 32 비트 유형입니다. 이는 모든 경우에 가능할 것으로 예상되는 경우조차도 실패 할 수있는 몇 가지 사례가 있음을 나타냅니다. 64 비트 상위 프로세스 , 32 비트 자식 프로세스 및 32 비트로 표현할 수없는 핸들이 있습니다.

또는 32 비트 프로세스에 대한 유일한 방법과 같은 개체에 대한 핸들을 얻을 수있는 64 비트 프로세스 오브젝트 이름을 지정한다?

답변

7

파일 핸들 또는 다른 커널 핸들이면 yes입니다.

그냥 HANDLE 64 비트 타입이지만, 항상 유효한 핸들 값 32 비트 및 뒷면에 변환 할 수있는 발생합니다.

GDI 핸들을 상속 할 수 없습니다. 32 비트에서 변환하는 64 비트 핸들을 처리 할 때

0

네,하지만, 값을 로그인 확장해야합니다. 즉 비트 32-63을 비트 31의 값으로 설정하십시오. 따라서 0x800000000x0000000080000000이 아닌 0xFFFFFFFF80000000이됩니다. 또한 32 비트와 64 비트 핸들 간의 호환성은 사용자 모드 핸들에 대해서만 보장됩니다 (커널 모드에서 실행되는 드라이버 나 드라이버를 작성하지 않는 이상 사용자 모드 핸들에 대해서만 보장됩니다).

다음을 참조하십시오. this SO question and its answer (64 비트 응용 프로그램의 Windows HANDLE 범위는 무엇입니까?)

관련 문제