2011-04-14 3 views
7

나는 IntPtr을 읽고 핸들을 나타내는 데 사용된다는 것을 읽었습니다. 이것은 정확히 무엇을 의미합니까? 나는 그것이 단순한 설명 일 것이라고 확신하지만 전구는 그 순간에 켜지지 않을뿐입니다.핸들은 무엇입니까? IntPtr

+0

중복 질문 : http://stackoverflow.com/questions/1148177/just-what-is-an-intptr-exactly – HABJAN

+0

@Habjan : 아닙니다. OP는 핸들에 대해 묻는 반면, 그 질문은 'IntPtr'에 대해 묻습니다. – Mehrdad

+0

[HANDLE이 가리키는 구조체]의 중복 가능. (http://stackoverflow.com/questions/5343660/struct-which-a-handle-points-to) – Gabe

답변

6

이것은 일반적으로 운영 체제 핸들을 참조하며 내부적으로 사용됩니다. 예를 들어, Windows Forms는 IntPtr을 사용하여 컨트롤의 기본 윈도우 핸들 (HWND)을 나타냅니다.

Windows API의 핸들은 많은 것들에 사용됩니다. 대부분의 운영 체제 관련 리소스 (파일, 소켓, 창 등)는 모두 포인터를 통해 핸들에 노출되어 있습니다. 관리 코드에서이 값은 IntPtr에 저장됩니다.

즉, IntPtr은 32 비트 또는 64 비트 코드를 기반으로 자동으로 크기가 변경되므로 interop 시나리오에도 포인터를 저장하는 데 정기적으로 사용됩니다.

+0

+! Windows API 메소드에서 가장 많이 사용되는 HWND를 사용합니다. 이것은 솔직히 정말 좋은 대답입니다. –

6

"핸들"은 "불투명 한 포인터"입니다. 이것은 운영체제가 실제 객체에 대한 포인터를 제공하는 대신 내부 객체를 나타내는 애플리케이션에주는 값 (일반적으로 배열에 대한 인덱스)입니다. 이것은 안전성과 추상성을 이유로 사용됩니다. 응용 프로그램이 제공된 API를 통해서만 핸들을 사용하도록합니다.

관련 문제