인쇄 모니터 초기화

스풀러가 LoadLibrary를 호출하여 인쇄 모니터 DLL을 로드하면 시스템은 DLL의 DllEntryPoint 함수를 즉시 호출합니다. 일반적으로 진입점 함수가 DisableThreadLibraryCalls를 호출하는 것이 좋습니다. 따라서 스레드를 만들고 삭제할 때 DLL이 불필요하게 알림을 받지 않습니다.

각 DLL은 LoadLibrary를 호출한 후 스풀러가 호출하는 초기화 함수를 내보냅니다. 언어 모니터 DLL 및 포트 모니터 서버 DLL은 InitializePrintMonitor2 함수를 내보냅니다. 포트 모니터 UI DLL은 InitializePrintMonitorUI 함수를 내보 냅니다.

이러한 두 초기화 함수는 인쇄 모니터에서 정의한 나머지 함수에 대한 포인터를 반환하므로 스풀러는 이를 호출할 수 있습니다. 초기화 함수는 로드 시간 초기화 작업을 수행할 수도 있습니다. 모니터의 InitializePrintMonitor2 함수는 모니터 instance 핸들을 반환합니다. 모니터는 로컬 메모리를 할당하여 instance 관련 정보를 저장하고 모니터 핸들을 할당된 메모리의 식별자로 사용해야 합니다.

스풀러가 처음 시작되면 설치된 모든 모니터 DLL을 로드합니다. 모든 모니터 초기화 함수를 호출한 후 스풀러는 모니터에서 지원하는 포트를 열거하는 각 포트 모니터의 EnumPorts 함수를 호출합니다. (포트 추가에 설명된 대로 모니터는 포트가 모니터의 데이터베이스에 추가된 경우 포트를 지원합니다.) 그런 다음 포트 열기 및 닫기에서 설명한 대로 지원되는 각 포트가 열립니다.