개체 인터페이스

Windows는 다음 작업을 수행하는 함수를 제공합니다.

  • 개체 만들기
  • 개체 핸들 가져오기
  • 개체에 대한 정보 가져오기
  • 개체에 대한 정보 설정
  • 개체 핸들 닫기
  • 개체 삭제

이러한 작업 중 일부는 각 개체에 필요하지 않습니다. 이러한 작업 중 일부는 특정 개체에 대해 결합됩니다. 예를 들어 애플리케이션은 이벤트 개체를 만들 수 있습니다. 다른 애플리케이션은 이벤트를 열어 이 이벤트 개체에 대한 고유한 핸들을 가져올 수 있습니다. 각 애플리케이션은 이벤트 사용을 완료하면 개체에 대한 핸들을 닫습니다. 이벤트 개체에 대해 열려 있는 핸들이 남아 있지 않으면 시스템에서 이벤트 개체를 삭제합니다. 반면 애플리케이션은 기존 창 개체에 대한 핸들을 가져올 수 있습니다. 창 개체가 더 이상 필요하지 않은 경우 애플리케이션은 창 핸들을 무효화하는 개체를 삭제해야 합니다.

경우에 따라 모든 개체 핸들이 닫힌 후 개체가 메모리에 유지됩니다. 예를 들어 스레드는 이벤트 개체를 만들고 이벤트 핸들을 기다릴 수 있습니다. 스레드가 대기하는 동안 다른 스레드가 동일한 이벤트 개체 핸들을 닫을 수 있습니다. 이벤트 개체는 이벤트 개체가 신호된 상태로 설정되고 대기 작업이 완료될 때까지 이벤트 개체 핸들 없이 메모리에 남아 있습니다. 이때 시스템은 메모리에서 개체를 제거합니다.

핸들 및 개체는 메모리를 사용합니다. 따라서 시스템 성능을 유지하려면 더 이상 필요하지 않은 즉시 핸들을 닫고 삭제해야 합니다. 이렇게 하지 않으면 페이징 파일의 과도한 사용으로 인해 애플리케이션이 시스템 성능을 저하할 수 있습니다.

프로세스가 종료되면 시스템은 프로세스에서 만든 개체를 자동으로 닫고 삭제합니다. 그러나 스레드가 종료되면 시스템은 일반적으로 핸들을 닫거나 개체를 삭제하지 않습니다. 유일한 예외는 창, 후크, 창 위치 및 DDE(동적 데이터 교환) 대화 개체입니다. 이러한 개체는 만드는 스레드가 종료되면 제거됩니다.