KR100578434B1 - 확장 가능한 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체, 드라이버 플러그인 프로그램을 등록하는 방법 및 장치 - Google Patents

확장 가능한 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체, 드라이버 플러그인 프로그램을 등록하는 방법 및 장치 Download PDF

Info

Publication number
KR100578434B1
KR100578434B1 KR1020030025792A KR20030025792A KR100578434B1 KR 100578434 B1 KR100578434 B1 KR 100578434B1 KR 1020030025792 A KR1020030025792 A KR 1020030025792A KR 20030025792 A KR20030025792 A KR 20030025792A KR 100578434 B1 KR100578434 B1 KR 100578434B1
Authority
KR
South Korea
Prior art keywords
program
driver
plug
information
operating system
Prior art date
Application number
KR1020030025792A
Other languages
English (en)
Other versions
KR20030084709A (ko
Inventor
켐프데본제임스
카세라노크리스토퍼존
Original Assignee
캐논 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 캐논 가부시끼가이샤 filed Critical 캐논 가부시끼가이샤
Priority to KR1020030025792A priority Critical patent/KR100578434B1/ko
Publication of KR20030084709A publication Critical patent/KR20030084709A/ko
Application granted granted Critical
Publication of KR100578434B1 publication Critical patent/KR100578434B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1224Client or server resources management
    • G06F3/1225Software update, e.g. print driver, modules, plug-ins, fonts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1224Client or server resources management
    • G06F3/1226Discovery of devices having required properties

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

운영 시스템을 실행하는 컴퓨팅 장치에 의해 외부 장치의 사용을 지원하는 장치 드라이버의 장치 드라이버 프로그램에 있어서, 운영 시스템에 의해 호출되어, 드라이버 플러그인 프로그램의 존재를 검출하고, 검출된 드라이버 플러그인 프로그램으로부터 정보를 얻고, 검출된 드라이버 플러그인 프로그램으로부터 운영 시스템으로 정보를 전달하는 초기화 부분을 포함하고, 또한 검출된 플러그인 프로그램의 기능 부분을 액세스하여 실행하고, 운영 시스템으로부터 외부 장치에 대응하는 이벤트 통지를 수신하고, 검출된 드라이버 플러그인 프로그램이 이벤트 통지를 받아들인 경우에 이벤트 통지를 검출된 드라이버 플러그인 프로그램으로 전달하는 운영 부분을 포함한다.
장치 드라이버, 드라이버 플러그인 프로그램, 운영 시스템, 컴퓨터, 프린터

Description

확장 가능한 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체, 드라이버 플러그인 프로그램을 등록하는 방법 및 장치{COMPUTER READABLE RECORDING MEDIUM STORING EXTENSIBLE DEVICE DRIVER PROGRAM, METHOD AND APPARATUS FOR REGISTERING DRIVER PLUG-IN PROGRAM}
도 1은 본 발명의 일 실시예에 따라 구현될 수 있는 컴퓨팅 환경을 나타내는 도면.
도 2는 도 1에 도시된 컴퓨터의 내부 아키텍쳐를 나타내는 상세 블록도.
도 3은 본 발명의 일 실시예에 따른 프린터 드라이버의 사용자 인터페이스 모듈의 구성을 설명하기 위한 블록도.
도 4는 본 발명의 일 실시예에 따른 플러그인 모듈의 구성을 설명하기 위한 블록도.
도 5는 본 발명의 일 실시예에 따른 로컬 데이터 구조의 구성을 설명하기 위한 블록도.
도 6은 본 발명의 일 실시예에 따른 프린터 드라이버에 의한 플러그인 모듈의 이용을 설명하기 위한 흐름도.
도 7은 본 발명의 일 실시예에 따른 프린터 드라이버 사용자 인터페이스의 주 대화 특성 시트(main dialog property sheet)를 설명하기 위한 블록도.
도 8은 본 발명의 일 실시예에 따른 플러그인 모듈로부터 탭된(tabbed) 대화 특성 시트들을 통합하는 프린터 드라이버 사용자 인터페이스의 주 대화 특성 시트를 설명하기 위한 블록도.
도 9는 본 발명의 일 실시예에 따른 플러그인 모듈의 등록을 설명하기 위한 흐름도.
도 10은 본 발명의 일 실시예에 따른 플러그인 모듈, 프린터 드라이버 및 운영 시스템 간의 상호 작용을 설명하기 위한 흐름도.
<도면의 주요 부분에 대한 부호의 설명>
10 : 데스크탑 컴퓨터
11 : 디스플레이
12 : 호스트 프로세서
13 : 고정 디스크
14 : 마우스
15 : 키보드
16 : CD-ROM 드라이브
20 : 프린터
30 : 서버
본 발명은 장치 드라이버를 재컴파일(recompilation)할 필요 없이 동적으로 확장 가능한 기능(functionality)을 제공하는 장치 드라이버에 관한 것이다. 예를 들어, 본 발명은 운영 시스템에 접속되는 프린터 드라이버로 구현될 수 있으며, 프린터 드라이버는 드라이버 플러그인 모듈을 검출하고, 이 검출된 드라이버 플러그인 모듈에 대응하는 정보를 운영 시스템에 제공하며, 그 후, 검출된 드라이버 플러그인 모듈의 기능을 동적으로 액세스하게 된다.
통상, 프린터 드라이버와 같은 장치 드라이버는 프린터 등의 해당 장치의 액세스 및 사용을 지원하기 위해 워크스테이션 혹은 컴퓨터에 설치된다. 장치 드라이버들은 일반적으로 해당 장치의 제조업자에 의해 개발 및 제공되고 있으며, 해당 장치가 컴퓨팅 환경에 물리적으로 설치될 경우, 혹은 사용자가 기존에 설치된 장치를 사용하기 전에 설치되게 된다.
윈도우 운영 시스템에서의 장치 드라이버는 통상 dll(dynamic link library) 파일로 알려져 있는, 그 각각이 장치 드라이버의 중요 기능 부분(functional component)을 구현하게 되는 복수의 파일로 이루어진다. 예를 들어, 프린터 드라이버는 사용자 인터페이스 특성 시트(property sheet)를 디스플레이하기 위한 사용자 인터페이스.dll, 이미지 데이터의 필수 렌더링을 취급하기 위한 그래픽 렌더링.dll 및 프린터 드라이버의 기타 기능 부분들을 표현하는 other.dll 파일들로 이루어진다. 이러한 예에서, 사용자 인터페이스.dll 파일은 운영 시스템 인터페이스 호출을 이용 및 액세스함으로써 프린터 드라이버에 대한 사용자 인터페이스 기능을 구현하기 위한 컴파일된 코드를 포함하고 있다. 이러한 방식에서, 사용자 인터페이스.dll 파일은 필요한 정보 및 파라미터를 운영 시스템에 제공함으로써 프린터 드라이버에 대한 원하는 사용자 인터페이스 특성 시트가 사용자의 디스플레이 상에 표시될 수 있도록 한다.
또한, 사용자 인터페이스.dll 파일은 디스플레이된 사용자 인터페이스에 대한 배경 지원을 동적으로 제공하기 위해 필수 기능 코드(necessary functional code)를 가지고 있다. 예를 들어, 사용자 인터페이스는 흑백 프린트 혹은 컬러 프린트를 위한 버튼 및 대화 특징(dialog features)을 포함할 수도 있으며, 추가로, 사용자가 흑백 프린트를 선택할 경우, 사용자 인터페이스.dll 파일의 기능 코드는 디스플레이된 사용자 인터페이스 특성 시트상의 사용자의 선택을 인식하고 내부 플래그가 그래픽 렌더링.dll 파일로 전달되어 사용자의 선택이 구현되도록 설정하게 된다.
상술한 바와 같이, 장치 드라이버의 .dll 파일은 프린터 드라이버를 위한 그래픽 렌더링.dll 파일 및 사용자 인터페이스.dll 파일 등, 장치 드라이버의 소정의 기능을 구현한다. 각각의 .dll 파일은 자체적으로 다른 .dll 파일들의 호출을 포함하고 있다. 예를 들어, 사용자 인터페이스.dll 파일은 몇 개의 탭된 특성 시트(tabbed property sheets)로 이루어진 사용자 인터페이스를 제공하여 사용자가 액세스 및/또는 수정을 희망하는 장치 타입의 기능에 따라 선택하도록 할 수도 있다. 이러한 경우에, 사용자 인터페이스.dll 파일은 사용자 인터페이스의 각각의 탭된 특성 시트를 나타내는 기타 소정의 .dll 파일들에 대한 고정 호출을 포함할 수도 있다.
전술한 바와 같은 장치 드라이버들은 장치 드라이버의 기능적 능력에 대해 드라이버들이 고착된(statically fixed) 이후에 장치 드라이버의 제조업자에 의해 컴파일되는 것이 일반적이다. 예를 들어, 사용자 인터페이스.dll 파일은 사용자의 컴퓨터 상에 배포 및 이어지는 설치에 앞서 컴파일되며, 그 결과, 사용자 인터페이스.dll 파일에 의해 디스플레이 및 지원되는 사용자 인터페이스 특성 시트는 항상 동일하게 된다. 사용자 인터페이스.dll 파일이 기타 소정의 .dll 파일에 대한 고정 호출(fixed calls)을 포함하고 있는 전술한 예의 경우에도, 기타 소정의 .dll 파일들 각각의 식별(identity)은 사용자 인터페이스.dll 파일의 컴파일시 언제나 고정된다.
따라서, 사용자의 컴퓨터에 설치되는 장치 드라이버의 기능성은 고정되며, 사용자에 의해 혹은, 네트워크화된 컴퓨팅 환경에서는 네트워크 관리자에 의해 요구될 수도 있는 부가적인 기능을 추가하기 위해 수정을 가하는 것이 쉽지 않다. 예를 들어, 네트워크 관리자는 안정적인 프린팅 및 작업 평가와 같은 폭넓은 네트워크 인쇄 작업을 사용자의 프린터 드라이버가 지원하도록 희망할 수도 있다. 전술한 바와 같이 프린터 드라이버는 이러한 기능의 부가를 위해 관리자에 의해 수정되는 것이 용이하지 않다. 대신에, 프린터 드라이버의 개발자들은 사용자 인터페이스.dll 파일, 기타 .dll 파일들을 수정하여 기능을 부가한 후, 리컴파일하여 .dll 파일들을 테스트하고 있다. 프린터 드라이버의 수정된 .dll 파일들은 사용자의 컴퓨터 상에 설치되게 된다. 새로운 기능을 장치 드라이버에 부가하고자 할 때마다 요구되는 이러한 수정 처리는 사용자와 네트워크 관리자, 그리고 장치 드라이버 개발자들을 성가시게 하는 비효율적인 것임을 알 수 있다.
본 발명은 운영 시스템과 인터페이스하는 프린터 드라이버를 제공함으로써 상기 문제들을 해소하고, 이에 따라, 프린터 드라이버는 하나 이상의 드라이버 플러그인 모듈을 검출하고, 각각의 검출된 드라이버 플러그인 모듈에 대응하는 정보를 운영 시스템에 제공하며, 각각의 검출된 드라이버 플러그인 모듈의 기능을 동적으로 액세스한다. 이러한 방식에 있어서, 장치 드라이버의 기능성은 장치 드라이버에 의해 검출된 드라이버 플러그인 모듈의 수와 타입에 기초하여 동적으로 확장되는 기능이며, 장치 드라이버를 다시 설계하거나 리컴파일 및 다시 테스트할 필요도 없다.
따라서, 본 발명의 일 양상은 운영 시스템을 실행시키는 컴퓨팅 장치에 의한 외부 장치의 이용을 지원하기 위한 장치 드라이버 프로그램에 관한 것이며, 이 장치 드라이버 프로그램은 운영 시스템에 의해 호출되는 초기화 부분(initialization portion)을 포함하고 있고, 이 초기화 부분은 드라이버 플러그인 프로그램의 존재를 검출하고, 검출된 드라이버 플러그인 프로그램으로부터 정보를 획득하여 이 정보를 검출된 드라이버 플러그인 프로그램으로부터 운영 시스템에 전달한다. 또한, 상기 장치 드라이버 프로그램은 검출된 플러그인 프로그램의 기능 부분을 액세스하여 실행시키고, 운영 시스템으로부터 외부 장치에 대응하는 이벤트 통지를 운영 시스템으로부터 수신하고, 검출된 드라이버 플러그인 프로그램이 이벤트 통지를 수용하는 경우, 그 이벤트 통지를 검출된 드라이버 플러그인 프로그램에 전달하는 운영 부분(operation portion)도 포함하고 있다.
드라이버 플러그인 프로그램은 드라이버 플러그인 프로그램에 대응하는 엔트리에 대해 운영 시스템의 시스템 레지스트리를 서치함으로써 검출되는 것이 바람직하다. 또한, 정보는 드라이버 플러그인 프로그램으로부터 밖으로 전달되는(export) 포인터에 의해 액세스되는 정보 기능 호출(information function call)을 이용함으로써 드라이버 플러그인 프로그램으로부터 획득된다. 또한, 장치 드라이버 프로그램은 사용자 인터페이스 프로그램이 바람직하고, 드라이버 플러그인 프로그램으로부터 얻어진 정보는 디스플레이를 위한 대화 특성 시트의 속성과, 프린트 작업 평가 등의 특정 기능 혹은 다른 기능을 구현하기 위한 드라이버 플러그인 프로그램에서 실행가능한 코드에 대한 포인터를 포함하는 것이 바람직하다. 드라이버 플러그인 프로그램으로부터 얻어진 정보는 사용자 인터페이스 프로그램에 의해 로컬 데이터 구조에 저장되는 것도 바람직하다. 마지막으로, 드라이버 플러그인 프로그램으로부터 얻어진 정보는 어떠한 타입의 이벤트 통지들이 드라이버 플러그인 프로그램에 전달되어야할지를 판정하는데 사용하기 위한 이벤트 요구 지시기(indicator)를 포함하는 것이 바람직하다.
이로 인해, 장치 드라이버의 기능성은 장치 드라이버의 컴퓨팅 장치에서 검출된 드라이버 플러그인 프로그램의 수와 타입에 기초하여 동적으로 확장될 수 있으므로, 각각의 검출된 드라이버 플러그인 프로그램의 기능은 장치 드라이버의 재설계, 리컴파일, 및 재테스트없이 장치 드라이버에 의해 액세스 및 이용된다.
또 다른 양상에 따르면, 본 발명은 운영 시스템을 실행하는 컴퓨팅 장치에 의한 프린터의 이용을 지원하기 위한 프린터 드라이버의 사용자 인터페이스 프로그램에 관한 것이다. 사용자 인터페이스 프로그램은 운영 시스템에 의해 호출되는 초기화 부분을 포함하고 있는데, 이 초기화 부분은 운영 시스템의 시스템 레지스트리에서 드라이버 플러그인 식별자를 검출하고, 이 드라이버 플러그인 식별자에 대응하는 드라이버 플러그인 프로그램을 액세스하여 메모리로 로딩하며, 드라이버 플러그인 프로그램 내의 정보 기능 호출에 대한 포인터를 드라이버 플러그인 프로그램으로부터 획득하고, 드라이버 플러그인 프로그램으로부터 정보를 수신하기 위해 정보 기능 호출을 실행하며, 수신된 정보를 로컬 데이터 구조에 저장하며, 운영 시스템 기능 호출을 이용하여 수신된 정보의 일부를 운영 시스템에 전달한다. 또한, 사용자 인터페이스 프로그램은 수신된 정보에 제공된 기능 포인터를 이용하여 드라이버 플러그인 프로그램의 기능 부분을 액세스하여 실행하는 운영 부분을 포함하고 있으며, 프린터에 의해 수행되는 프린트 작업에 대응하는 이벤트 통지들을 운영 시스템으로부터 수신하고, 드라이버 플러그인 프로그램이 이벤트 통지를 수용한다고 수신 정보에 제공된 이벤트 요구 지시기가 나타내는 경우에는 이벤트 통지를 드라이버 플러그인 프로그램에 전달한다.
드라이버 플러그인 프로그램으로부터 얻어진 정보는 디스플레이를 위한 대화 특성 시트의 속성과, 프린트 작업 관리와 같은 특정 기능 또는 다른 기능을 구현하기 위한 드라이버 플러그인 프로그램에서 실행가능한 코드의 포인터를 포함하는 것이 바람직하다. 또한, 이벤트 요구 지시기는 어느 타입의 이벤트 통지가 드라이버 플러그인 프로그램에 전달될 것인지를 정의하는 것이 바람직하다.
이로 인해, 장치 드라이버의 기능은 장치 드라이버에 의해 컴퓨팅 장치에서 검출된 드라이버 플러그인 프로그램의 수와 타입에 기초하여 동적으로 확장될 수 있으므로, 각각의 검출된 드라이버 플러그인 프로그램의 기능은 장치 드라이버의 재설계, 리컴파일, 및 재테스트없이 장치 드라이버에 의해 액세스 및 이용된다.
또 다른 양상에 따르면, 드라이버 플러그인 프로그램이 장치 드라이버의 장치 드라이버 프로그램에 의한 사용을 위해 제공되는데, 이 장치 드라이버는 운영 시스템을 실행하는 컴퓨팅 장치에 의한 외부 장치의 사용을 지원하기 위한 것이다. 드라이버 플러그인 프로그램은 기능적 응용을 지원하는 실행가능 코드를 갖는 기능 부분과, 드라이버 플러그인 프로그램에 의해 지원되는 기능성에 대응하는 자원 정보를 포함하는 자원 부분, 및 정보 기능 호출의 정보 포인터를 포함하고 있다. 정보 포인터는 자원 부분의 자원 정보에 대응하는 자원 포인터 및 기능 부분의 실행 가능 코드에 대응하는 기능 포인터를 장치 드라이버 프로그램에 반송하는 정보 기능 호출을 개시하기 위해 장치 드라이버 프로그램에 의해 액세스된다.
자원 정보는 자원 포인터를 이용함으로써 액세스되고, 드라이버 플러그인 프로그램에 의해 지원되는 다수의 대화 특성 시트와, 드라이버 플러그인 프로그램에 의해 지원되는 각각의 대화 특성 시트의 타입, 및 드라이버 플러그인 프로그램에 의해 지원되는 각각의 대화 특성 시트의 속성을 포함하는 것이 바람직하다. 또한, 자원 부분은 이벤트 핸들러(event handler)의 이벤트 포인터를 포함하는 것이 바람직하며, 이벤트 포인터는 정보 기능 호출을 통해 장치 드라이버 프로그램에 전달되고, 이로써 이벤트 포인터는 장치 드라이버 프로그램에 의해 수신된 이벤트 통지를 운영 시스템으로부터 드라이버 플러그인 프로그램에 전달하기 위해 이벤트 핸들러를 개시시키는 장치 드라이버 프로그램에 의해 사용된다. 장치 드라이버 프로그램과 드라이버 플러그인 프로그램은 각각 dll(dynamic link library) 파일로 이루어지는 것이 바람직하다.
이로 인해, 장치 드라이버의 기능은 장치 드라이버에 의한 컴퓨팅 장치에서의 검출을 위해 등록된 드라이버 플러그인 프로그램의 수와 타입에 기초하여 동적으로 확장될 수 있으므로, 각각의 검출된 드라이버 플러그인 프로그램의 기능은 장치 드라이버의 재설계, 재컴파일, 및 재테스트없이 장치 드라이버에 의해 액세스되어 이용된다.
또 다른 실시예에 있어서, 본 발명은 컴퓨팅 장치에 의한 외부 장치의 사용을 지원하는 장치 드라이버의 장치 드라이버 프로그램에 의한 사용을 위해 드라이버 플러그인 프로그램을 등록하는 방법에 관한 것이다. 이 방법은 외부 소스에 위치한 적어도 하나의 이용가능 드라이버 플러그인 프로그램을 식별하는 단계, 컴퓨팅 장치상의 설치를 위해 적어도 하나의 이용가능 드라이버 플러그인 프로그램을 선택하는 단계, 컴퓨팅 장치상의 메모리에 각각의 선택된 드라이버 플러그인 프로그램을 저장함으로써 컴퓨팅 장치에 각각의 선택된 드라이버 플러그인 프로그램을 설치하는 단계, 및 각각의 선택된 드라이버 플러그인 프로그램에 대응하는 식별자를 컴퓨팅 장치상에서 실행중인 운영 시스템의 시스템 레지스트리에 입력하는 단계를 포함한다.
본 발명의 방법은 장치 드라이버의 개발자에 의해 제공되는 설치 프로그램 또는 web 이나 CD-ROM 등의 또 다른 소스로부터 제공되는 설치 프로그램으로부터 얻어진 설치 스크립트(installation script)에 의해 수행되는 것이 바람직하다. 또한, 각각의 선택된 드라이버 플러그인 프로그램에 대응하는 식별자는 외부 장치 의 명칭에 대응하는 시스템 레지스트리 위치에 입력되는 것이 바람직하다.
이로 인해, 드라이버 플러그인 프로그램은 프린터 설치시 혹은 그 이후에 용이하게 액세스되어 등록될 수 있다. 따라서, 장치 드라이버 프로그램의 기능은 장치 드라이버에 의한 컴퓨팅 장치에서의 검출을 위해 등록된 드라이버 플러그인 프로그램의 수와 타입에 기초하여 동적으로 확장될 수 있으므로, 각각의 검출된 드라이버 플러그인 프로그램의 기능은 장치 드라이버의 재설계, 리컴파일, 및 재테스트없이 장치 드라이버에 의해 액세스되어 이용될 수 있다.
본 발명의 또 다른 실시예에 있어서, 프린터상의 프린트 작업을 수행하기 위한 방법이 제시되는데, 프린트 작업은 컴퓨팅 장치에 의해 프린터에 전송된다. 이 방법은, 컴퓨팅 장치에서의 운영 시스템의 실행에 의해, 컴퓨팅 장치의 디스플레이상에 주 프린터 대화 특성 시트를 디스플레이하기 위한 제1 사용자 입력 요구를 수신하는 단계, 운영 시스템에 의해 프린터에 대응하는 프린터 드라이버의 사용자 인터페이스 프로그램의 실행을 개시하는 단계, 사용자 인터페이스 프로그램에 의해 드라이버 플러그인 프로그램에 대응하는 시스템 레지스트리에서 식별자를 검색하는 단계, 사용자 인터페이스 프로그램에 의해 드라이버 플러그인 프로그램으로부터 탭된 대화 특성 시트 정보와 기능 포인터를 획득하는 단계, 및 탭된 대화 특성 시트 정보와 주 대화 특성 시트 정보를 사용자 인터페이스 프로그램으로부터 운영 시스템에 전달하는 단계를 포함하고 있다.
본 발명은, 또한 운영 시스템에 의해, 디스플레이 상의 주 프린터 대화 특성 시트 - 이 주 대화 특성 시트는 드라이버 플러그인 프로그램으로부터 얻어진 탭된 대화 특성 시트 정보에 대응하는 탭된 대화 특성 시트를 액세스 하기 위한 탭을 포함함 - 를 디스플레이하는 다녜, 운영 시스템에 의해 탭된 대화 특성 시트를 디스플레이하기 위한 제2 사용자 입력 요구를 수신하는 단계, 및 운영 시스템에 의해 제2 사용자 입력 요구에 응답하여 탭된 대화 특성 시트를 디스플레이하는 단계를 더 포함한다. 또한, 본 발명의 방법은, 운영 시스템에 의해 탭된 대화 특성 시트에 의해 지원되는 기능을 이용하기 위한 제3 사용자 입력 요구를 수신하는 단계, 운영 시스템에 의해 사용자 인터페이스 프로그램에 제3 사용자 입력 요구를 전송하는 단계, 사용자 인터페이스 프로그램에 의한 기능 포인터의 이용시, 사용자 입력 요구에 대응하는 기능을 구현하는 드라이버 플러그인 프로그램에서의 실행 가능 코드의 실행을 개시하는 단계, 운영 시스템에 의해 프린터에 의한 이미지 데이터의 인쇄를 개시하기 위한 프린트 요구를 수신하는 단계, 및 운영 시스템으로부터 프린트 요구를 수신하면 프린터 드라이버에 의해 이미지 데이터를 프린트 작업으로 렌더링하고 프린트 작업을 실행하게 되는 프린터에 프린트 작업을 전송하는 단계를 포함한다. 최종적으로 본 발명의 방법은 프린트 작업에 관련된 프린트 이벤트 통지를 사용자 인터페이스 프로그램으로부터 드라이버 플러그인 프로그램에 전송하는 단계를 포함하는데, 프린트 이벤트 통지는 드라이버 플러그인 프로그램내 실행가능 코드에 의해 이용된다.
탭된 대화 정보는 드라이버 플러그인 프로그램으로부터 밖으로 전달되는 포인터에 의해 액세스되는 정보 기능 호출을 이용하여 드라이버 플러그인 프로그램으로부터 얻어지는 것이 바람직하다. 또한, 탭된 대화 정보는 디스플레이를 위한 대화 특성 시트들의 속성과, 프린트 작업 평가 등의 특정 기능 혹은 다른 기능을 구현하기 위해 드라이버 플러그인 프로그램 내에 실행가능한 코드의 포인터를 포함하는 것이 바람직하다. 드라이버 플러그인 프로그램으로부터 얻어진 정보는 사용자 인터페이스 프로그램에 의해 로컬 데이터 구조로 저장되는 것도 바람직하다. 마지막으로, 드라이버 플러그인 프로그램으로부터 얻어진 정보는 어떠한 타입의 이벤트 통지들이 드라이버 플러그인 프로그램에 전달되어야 할 지를 판정하는데 사용하기 위한 이벤트 요구 지시기를 포함하는 것이 바람직하다.
이로 인해, 장치 드라이버의 기능은 장치 드라이버에 의해 컴퓨팅 장치에서 검출된 드라이버 플러그인 프로그램의 수와 타입에 기초하여 동적으로 확장될 수 있으므로, 각각의 검출된 드라이버 플러그인 프로그램의 기능은 장치 드라이버의 재설계, 리컴파일, 및 재테스트없이 장치 드라이버에 의해 액세스되어 이용될 수 있다.
이상의 간단한 개요는 본 발명의 성격을 신속히 이해할 수 있도록 하기 위한 것이며, 첨부 도면을 참조한 다음의 상세한 설명과 바람직한 실시예를 통해 본 발명을 보다 완전히 이해할 수 있을 것이다.
<실시예>
본 발명은 프린터 등의 외부 장치의 사용을 지원하기 위해 컴퓨팅 장치에 이용되는 확장 가능한 장치 드라이버에 관한 것이다. 특히, 본 발명의 장치 드라이버는 컴퓨팅 장치의 기능적 능력을 확장하기 위해 컴퓨팅 장치상의 기존의 플러그인 모듈들을 검출하여 통합할 수 있다. 일 예로서, 본 발명에서는 장치 드라이버가 프린터의 사용을 지원하기 위한 프린터 드라이버인 일 실시예에 대해 논의된다. 본 발명은 디지털 복사기, 스캐너, 카메라 등의 기타 장치들을 지원하는 다른 장치 드라이버들에 대해 구현될 수 있다.
도 1은 본 발명이 구현될 수도 있는 컴퓨팅 환경의 시스템도를 나타내고 있다. 도 1에 도시된 바와 같이, 컴퓨팅 환경은 컴퓨터(10), 프린터(20), 서버(30), 및 접속 통신로(1)를 구비한다. 접속 통신로(1)는 직렬, USB, FireWire 또는 기타 접속 통신로 등, 컴퓨터(10)와 프린터(20)간의 간단한 로컬 접속 통신로(1)가 될 수 있다. 또한, 접속 통신로(1)는 버스-타입 물리적 아키텍쳐로 이루어지는 이더넷 네트워크 매체 등의 네트워크일 수도 있다. 접속 통신로(1)는 인터넷을 포함한 또 다른 타입의 네트워크로 이루어질 수도 있다.
데스크탑 컴퓨터(10)는 Microsoft Windows 2000, Microsoft Windows ME 또는 Microsoft Windows XP 등의 윈도우 운영 시스템 환경을 갖는 통상적인 개인용 컴퓨터 혹은 워크스테이션이 바람직하다. PC 타입 컴퓨터의 경우, 통상, 데스크탑 컴퓨터(10)는 디스플레이(11), 키보드(15), 마우스(14), 호스트 프로세서(12), 고정 디스크(13), CD-ROM 드라이브(16) 및 플로피 드라이브 및/또는 기타 타입의 저장 매체(도시 생략)를 구비하는 것이 바람직하다. 본 발명에 따른 컴퓨터(10)의 고정 디스크(13)의 컨텐츠는 아래에서 도 2를 참조하여 상세히 설명된다.
프린터(20, 25)는 접속 통신로(1)에 의해 컴퓨터(10)에도 접속되며, 수신된 프린트 데이터를 기초로 기록 매체상에 이미지들을 프린트할 수 있는 레이저 또는 잉크제트 프린터가 바람직하다. 예를 들어, 컴퓨터(10)는 아래에서 논의되는 바와 같이, 본 발명에 따른 프린터 드라이버를 실행시킴으로써 프린트 작업이 이루어지도록 한다. 프린터(20)는 컴퓨터(10)로부터, 및/또는 다른 소스들로부터 접속 통 신로(1)를 통해 넘겨진 프린트 작업을 수용한 후 그 프린트 작업을 실행한다. 프린터(20)는 접속 통신로(1)를 통해 컴퓨터(10)와 양방향 통신을 하고, 프린터(20)에 의한 프린트 작업이 수행되는 동안 프린트 작업의 상태가 컴퓨터(10)에 다시 보고될 수 있도록 하는 것이 바람직하다. 프린터(25)는 전술한 바와 같은 프린터(20)와 유사한 방식으로 동작한다. 본 발명은 다른 타입의 컴퓨팅 장치에 구현될 수도 있으며, 도 1에 도시한 것과 같은 컴퓨터(10)에서의 구현에 국한되는 것은 아니다. 또한, 본 발명은 스캐너, 복사기, 디지털 카메라 등, 프린터 이외의 장치의 타입을 지원하는데 이용될 수 있다.
또한, 접속 통신로(1)는 버스-타입 물리적 아키텍쳐로 이루어지는 이더넷 네트워크 매체와 같은 네트워크 접속 통신로가 바람직하다. 서버(30)는 접속 통신로(1)에도 접속된다. 서버(30)는 Microsoft Windows 2000, Microsoft Windows ME, 혹은 Microsoft Windows XP 등의 윈도우 운영 시스템 환경을 갖는 PC 호환가능 컴퓨터를 포함하는 것이 바람직하다. 서버(30)는 수많은 파일, 애플리케이션, 데이터, 웹페이지, 및 이하에 논의되는 플러그인 모듈들을 저장하기 위해 대용량 고정 디스크인 고정 디스크(31)를 갖는 것이 바람직하다. 따라서, 서버(30)는 파일 서버, 웹 페이지 서버, 애플리케이션 서버 또는 다른 타입의 서버로서, 컴퓨터(10) 등 접속 통신로(1)상의 다른 장치에 의해 이용될 수 있다. 서버(30)는 인터넷 등의 다른 네트워크를 액세스하기 위해 접속 통신로(1)상의 다른 장치들을 위한 게이트웨이로서 동작할 수도 있다. 결국, 서버(30)는 다음에 상술하는 바와 같이, 플러그인 모듈들을 획득하고 설치하기 위해 컴퓨터(10)에 의한 액세스에 대해 웹 페 이지를 지원하는 웹 서버로서 동작할 수도 있다.
도 2는 본 발명을 구현하기 위한 고정 디스크(13)의 컨텐츠를 포함한, 컴퓨터(10)의 내부 아키텍처를 설명하기 위한 블록도이다. 도 2에 도시된 바와 같이, 컴퓨터(10)의 내부 아키텍쳐는 고정 디스크(13), RAM(17), 및 프로세서(CPU; 19)를 포함하고 있다. 통상적인 컴퓨터의 경우, 운영 시스템(40)은 CPU(19)에 의한 액세스 및 실행을 위해 RAM(19)에 원하는 프로그램의 실행 가능 코드를 로드한다. 컴퓨터(10)의 고정 디스크(13)는 운영 시스템(40), 프린터 드라이버(50) 및 저장 영역(60)을 포함하고 있다. 상술한 바와 같이, 운영 시스템(40)은 윈도우 운영 시스템이 바람직하며, 특히 운영 시스템(40) 상에서 실행중인 애플리케이션들에 애플리케이션 프로그램 인터페이스를 제공하도록 기능 호출을 지원하는 Microsoft Windows 운영 시스템이 바람직하다. 특히, 기능 호출은 컴퓨터(10)의 디스플레이(11) 상의 특성 시트의 렌더링을 위해 특성 시트에 대응하는 속성 및 정보를 획득할 수 있는 운영 시스템(40)의 호출을 포함하는 것이 바람직하다. 또한, 운영 시스템(40)은 컴퓨터(10) 상에서 실행 중인 애플리케이션에 외부 장치의 상태 정보를 제공하는 것을 지원하는 기능 호출을 포함하는 것도 바람직하다.
레지스트리(41)는 고정 디스크(13)의 파일 폴더 또는 데이터베이스에 속할 수 있는 고정 디스크(13) 상의 정보 저장 위치이다. 레지스트리(41)는 운영 시스템(40)에 의해 유지 및 이용되고, 프린터, 스캐너, 복사기 등의 장치들을 지원하기 위해 운영 시스템에 필요한 정보를 포함하고 있다. 이 경우, 설명의 편의를 위해, 레지스트리(41)는 컴퓨터(10)의 운영 시스템(40)에 의해 지원되는, 프린터(20 및 25)에 대응되는 데이터만을 포함하고 있는 것으로 도시한다. 특히, 레지스트리(41)는 본 발명을 구현하는 플러그인 식별자들을 포함하고 있으며, 운영 시스템(40)이 지원하는 프린터(20 및 25)에 각각 대응하는 2개의 칼럼을 도시하고 있다. printer1_id(42) 및 printer2_id(47)은 각 프린터(20 및 25)에 대한 장치 식별자이며, 이들은 통상적으로 대응하는 프린터의 이름 및 코드로 구성된다. 예컨대, printer1_id(42)는 프린터(20)의 "LASER1"을 나타내며, printer2_id(47)은 프린터(25)의 "INKJET1"을 나타냄으로써, 운영 시스템(40)을 통해 컴퓨터(10)의 사용자가 이용할 수 있는 2개의 프린터를 식별한다.
printer1_id(42) 및 printer2_id(47) 하단의 각 칼럼에는, 기존의 장치 드라이버, 예컨대 프린터 드라이버(50)에 기능을 추가함으로써, 장치 드라이버를 수정, 리컴파일 및 테스트할 필요없이 본 발명을 구현하기 위하여, 프린터 드라이버(50)용의 저장 영역(60) 내에 이용가능한 각 플러그인 모듈을 식별하는 플러그인 식별자들의 리스트가 제공된다. 바람직하기로는, 각 플러그인 식별자는 대응되는 플러그인 모듈용의 저장 영역(60)에서의 위치에 대한 어드레스이다. 다른 방법으로, 각 플러그인 식별자는 대응되는 플러그인 모듈에 대한 이름 또는 코드로 구성될 수도 있다.
또한, 레지스트리(41)에 있어서, 프린터(20)에 대응하는 printer1_id(42) 하단의 칼럼에는 sec_plugin_id(43), rdr_plugin_id(44), inst_plugin_id(45) 및 act_plug_id(46)에 대한 플러그인 식별자가 포함되며, 이들은 저장 영역(60) 내에 위치하는 안전 프린트 플러그인 모듈(63), 작업 리다이렉트 플러그인 모듈(62), 설치 플러그인 모듈(61) 및 작업 어카운팅 플러그인 모듈(65)에 대응한다. 이와 같은 방식으로, 레지스트리(41)는 프린터 드라이버(50)가 그 기능을 확장하기 위하여 어떤 플러그인 모듈이 프린터 드라이버(50)에서 필요한지를 판단하는 것을 돕기 위하여, 각 프린터에 대한 플러그인 식별자를 유지하고 있다. 이와 관련하여, 레지스트리(41) 내의 각 플러그인 식별자는, 장치가 설치되는 때에 또는 설치된 후에, 컴퓨터(10)의 사용자 또는 시스템 관리자에 의해, 하기와 같은 방법에 따라서, 레지스트리(41)에서 특정 장치 식별자의 하위에 속하게 된다.
도 2에서 프린터 드라이버(50)는 컴퓨터(10)로 하여금 프린터(20)와 통신하여 그 이용을 가능하게 하는 운영 시스템(40)에 의한 실행을 위한 드라이버 모듈이다. 이와 유사한 프린터 드라이버(도시 생략)를 이용하여 프린터(25)와의 통신 및 그 이용을 가능하게 할 수도 있지만, 설명의 편의상 이에 대한 설명은 생략한다. 도 2에 도시된 바와 같이, 프린터 드라이버(50)는 user_interface_mod(51), graphics_render_mod(52) 및 other_mod(53)의 3개의 모듈로 구성된다. user_interface_mod(51)은 사용자가 프린터 드라이버(50)에 액세스하여 제어하도록 하기 위한 사용자 인터페이스를 제공하는데 이용된다. 예컨대, 본 발명의 실시예에서는, 이 장치 드라이버는 컴퓨터(10)에 의해 프린터(20)를 구동하기 위한 프린터 드라이버(50)이며, 따라서 user_interface_mod(51)은 사용자가 프린터 드라이버(50)의 특징을 액세스하여 제어하기 위하여 디스플레이(11) 상에 사용자 인터페이스를 표시하고자 하는 경우에 실행된다. 운영 시스템(40)과 같은 윈도우 운영 시스템에서는, 사용자가 대화 특성 시트를 표시시켜 프린터 드라이버 사용자 인터페이스를 표시시키기 위하여, "프린터 특성"에 대응하는 버튼을 누르는 것이 일반적이며, 프린터 드라이버 사용자 인터페이스는 일반적으로 주 대화 특성 시트로 구성되며, 이 시트에는 다른 탭된 대화 특성 시트들을 액세스하기 위한 탭(tab)을 갖고 있으며, 또한 각 대화 특성 시트는 프린터 드라이버의 소정의 기능에 관한 버튼, 정보 및 대화를 제공한다.
전술한 바와 같이, 본 발명은 장치 드라이버의 기능을 확장하기 위하여 장치 드라이버에의 액세스 및 결합을 위한 플러그인 모듈을 제공한다. 전술한 실시예에 있어서, 플러그인 모듈은 프린터 드라이버(50)에 예컨대 작업 어카운팅, 안전 프린팅 등의 새로운 기능을 추가시키는데 이용된다. 또한, 플러그인 모듈은, user_interface_mod(51)에 의한 액세스에 의해 프린터 드라이버의 사용자 인터페이스에 결합되어 디스플레이(11) 상에 표시시키기 위한, 새로운 기능에 대응하는 탭된 대화 특성 시트를 제공한다. user_interface_mod(51)의 조합 및 동작에 대해서 아래에서 상세히 설명한다. graphics_render_mod(52)는 프린터 드라이버(50)의 또 다른 구성요소로서, 주어진 이미지 데이터를 컴퓨터(10)의 사용자가 원하는 설정에 따라서 프린트 작업으로 처리하는데 이용된다. other_mod(53)는 프린터 드라이버(50)를 구현하는데 이용되는 다른 모듈을 나타낸다. 이와 관련하여, graphics_render_mod(52) 및 other_mod(53)도 플러그인 모듈에의 액세스 및 결합에 의해 그 기능을 확장할 수 있지만, 설명의 편의를 위하여, 플러그인 모듈의 이용에 대해서는 user_interface_mod(51)에 관해서 상세히 설명하기로 한다. 바람직하기로는, 프린터 드라이버(50)의 전술한 모듈들은 동적 링크 라이브러리 파일이다.
저장 영역(60)은 본 발명에 따라서 컴퓨터를 동작시키고 프린터 드라이버(50)를 이용하기 위하여 운영 시스템(40) 및 프린터 드라이버(50) 양자에 의해 이용되는 고정 디스크(13) 영역이다. 도 2에 도시된 바와 같이, 저장 영역(60)은 설치 플러그인 모듈(61), 작업 리다이렉트 플러그인 모듈(62), 안전 프린트 플러그인 모듈(63), 정책 관리 플러그인 모듈(64), 작업 어카운팅 플러그인 모듈(65) 및 특징 모드 플러그인 모듈(66)을 포함한다. 레지스트리(41)와 관련하여 전술한 바와 같이, 이들 플러그인 모듈은 프린터 드라이버(50)와 같은 장치 드라이버의 기능을 확장하기 위하여 액세스하는데 이용된다. 예컨대, 설치 플러그인 모듈(61)은 컴퓨터(10)에 의해 사용될 새로운 프린터의 설치를 위한 기능을 제공하며, 작업 리다이렉트 플러그인 모듈(62)은 하나의 프린터로부터 다른 프린터로 프린트 작업을 리다이렉트하는 기능을 제공하며, 안전 프린트 플러그인 모듈(63)은 프린트 작업이 프린터에 전달되고 안전하게 프린트되었음을 확인하는 기능을 제공하며, 정책 관리 플러그인 모듈(64)은 프린터로의 액세스 및 프린터의 기능을 관리하는 기능을 제공하며, 작업 어카운팅 플러그인 모듈(65)은 프린터에 전달된 프린트 작업의 트랙킹 및 리포팅에 관한 기능을 제공하며, 특징 모드 플러그인 모듈(66)은 용지 트레이 또는 스테이플러와 같은 마감(finishing) 장치 등, 프린터에 추가된 새로운 하드웨어를 지원하는 기능을 제공한다. 물론, 도 2에 도시된 저장 영역(60) 내에 도시된 플러그인 모듈의 타입은 프린터를 지원하기 위해 프린터 드라이버에 의해 사용되는 기능들의 예시이며, 이는 스캐너, 복사기, 디지털 카메라 등의 기타 장치뿐만 아니라 프린터 드라이버에 대한 플러그인 모듈에 의해 구현될 수 있는 기능들의 타입 리스트를 이에 한정시키기 위한 것으로 이해되어서는 안된다. 바람직하기로는, 이들 플러그인 모듈들은 동적 링크 라이브러리 파일이다.
다시 도 2를 참조하면, 저장 영역(60)은 또한 기타 모듈(67), 기타 파일(69), 웹 브라우저(70), 시스템 폴더(71), 데이터베이스(72), 로컬 데이터 구조(73) 및 등록 애플리케이션(74)을 포함한다. 기타 모듈(67) 및 기타 파일(69)은 운영 시스템(40) 에 의한 컴퓨터(10)의 조작을 위해서 이용될 뿐만 아니라 컴퓨터(10)의 CPU(19)에 의해 실행되는 기타 애플리케이션에 의해서도 이용된다. 웹 브라우저(70)는 컴퓨터(10)의 사용자로 하여금 접속 통신로(1)를 통하여 서버(30) 등의 웹 서버의 웹 페이지를 액세스할 수 있도록 하기 위하여 CPU(19)에 의해 실행된다. 시스템 폴더는 운영 시스템(40) 및 CPU(19)에 의해 실행되는 기타 애플리케이션에 의해 사용되는 파일 및 애플리케이션을 기억하고 있는 관리 위치이다. 마찬가지로, 데이터베이스(72)는 운영 시스템(40) 및 CPU(19)에 의해 실행되는 기타 애플리케이션에 의해 액세스 및 이용될 수 있는 정보를 저장하는데 이용된다. 로컬 데이터 구조(73)는 user_interface_mod(51)에 의해 이용되는 데이터 구조의 세트로서, 이에 대해서는 아래에서 상세히 설명한다. 마지막으로, 등록 애플리케이션(74)은 바람직하기로는 플러그인 모듈을 식별하고, 레지스트리(41)에 설치하는데 이용되는 명령 스크립트로 구성되는 애플리케이션으로서, 이에 대해서는 아래에서 상세히 설명한다.
도 3은 도 2에 도시한 프린터 드라이버(50)의 user_interface_mod(51)의 조합을 설명하기 위한 블록도이다. 도 3에 도시된 바와 같이, user_interface_mod(51)은 초기화 부분(80) 및 운영 부분(90)으로 구성된다. 초기화 부분(80)은 프린터 드라이버(50)에 대한 사용자 인터페이스를 표시하라는 사용자의 요청에 응답하여 user_interface_mod(51)을 초기화하는데 이용된다. 예컨대, 사용자가 프린터(20)에 대응하는 "프린터 특성" 버튼을 디스플레이(11) 상에서 선택하는 경우, 운영 시스템(40)은, 그 프린터 드라이버의 사용자 인터페이스를 초기화하고 필요한 대화 특성 시트 정보를 운영 시스템(40)으로 전달하여 표시하기 위하여, user_interface_mod(51)의 초기화 부분(80)의 실행을 개시한다. 초기화 부분(80)은 플러그인 검색 기능(81), 플러그인 정보 기능(82), 대화 구조 기능(83) 및 정적 대화 특성 시트 속성(84)을 포함한다.
플러그인 검색 기능(81)은 레지스터 등 미리 결정된 위치에서 프린터(20)에 대응하는 등록된 플러그인 모듈을 검색한다. 물론, 시스템 디렉토리 폴더 또는 데이터베이스 등 다른 위치를 플러그인 검색 기능(81)에 의한 액세스를 위한 플러그인 모듈을 기억하고 있는 미리 결정된 위치로 이용할 수도 있다. 플러그인 정보 기능(82)은 플러그인 검색 기능(81)에 의해 검출된 임의의 플러그인 모듈에 대응하는 정보를 획득하여, 검출된 플러그인 모듈들로부터 user_interface_mod(51)에 의해 이용될 수 있는 플러그인 모듈을 선택한다. 플러그인 정보 기능(82)은 선택된 플러그인 모듈에 대해 획득된 각각의 정보를 로컬 데이터 구조 내에 저장한다. 대화 구조 기능(83)은, 선택된 플러그인 모듈에 의해 지원되는 각각의 탭된 대화 특성 시트에 대해 획득된 정보 및 속성뿐만 아니라, user_interface_mod(51)에 의해 지원되는 각각의 정적 대화 특성 시트에 대해 획득된 정보 및 속성을, 운영 시스템(40)으로 전달하는데 이용된다. 운영 시스템(40)이 각각의 대화 특성 시트에 대한 정보 및 속성들을 수신하게 되면, 운영 시스템(40)은 컴퓨터(10)의 디스플레이(11) 상에 처리된 대화 특성 시트를 표시시킨다. 이와 관련하여, 정적 대화 특성 시트 속성(84)은 user_interface_mod(51)에 의해 지원되는 각각의 정적 대화 특성 시트의 정보 및 속성을 포함하고 있다.
user_interface_mod(51)의 운영 부분(90)은 정적 대화 특성 시트 지원 코드(91), 정적 기능 코드(92), 플러그인 기능 액세스 코드(93) 및 플러그인 이벤트 코드(94)로 구성된다. 운영 부분(90)은 초기화 부분(80)의 완료 후에 실행되는 것으로, 정적 대화 특성 시트를 지원하고, 선택된 플러그인 모듈에 의해 지원되는 각각의 탭된 대화 특성 시트를 지원하기 위한 대응하는 플러그인 모듈을 액세스하고, 필요한 경우 적절한 플러그인 모듈에 대해 이벤트 정보를 전달하는데 이용된다. 정적 대화 특성 시트 지원 코드(91)는 각각의 정적 대화 특성 시트에서의 설정 및 버튼에 대한 사용자 수정을 모니터하고, 그 정적 대화 특성 시트를 대응하는 방식으로 갱신하고, 수정된 설정을 정적 기능 코드(92) 및 필요한 경우 graphics_render_mod(52) 등 프린터 드라이버(50)의 기타 부분에 전달하여 사용자의 수정을 구현함으로써, 정적 대화 특성 시트를 지원하기 위한 대화 프로세스를 제공한다. 예컨대, 사용자는 디스플레이된 프린터 드라이버 사용자 인터페이스의 주 대화 특성 시트 중에서 하나의 버튼을 이용하여, 컬러 프린팅 대신에 흑백 프린팅을 선택할 수도 있다. 정적 대화 특성 시트 지원 코드(91)는 이 사용자 선택을 graphics_render_mod(52)에 전달하여, 그 이미지 데이터가 프린터(20)에 의한 프린 팅의 프린트 작업에 있어서 흑백으로 처리되도록 할 것이다. 정적 기능 코드(92)는 프린터(20)와의 통신 상태를 모니터하거나 프린터(20)에 의해 수행되는 프린트 작업의 상태를 모니터하는 등, user_interface_mod(51)의 기타 정적 기능을 처리하는데 이용된다.
플러그인 기능 액세스 코드(93)는 대응하는 선택된 플러그인 모듈에 의해 제공된 탭된 대화 특성 시트를 지원하고, 각각의 선택된 플러그인 모듈에 의해 지원되는 기능, 예컨대 작업 어카운팅, 정책 관리 등을 구현하기 위하여, 각각의 선택된 플러그인의 기능 코드를 액세스하는데 이용된다. 플러그인 이벤트 코드(94)는 프린터(20)에 대응하는 운영 시스템(40)으로부터 이벤트 통지를 수신하여, 수신된 이벤트 통지가 선택된 플러그인 모듈로부터 호출되었는지의 여부를 판단하여, 그 이벤트 통지를 그 목적의 적절한 선택 플러그인 모듈에 전달한다.
도 4는 본 발명의 일 실시예에 따른 플러그인 모듈의 조합을 설명하기 위한 블록도이다. 플러그인 모듈의 조합을 일반적으로 설명하기 위하여, 도 4에서는 작업 어카운팅 플러그인 모듈(65)을 예로써 설명한다. 도 4에 도시된 바와 같이, 작업 어카운팅 플러그인 모듈(65)은 자원 부분(100) 및 기능 부분(130)을 포함한다. 통상적으로, 자원 부분(100)은 user_interface_mod(51)이 탭된 대화 특성 시트 정보 및 작업 어카운팅 플러그인 모듈(65)에 의해 지원되는 기능을 액세스 및 구현할 수 있도록 하는 정보 및 기능을 제공한다. 기능 부분(130)은 일반적으로 자원 부분(100)에서 설명한 탭된 대화 특성 시트를 지원하는 기능 코드를 제공하며, 주어진 프린터에 전달된 프린트 작업의 수 및 타입을 트랙킹하여 리포트하는 작업 어카 운팅 플러그인 모듈(65)의 기능을 제공한다.
도 4에 도시된 바와 같이, 자원 부분은 인터페이스(101) 및 속성(110)을 포함한다. 인터페이스(101)는 user_interface_mod(51)이 탭된 대화 특성 시트 정보 및 작업 어카운팅 플러그인 모듈(65)에 의해 지원되는 기능을 액세스 및 구현할 수 있도록 하는 정보 및 기능을 제공한다. 인터페이스(101)는 플러그인 기능 타입(102), 정보 기능 포인터(103), 이벤트 핸들러 포인터(104), 자원 포인터(105), 기능 포인터(106), 정보 획득 기능(107) 및 이벤트 핸들러(108)를 포함한다. 플러그인 기능 타입(102)은 플러그인 모듈에 의해 지원되는 기능(이 경우에는 작업 어카운팅 기능임)의 타입에 대한 표시(바람직하기로는 텍스트 또는 코드임)를 제공한다. 정보 기능 포인터(103)는 정보 획득 기능(107)의 어드레스를 표시하는 포인터로서, 작업 어카운팅 플러그인 모듈(65)이 정보 기능 포인터(103)와 함께 user_interface_mod(51)을 제공하면, user_interface_mod(51)은 정보 기능 포인터(103)를 이용하여 정보 획득 기능(107)을 호출하여 작업 어카운팅 플러그인 모듈(65) 내에 포함되어 있는 정보를 액세스하게 된다.
이벤트 핸들러 포인터(104)는 이벤트 핸들러(108)의 어드레스에 대한 포인터로서, 작업 어카운팅 플러그인 모듈(65)에 의해 user_interface_mod(51)에 제공되어, user_interface_mod(51)이 이벤트 핸들러(108)를 호출하여 프린터(20)에 대한 이벤트의 통지를 작업 어카운팅 플러그인 모듈(65)에 제공하게 된다. 이와 관련하여, user_interface_mod(51)은, 정보 획득 기능(107)을 통하여 user_interface_mod(51)에 전달된 이벤트 핸들러(108)에 기초하여, 이벤트 통지가 작업 어카운팅 플러그인 모듈(65)에 전달되어야 하는지를 판단한다. 다른 실시예에서는, 이벤트 핸들러(108)가 작업 어카운팅 플러그인 모듈(65)에 전달되어야 하는 이벤트 통지의 타입에 대한 기술어(descriptor)를 텍스트 또는 코드로 제공하도록 할 수도 있다. 예컨대, 작업 어카운팅 플러그인 모듈(65)의 작업 어카운팅 기능은 프린터(20)에 전달된 모든 프린트 작업의 정확한 어카운팅을 유지하기 위해, 프린트 작업의 성공 페이지의 수와 그 프린트 작업의 타입을 필요로 한다. 자원 포인터(105)는 속성(110)의 어드레스에 대한 포인터로서, 정보 획득 기능(107)을 통하여 user_interface_mod(51)에 제공되어, user_interface_mod(51)이 작업 어카운팅 플러그인 모듈(65)에 의해 지원되는 각각의 탭된 대화 특성 시트의 타입 및 속성을 액세스할 수 있도록 한다. 마찬가지로, 기능 포인터(106)는 속성(110)의 어드레스에 대한 포인터로서, 정보 획득 기능(107)을 통하여 user_interface_mod(51)에 제공되어, user_interface_mod(51)이 작업 어카운팅 플러그인 모듈(65)에 의해 지원되는 각각의 탭된 대화 특성 시트의 타입 및 속성을 액세스할 수 있도록 한다.
속성(110)은 자원 포인터(105)에 의해 액세스되며, 대화 특성 시트의 수(111) 및 특성 시트 속성(115)을 포함하고 있다. 대화 특성 시트의 수(111)는 작업 어카운팅 플러그인 모듈(65)에 의해 지원되는 대화 특성 시트의 수를 나타낸다. 특성 시트 속성(115)은 작업 어카운팅 플러그인 모듈(65)에 의해 지원되는 각각의 대화 특성 시트에 대한 칼럼을 포함하는 데이터 구조로서, 특성 시트 번호(116), 타입(117) 및 속성(118)을 나타낸다. 이러한 방식으로, 자원 포인터(105)가 user_interface_mod(51)에 의해 획득되면, user_interface_mod(51)로부터 작업 어카운팅 플러그인 모듈(65)에 의해 지원되는 각각의 대화 특성 시트의 타입 및 속성을 획득하여, 탭된 특성 시트를 디스플레이(11) 상에 처리하기 위해 운영 시스템(40)으로 전달한다. 타입(117)은 바람직하기로는 대화 특성 시트의 타입의 텍스트 또는 코드 표현이며, 예컨대 정적 특성 시트에 있어서는 "정보", 동적 특성 시트에 있어서는 사용자로 하여금 버튼 등을 이용하여 파라미터를 수정할 수 있도록 하는 "선택" 등이다. 속성(118)은 대화 특성 시트 레이아웃에 대한 설명 데이터, 버튼, 대화 특성 시트 상의 대화를 포함하며, 대화 특성 시트를 디스플레이(11) 상에 처리하기 위해 운영 시스템(40)에서 필요하게 되는 대화 특성 시트의 다른 양상들도 포함될 수 있다.
기능 부분(130)은 기능 코드(131) 및 이벤트 상태 모니터 코드(132)를 포함한다. 기능 코드(131)는 기능 포인터(106)를 이용하여 user_interface_mod(51)에 의해 호출된 실행가능 코드로서, 정보 획득 기능(107)을 통하여 user_interface_mod(51)에 의해 획득된다. 기능 코드(131)는 작업 어카운팅 플러그인 모듈(65)의 기능을 구현하는 것으로서, 이 경우에는 프린트 작업 어카운팅이다. 이벤트 상태 모니터 코드(132)는 이벤트 핸들러(108)를 통하여 user_interface_mod(51)로부터 작업 어카운팅 플러그인 모듈(65)에 전달된 이벤트 통지의 수신을 처리한다. 이벤트 상태 모니터 코드(132)는 수신된 이벤트 통지를 기능 코드(131)에 전달하여 작업 어카운팅 플러그인 모듈(65)에 의해 지원되는 기능의 구현에 이용한다.
도 5는 도 2에 나타낸 저장 영역(60)의 로컬 데이터 구조(73)의 조합을 설명하기 위한 블록도이다. 도 3에서 user_interface_mod(51)의 초기화 부분(80)과 관련하여 설명한 바와 같이, user_interface_mod(51)은 작업 어카운팅 플러그인 모듈(65)로부터 정보, 포인터 및 속성을 획득하기 위하여 정보 획득 기능(107)을 이용한다. 초기화 부분(80)이 작업 어카운팅 플러그인 모듈(65)로부터 이 정보를 수신하게 되면, 초기화 부분(80)은 그 정보를 작업 어카운팅 플러그인 모듈(65)에 대응하여 분리된 데이터 구조에 위치시켜 둠으로써, 추후에 정보 획득 기능(107)을 다시 이용하지 않고 신속하고 효과적으로 액세스할 수 있도록 한다. 특히, user_interface_mod(51)의 초기화 부분(80)에서의 플러그인 정보 기능(82) 및 대화 구조 기능(84)은 각각의 선택된 플러그인 모듈로부터 정보를 획득하여, 이를 로컬 데이터 구조(73)의 분리된 디렉토리 구조에 위치시킨다.
다시 도 5를 참조하면, 로컬 데이터 구조(73)는 프린터(20)에 대응하는 레지스트리(41) 내의 printer1_id 42에 등록된 4개의 각각의 플러그인 모듈에 대응하는 구조(140, 160, 180 및 200)를 포함하고 있다. 설명의 편의를 위하여, 작업 어카운팅 플러그인 모듈(65)로부터 user_interface_mod(51)에 의해 획득된 정보에 대응하는 데이터 구조(140)에 대해서만 설명하기로 한다. 데이터 구조(140)에서 알 수 있는 바와 같이, 여기에 포함된 정보는 작업 어카운팅 플러그인 모듈(65)의 자원 부분(100) 내에 포함되어 있는 정보의 일부분이다. 특히, 이 정보는 플러그인 기능 타입(142), 자원 포인터(143), 기능 포인터(144), 이벤트 핸들러 포인터(145) 및 속성(150)을 포함한다. 속성(150)은 대화 특성 시트의 수(151)와, 작업 어카운팅 플러그인 모듈(65)에 의해 지원되는 각각의 대화 특성 시트에 대한 특성 시트 번호(152), 타입(153) 및 속성(154)을 포함한다. 이들 데이터에 대해서는 작업 어카운팅 플러그인 모듈(65)과 관련하여 전술하였으므로, 이에 대한 추가 설명은 하지 않기로 한다.
도 6은 user_interface_mod(51)과 작업 어카운팅 플러그인 모듈(65) 사이의 상호동작 관계를 설명하는 흐름도이다. 단계 S601에서, user_interface_mod(51)은 운영 시스템(40)으로부터 초기화 호출을 수신하여 초기화 부분(80)을 기동시킨다. 단계 S602에서, 플러그인 검색 기능(81)은 레지스트리에서 프린터(20)에 대응하는 플러그인 모듈의 존재를 검색한다. 단계 S603에서, 플러그인 모듈이 검출되는지가 판단된다. 검출되지 않으면, 처리 수순은 단계 S615로 진행한다. 플러그인 모듈이 검출되는 경우, 처리 수순은 S604로 진행하여, 검출된 플러그인 모듈, 예컨대 작업 어카운팅 플러그인 모듈(65)이 RAM(17) 등의 메모리에 로드된다. 그 다음, 단계 S605에서, 플러그인 정보 기능(82)이 작업 어카운팅 모듈(65)로부터 정보 기능 포인터(103)를 획득한다. 그후, 단계 S606에서, 플러그인 정보 기능(82)은 그 정보 기능 포인터(103)를 이용하여 작업 어카운팅 플러그인 모듈(65)의 자원 부분(100)으로부터 정보 및 대화 특성 시트 속성(110)을 수신하기 위하여 정보 획득 기능(107)을 호출한다.
단계 S607에서, 검출된 플러그인 모듈{이 경우에는 작업 어카운팅 플러그인 모듈(65)}이 user_interface_mod(51)에 의해 지원되는지의 여부를 판단한다. 지원되는 것이 아닌 경우, 처리 수순은 단계 S602로 진행하여, 등록된 플러그인 모듈의 검색을 계속한다. 그 플러그인 모듈이 지원되는 것인 경우, 즉 이 경우에서는 작업 어카운팅이 지원되는 것인 경우, 처리 수순은 단계 S608로 진행하여, 작업 어카운팅 플러그인 모듈(65)로부터 수신된 정보가 로컬 데이터 구조(73)의 분리된 로컬 데이터 구조(140) 내에 저장되게 된다. 단계 S609에서, 대화 구조 기능(83)이 정적 및 플러그인으로부터의 모든 대화 특성 시트의 속성을 운영 시스템(40)에 전달하여, 디스플레이(11) 상의 프린터 드라이버 사용자 인터페이스로서 운영 시스템(40)에 의해 처리되도록 한다. 단계 S610에서, user_interface_mod(51)의 운영 부분(90)이 실행되며, 작업 어카운팅 플러그인 모듈(65)에 의해 지원되는 기능을 구현하는데 필요한, 작업 어카운팅 플러그인 모듈(65)의 기능 부분(130)이 호출되어 운영 부분(90)에 의해 실행된다.
다음으로, 단계 S611에서, user_interface_mod(51)에 의해 결합될 플러그인이 더 존재하는지의 여부를 판단하여, 존재하는 경우, 처리 수순은 단계 S602로 진행한다. 존재하지 않는 경우, 처리 수순은 단계 S612로 진행하여, user_interface_mod(51)은 운영 시스템(40)으로부터 프린터(20)에 대한 이벤트 통지를 수신한다. 단계 S613에서, 수신된 이벤트 통지가 이벤트 핸들러(108)를 이용하여 작업 어카운팅 플러그인 모듈(65)에 의해 요청된 것인지의 여부를 판단한다. 요청된 것인 경우에는, 처리 수순은 단계 S614로 진행하여, 이벤트 통지가 user_interface_mod(51)로부터 작업 어카운팅 플러그인 모듈(65)로 전달되어, 작업 어카운팅 플러그인 모듈(65) 내의 실행가능 코드에 의해 사용되며, 그 후 처리 수순은 단계 S615로 복귀한다. 요청된 것이 아닌 경우, 처리 수순은 바로 단계 S615 로 복귀한다.
도 7은 아무런 플러그인 모듈도 검출되지 않고 user_interface_mod(51)에 아무런 플러그인 모듈도 결합되지 않은 경우의 프린터 드라이버 사용자 인터페이스(220)를 나타낸 도면이다. 도 7에 나타낸 바와 같이, 프린터 드라이버 사용자 인터페이스(220)는 8개의 탭된 대화 특성 시트(221 내지 228)로 구성되며, user_interface_mod(51)에 의해 원래 지원되고 있는 정적 대화 특성 시트를 나타낸다. 이들 8개의 탭된 대화 특성 시트(221 내지 228)는 프린터(20)의 각종 프린팅 양상을 나타낸다.
도 8은 3개의 플러그인 모듈이 검출되어 user_interface_mod(51)에 의해 결합되는 경우의 프린터 드라이버 사용자 인터페이스(220)를 나타낸 도면이다. 도 8에 나타낸 바와 같이, 프린터 드라이버 사용자 인터페이스(220)는 user_interface_mod(51)에 의해 원래 지원되고 있는 정적 대화 특성 시트를 나타내는 8개의 탭된 대화 특성 시트(221 내지 228)를 포함한다. 또한, 프린터 드라이버 사용자 인터페이스(220)는 관리(229), 프린터 설치(230) 및 리다이렉트(231)에 대한 3개의 추가 탭된 대화 특성 시트를 포함하며, 이들은 정책 관리 플러그인 모듈(64), 설치 플러그인 모듈(61) 및 작업 리다이렉트 플러그인 모듈(62)에 대응한다. 이와 같이, 이들 3개의 추가 기능들 각각에 대한 탭된 대화 특성 시트는, user_interface_mod(51)을 수정, 리컴파일 및 테스트할 필요없이, user_interface_mod(51)을 통해 그들 각각의 플러그인에 의해 제공된다.
도 9는 본 발명에 따른 장치 플러그인 모듈의 식별 및 등록을 설명하기 위한 흐름도이다. 단계 S901에서, 플러그인 모듈 등록 애플리케이션(74)이 컴퓨터(10)의 사용자에 의해 액세스된다. 이와 관련하여, 사용자는 컴퓨터(10)의 구성 및 유지를 책임지는 시스템 관리자일 수도 있으며, 단순히 컴퓨터(10)의 사용자일 수도 있다. 전술한 바와 같이, 플러그인 모듈 등록 애플리케이션(74)은 대응하는 장치 예컨대 프린터(20)가 설치되는 때 또는 프린터(20)에 대한 프린터 드라이버(50)에 새로운 기능을 추가시키고자 하는 때에, 고정 디스크(13)의 저장 영역(60)에 액세스 및 로드될 수도 있다. 예컨대, 플러그인 모듈 등록 애플리케이션(74)은 제조사에 의해 프린터(20)에 제공된 설치 파일, 예컨대 CD-ROM으로부터 액세스되거나, 접속 통신로(1)를 통하여 웹을 통해 웹 페이지로부터 액세스되거나, 고정 디스크(13)로부터 액세스되거나, 또는 다른 메모리 매체로부터 액세스될 수 있다. 이 경우, 플러그인 모듈 등록 애플리케이션(74)은 프린터 드라이버(50)의 구성요소들도 함께 설치하는 것이 바람직하다. 또한, 플러그인 모듈 등록 애플리케이션(74)은 프린터(20)의 초기 설치와 연관되지 않은 별도의 애플리케이션으로 구성하고, 웹, CD-ROM, 고정 디스크(13) 또는 기타 메모리 매체로부터 액세스되어 다운로드될 수도 있다.
바람직하게는, 플러그인 모듈 등록 애플리케이션(74)은 프로그램된 코드가 사용될 수도 있지만 설치 스크립트로 이루어진다. 도 9로 돌아가면, 플러그인 모듈 등록 신청(74)에 의해 제공된 이용가능한 플러그인 모듈은 단계 S902에서 디스플레이(11) 상에 표시를 위하여 식별된다. 이용가능한 플러그인 모듈은 플러그인 모듈 등록 애플리케이션(74)이 액세스되는 동일한 위치에서 또는 웹 상의 웹 페이지, CD-ROM, 고정 디스크(13), 또는 다른 기억 매체와 같은 다른 위치에 배치될 수 있다. 바람직하게, 이용가능한 플러그인 모듈은 프린터명, 프린터 타입 또는 몇몇 다른 파라미터에 기초하여 배열되고 정렬될 수 있다. 단계 S903에서 어떤 이용가능한 플러그인 모듈이 식별되었는지를 판단한다. 식별되지 않았으면, 플로우는 단계 S911로 되돌아간다. 이용가능한 플러그인 모듈이 식별되고 표시되면, 적어도 하나의 적용가능한 플러그인 모듈이 단계 S904에서 설치를 위하여 선택된다. 이러한 관점에서, 이용가능한 플러그인 모듈의 선택은 컴퓨터(10)의 사용자에 의한 수동 선택이거나, 또는 컴퓨터(10)의 프린터 드라이버(50)의 검출된 타입에 자동적으로 기초할 수 있다. 후자의 경우는 특히 프린터(20)가 설치된 시점에서 플러그인 모듈이 설치될 때 유용하다.
단계 S905에서 선택된 플러그인 모듈은 원본으로부터 복사되어 고정 디스크(13)의 저장 영역(60)에 저장되고, 레지스트리(41)가 선택된 플러그인 모듈의 등록을 준비하기 위하여 액세스된다. 단계 S906에서 기존의 플러그인 모듈이 선택된 플러그인 모듈과 동일 타입, 또는 동일명인 레지스트리(41)에 이미 등록되어 있는지를 판단한다. 등록되어 있다면, 플로우는 컴퓨터(10)의 사용자가 상황을 통지받는 단계 S907로 가고, 그후 단계 S908에서 사용자가 기존의 플러그인 모듈을 교체하거나, 재명명하여 선택된 플러그인 모듈의 설치를 진행하도록 지시하였는지를 판단한다. 사용자가 교체(또는 재명명)를 선택하면, 플로우가 경우에 따라서 기존의 플러그인 모듈이 삭제되거나 재명명되는 단계 S909로 간다. 그후, 플로우는 단계 S910으로 간다. 반면에, 단계 S908에서 사용자가 기존의 플러그인 모듈을 교체하거나, 재명명하여 선택된 플러그인 모듈의 설치를 진행하도록 지시하지 않았다고 판단되면, 플로우는 단계 S911으로 되돌아간다.
단계 S906에서 기존의 플러그인 모듈이 선택된 플러그인 모듈과 동일한 타입, 또는 동일명인 레지스트리(41)에 아직 등록되지 않았다고 판단되면, 플로우는 단계 S910으로 직접 간다. 이어서 이 경우의 프린터(20)에 선택된 플러그인 모듈에 의해 지원되는 장치에 대한 엔트리에 응답하여 선택된 플러그인 모듈에 대하여 레지스트리(41)에 식별자를 입력한다(단계 S910). 식별자는 도 2에 도시된 레지스트리(41)에서와 같은 장치 식별자에 기초한 엔트리 아래에 입력되거나, user_interface_mod(51)가 이들 엔트리 타입에 기초하여 등록된 플러그인 모듈을 검색하는 동안 장치 타입, 사용자명 또는 컴퓨터명에 기초한 엔트리 아래에 입력될 수 있다. 플로우는 단계 S911로 되돌아간다. 이러한 방식으로, 플러그인 모듈은 대응 장치의 설치 또는 설치 후에 쉽게 액세스되고 설치되고 등록되어, 장치 드라이버를 변경, 리컴파일 및 테스트할 필요없이 장치에 대한 장치 드라이버의 새로운 기능성을 제공할 수 있다.
도 10은 본 발명의 일 실시예에 따른 다중 플러그인 모듈 및 user_interface_mod(51)을 갖는 운영 시스템(40)의 인터페이스를 설명하는 플로우 챠트이다. 단계 S1001에서, 운영 시스템(40)이 프린터 드라이버(50)용 사용자 인터페이스의 주 대화 특성 시트의 표시에 대한 사용자 요청을 수신한다. 운영 시스템(40)은 단계 S1002에서 주 대화 특성 시트의 표시에 대한 사용자 요청에 응답하여 user_interface_mod(51)로 초기화 호출을 송신한다. 이어서 user_interface_mod(51)는 프린터(20)에 대응하는 등록된 플러그인 모듈의 검출을 위하여 레지스트리(41)를 검색한다. 단계 S1004에서, 등록된 플러그인 모듈이 단계 S1003에서 검출되는지를 판단한다. 아무것도 검출되지 않으면, 플로우는 단계 S1019로 되돌아간다. 플러그인 모듈이 검출되면, 플로우는 단계 S1005로 가서, 상술된 바와 같이, user_interface_mod(51)가 정보 포인터를 사용하여 각각의 검출된 플러그인 모듈로부터 탭된 대화 특성 시트에 대응하는 정보 및 속성을 얻는다.
다음에, 단계 S1006에서, user_interface_mod(51)가 user_interface_mod(51)에 의해 고유하게 지원되는 정적 탭된 대화 특성 시트에 대한 정보 및 속성에 따라 얻어진 정보 및 속성을 운영 시스템(40)으로 전달한다. 단계 S1007에서, 운영 시스템(40)이 컴퓨터(10)의 디스플레이(11) 상에 프린터 드라이버 사용자 인터페이스의 주 대화 특성 시트를 전달하고, 여기서 주 대화 특성 시트는 검출된 플러그인 모듈로부터 획득한 다른 탭된 대화 특성 시트에 액세스하기 위한 탭을 갖는다. 운영 시스템(40)은 단계 S1008에서 검출된 플러그인 모듈로부터 얻어진 다른 탭된 대화 특성 시트 중 하나의 시트의 표시에 대한 요청을 수신한다. 단계 S1009에서, 운영 시스템(40)은 검출된 플러그인 모듈 중 하나의 모듈로부터 얻어진 요청된 탭된 대화 특성 시트를 표시한다. 단계 S1010에서 운영 시스템(40)에 의해 표시된 탭된 대화 특성 시트에 의해 지원된 기능을 활용하는 요청이 수신되고, 단계 S1011에서 운영 시스템(40)은 기능 요청을 user_interface_mod(51)로 송신한다.
단계 S1012에서, user_interface_mod(51)는 기능 포인터를 이용하여 기능 요청을 수신한 탭된 대화 특성 시트에 대응하는 플로그인 모듈에서 기능 코드를 액세스하여 실행한다. 이러한 방식으로, 플러그인 모듈은 프린터 드라이버(50)의 user_interface_mod(51)에 의해 고유하게 지원되지 않는 기능을 구현한다. 단계 S1013에서, user_interface_mod(51)에 통합될 플러그인 모듈이 더 없는지를 판단하여, 더 있다면, 플로우는 단계 S1005로 가서 다른 플러그인에 대한 정보를 얻는다. 통합된 플러그인 모듈이 더 없다면, 플로우는 단계 S1014로 직접가서 운영 시스템(40)이 사용자로부터 프린터(20)에 의해 이미지 데이터를 프린트하는 프린트 요청을 수신한다. 운영 시스템(40)은 단계 S1015에서 프린트 요청을 프린터 드라이버(50)로 전달하고, 이미지 데이터가 프린트 작업으로 전해져 단계 S1016에서 프린팅하는 프린터로 송신된다. user_interface_mod(51)는 단계 S1017에서 프린터(20)의 상태를 고려하여 운영 시스템(40)으로부터 이벤트 통지를 수신하고, user_interface_mod(51)가 단계 S1018에서 이벤트 통지를 적합한 플러그인 모듈로 송신한다. 플로우는 단계 S1019로 되돌아간다.
이러한 방식으로, 운영 시스템, 장치 드라이버, 및 드라이버 플러그인 모듈이 조정된 방식으로 함께 기능하여 장치 드라이버의 변경, 리컴파일 및 테스트를 할 필요없이 장치 드라이버에 추가의 기능성을 제공한다.
본 발명은 다른 타입의 장치를 지원하는 프린터 드라이버 이외의 다른 장치 드라이버의 기능 성능을 확장하도록 구현될 수 있음이 이해될 것이다. 또한, 본 발명은 여기서 설명된 것 이상으로, 다른 형태의 운영 시스템으로 장치를 컴퓨팅하고 주변기기를 컴퓨팅하는 다른 타입에서 구현될 수 있다. 또한, 소프트웨어 모듈, 기능, 프로그램, 애플리케이션, 및 다른 파일의 기능 양상이 여기서 설명된 것 이외의 소프트웨어 및 명령의 형태로 구현될 수 있다.
본 발명은 특정한 예시적인 실시예들로 설명되었다. 본 발명은 상술한 실시예에 한정되지 않고 다양한 변경 및 수정이 본 발명의 사상 및 범위로부터 벗어나지 않고 본 기술 분야에서 숙련된 자에 의해 이루어질 수 있다. 특히, 상술된 바와 같이, 본 발명은 네트워크 프린터 뿐만 아니라 다양한 타입의 네트워크 장치를 관리하는데 사용될 수 있다.

Claims (35)

  1. 운영 시스템을 실행하는 컴퓨팅 장치에 의한 외부 장치의 사용을 지원하는 장치 드라이버의 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체로서,
    상기 운영 시스템에 의해 호출되어, 드라이버 플러그인 프로그램의 존재를 검출하고, 상기 검출된 드라이버 플러그인 프로그램으로부터 정보를 얻고, 상기 검출된 드라이버 플러그인 프로그램으로부터 상기 운영 시스템으로 상기 정보를 전달하는 초기화 단계; 및
    상기 검출된 플러그인 프로그램의 기능 부분을 액세스하여 실행하고, 상기 운영 시스템으로부터 상기 외부 장치에 대응하는 이벤트 통지를 수신하고, 상기 검출된 드라이버 플러그인 프로그램이 상기 이벤트 통지를 받아들이는 경우에 상기 이벤트 통지를 상기 검출된 드라이버 플러그인 프로그램으로 전달하는 운영 단계
    를 실행시키기 위한 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  2. 제1항에 있어서, 상기 드라이버 플러그인 프로그램은 상기 컴퓨팅 장치에 의한 표시를 위한 대화 특성 시트(dialog property sheet)에 대응하는 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  3. 제1항에 있어서, 상기 초기화 단계는, 상기 운영 시스템의 시스템 레지스트리에서 상기 드라이버 플러그인 프로그램에 대한 식별자를 검출함으로써 상기 드라이버 플러그인 프로그램의 존재를 검출하는 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  4. 제1항에 있어서, 상기 초기화 단계는 상기 컴퓨팅 장치에 액세스 가능한 기억 매체에 위치하는 데이터베이스 파일에서 상기 드라이버 플러그인 프로그램에 대한 식별자를 검출함으로써 상기 드라이버 플러그인 프로그램의 존재를 검출하는 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  5. 제1항에 있어서, 상기 초기화 단계는 상기 드라이버 플러그인 프로그램 내의 정보 기능 호출에 대한 포인터를 수신하고, 상기 초기화 단계에 정보를 반환하는 정보 기능 호출을 실행함으로써 상기 검출된 드라이버 플러그인 프로그램으로부터 상기 정보를 얻는 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  6. 제1항에 있어서, 상기 검출된 드라이버 플러그인 프로그램으로부터 상기 초기화 단계에서 수신되는 상기 정보는 상기 검출된 드라이버 플러그인 프로그램의 자원 부분의 어드레스를 나타내는 자원 포인터 및 상기 검출된 드라이버 플러그인 프로그램의 기능 부분의 어드레스를 나타내는 기능 포인터를 포함하는 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  7. 제1항에 있어서, 상기 초기화 단계에서 상기 운영 시스템에 전달되는 상기 정보는 상기 검출된 드라이버 플러그인 프로그램으로부터 수신되는 정보의 부분집합인 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  8. 제1항에 있어서, 상기 초기화 단계에서 상기 운영 시스템에 전달되는 상기 정보는 상기 검출된 드라이버 플러그인 프로그램에 의해 지원되는 다수의 대화 특성 시트에 대응하는 정보 및 상기 검출된 드라이버 플러그인 프로그램에 의해 지원되는 각각의 대화 특성 시트의 속성을 포함하는 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  9. 제6항에 있어서, 상기 검출된 드라이버 플러그인 프로그램의 상기 기능 부분은 상기 검출된 드라이버 플러그인 프로그램에 의해 표현되는 기능(funtionality)을 구현하기 위한 실행가능 코드로 이루어진 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  10. 제1항에 있어서, 상기 검출된 드라이버 플러그인 프로그램으로부터 수신되는 상기 정보는 상기 검출된 드라이버 플러그인 프로그램에 의해 지원되는 기능성의 타입을 포함하고, 상기 초기화 단계에서는 상기 기능성의 타입에 기초하여, 상기 운영 시스템에 정보를 전달하고 상기 검출된 드라이버 플러그인 프로그램의 기능 부분을 액세스하여 실행할지를 판단하는 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  11. 제1항에 있어서, 상기 외부 장치는 프린터인 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  12. 제11항에 있어서, 상기 장치 드라이버 프로그램은 사용자 인터페이스 모듈이고, 상기 검출된 드라이버 프로그램은 하나 이상의 대화 특성 시트에 대한 기능을 구현하는 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  13. 제1항에 있어서, 상기 검출된 드라이버 플러그인 프로그램의 기능 부분은 상기 초기화 단계로부터 전달되는 상기 이벤트 통지를 활용하는 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  14. 제1항에 있어서, 상기 초기화 단계에서 얻어진 상기 정보는 상기 검출된 드라이버 플러그인 프로그램이 상기 초기화 기능으로부터 받아들일 하나 이상의 타입의 이벤트 통지에 대응하는 이벤트 요청 지시기(event-request indicator)를 포함하는 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  15. 운영 시스템을 실행하는 컴퓨팅 장치에 의한 프린터의 사용을 지원하는 프린터 드라이버의 사용자 인터페이스 모듈로서,
    상기 운영 시스템에 의해 호출되어, 상기 운영 시스템의 시스템 레지스트리에서 드라이버 플러그인 식별자를 검출하고, 상기 드라이버 플러그인 식별자에 대응하는 드라이버 플러그인 프로그램을 액세스하여 메모리에 로딩하고, 상기 드라이버 플러그인 프로그램으로부터 상기 드라이버 플러그인 프로그램내의 정보 기능 호출에 대한 포인터를 획득하고, 상기 드라이버 플러그인 프로그램으로부터 정보를 수신하기 위해 상기 정보 기능 호출을 실행하고, 상기 수신된 정보를 로컬 데이터 구조에 저장하며, 운영 시스템 기능 호출을 이용하여 상기 수신된 정보의 일부분을 상기 운영 시스템에 전달하는 초기화 부분; 및
    상기 수신된 정보에서 제공되는 기능 포인터를 이용하여 상기 드라이버 플러그인 프로그램의 기능 부분을 액세스하여 실행하고, 상기 운영 시스템으로부터 상기 프린터에 의해 실행되고 있는 프린트 작업에 대응하는 이벤트 통지를 수신하며, 상기 드라이버 플러그인 프로그램이 상기 이벤트 통지를 받아들인다는 것을 상기 수신된 정보에서 제공되는 고객 요청 지시기가 나타내는 경우에, 상기 이벤트 통지를 상기 드라이버 플러그인 프로그램에 전달하는 운영 부분
    을 포함하는 사용자 인터페이스 모듈.
  16. 운영 시스템을 실행하는 컴퓨팅 장치에 의한 외부 장치의 사용을 지원하는 장치 드라이버의 장치 드라이버 프로그램에 의해 사용하기 위한 드라이버 플러그인 프로그램을 기록한 컴퓨터 판독가능 기록매체로서,
    상기 드라이버 플러그인 프로그램은,
    기능 애플리케이션을 지원하는 실행가능 코드를 갖는 기능 수단; 및
    상기 드라이버 플러그인 프로그램에 의해 지원되는 기능에 대응하는 자원 정보 및 정보 기능 호출에 대한 정보 포인터를 포함하는 자원 수단으로 기능하되,
    상기 정보 포인터는 상기 장치 드라이버 프로그램에 의해 액세스되어, 상기 자원 수단의 상기 자원 정보에 대응하는 자원 포인터, 및 상기 기능 수단의 상기 실행가능 코드에 대응하는 기능 포인터를 상기 장치 드라이버 프로그램으로 반송하는 상기 정보 기능 호출을 개시하는 드라이버 플러그인 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  17. 운영 시스템을 실행하는 컴퓨팅 장치에 의한 프린터의 사용을 지원하는 프린터 드라이버의 사용자 인터페이스 프로그램에 의해 사용하기 위한 드라이버 플러그인 프로그램을 기록한 컴퓨터 판독가능 기록매체로서,
    상기 드라이버 플러그인 프로그램은,
    기능 애플리케이션에 대응하는 적어도 하나의 대화 특성 시트를 지원하는 실행가능 코드를 갖는 기능 수단; 및
    상기 드라이버 플러그인 프로그램에 의해 지원되는 다수의 대화 특성 시트, 상기 드라이버 플러그인 프로그램에 의해 지원되는 각각의 대화 특성 시트의 타입, 상기 드라이버 플러그인 프로그램에 의해 지원되는 각각의 대화 특성 시트의 속성, 정보 기능 호출에 대한 정보 포인터, 및 이벤트 핸들러에 대한 이벤트 포인터를 포함하는 자원 정보를 포함하는 자원 수단으로 기능하되,
    상기 정보 포인터는 상기 사용자 인터페이스 프로그램에 의해 액세스되어, 상기 자원 수단의 상기 자원 정보에 대응하는 자원 포인터, 및 상기 기능 수단의 상기 실행가능 코드에 대응하는 기능 포인터를 상기 사용자 인터페이스 프로그램으로 반송하는 상기 정보 기능 호출을 개시하고,
    상기 이벤트 포인터는 상기 사용자 인터페이스 프로그램에 의해 사용되어, 상기 사용자 인터페이스 프로그램에 의해 수신된 상기 이벤트 통지를 상기 운영 시스템으로부터 상기 드라이버 플러그인 프로그램으로 전달하는 상기 이벤트 핸들러를 개시시키고, 상기 이벤트 통지는 상기 프린터에 의해 수행되고 있는 프린트 작업의 상태에 대응하는 드라이버 플러그인 프로그램을 기록한 컴퓨터 판독가능 기록매체.
  18. 컴퓨팅 장치에 의한 외부 장치의 사용을 지원하는 장치 드라이버의 장치 드라이버 프로그램에 의해 사용하기 위한 드라이버 플러그인 프로그램을 등록하는 방법으로서,
    외부 소스 상에 위치하는 적어도 하나의 이용가능한 드라이버 플러그인 프로그램을 식별하는 단계;
    상기 컴퓨팅 장치 상에 설치하기 위하여 적어도 하나의 상기 이용가능한 드라이버 플러그인 프로그램을 선택하는 단계; 및
    상기 컴퓨팅 장치의 메모리에 각각의 선택된 드라이버 플러그인 프로그램을 저장하고, 상기 컴퓨팅 장치 상에서 실행되고 있는 운영 시스템의 시스템 레지스트리에 각각의 선택된 드라이버 플러그인 프로그램에 대응하는 식별자를 입력함으로써 상기 컴퓨팅 장치 상에 각각의 선택된 드라이버 플러그인 프로그램을 설치하는 단계
    를 포함하는 드라이버 플러그인 프로그램 등록 방법.
  19. 제18항에 있어서, 상기 방법은 상기 장치 드라이버의 설치를 위해 제공되는 설치 스크립트에 의해 실행되는 드라이버 플러그인 프로그램 등록 방법.
  20. 제18항에 있어서, 상기 방법은 애플리케이션에 의해 실행되는 드라이버 플러그인 프로그램 등록 방법.
  21. 제20항에 있어서, 상기 애플리케이션은 웹 페이지로부터 액세스되는 드라이 버 플러그인 프로그램 등록 방법.
  22. 제18항에 있어서, 각각의 식별자는 상기 외부 장치의 이름에 대응하는 시스템 레지스트리 위치에 입력되는 드라이버 플러그인 프로그램 등록 방법.
  23. 제18항에 있어서, 각각의 식별자는 사용자의 이름에 대응하는 시스템 레지스트리 위치에 입력되는 드라이버 플러그인 프로그램 등록 방법.
  24. 제18항에 있어서, 각각의 식별자는 상기 컴퓨팅 장치의 이름에 대응하는 시스템 레지스트리 위치에 입력되는 드라이버 플러그인 프로그램 등록 방법.
  25. 제18항에 있어서, 각각의 식별자는 상기 외부 장치 타입에 대응하는 시스템 레지스트리 위치에 입력되는 드라이버 플러그인 프로그램 등록 방법.
  26. 제18항에 있어서, 새로운 플러그인 프로그램이 설치되는 경우에 상기 사용자 인터페이스내의 탭 시트(tab sheet)의 수가 증가하도록 상기 디스플레이 상에 표시되는 상기 드라이버의 사용자 인터페이스의 컨텐츠를 제어하는 단계를 더 포함하는 드라이버 플러그인 프로그램 등록 방법.
  27. 컴퓨터 실행가능 처리 단계를 저장하는 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 실행가능 처리 단계는 운영 시스템을 실행하는 컴퓨팅 장치에 의한 외부 장치의 사용을 지원하고, 제18항 내지 제26항 중 어느 한 항에 따른 방법을 실행하는 처리 단계를 포함하는 컴퓨터 판독가능 매체.
  28. 컴퓨팅 장치에 의한 외부 장치의 사용을 지원하는 장치 드라이버의 장치 드라이버 프로그램에 의해 이용하기 위한 드라이버 플러그인 프로그램을 등록하는 장치로서,
    외부 소스 상에 위치하는 적어도 하나의 이용가능한 드라이버 플러그인 프로그램을 식별하는 식별 수단;
    상기 컴퓨팅 장치 상에 설치하기 위한 상기 적어도 하나의 이용가능한 드라이버 플러그인 프로그램을 선택하는 선택 수단; 및
    상기 컴퓨팅 장치 상의 메모리에 각각의 선택된 드라이버 플러그인 프로그램을 저장하고, 상기 컴퓨팅 장치에서 실행되고 있는 운영 시스템의 시스템 레지스트리에 각각의 선택된 드라이버 플러그인 프로그램에 대응하는 식별자를 입력함으로써 상기 컴퓨팅 장치 상에 각각의 선택된 드라이버 플러그인 프로그램을 설치하는 설치 수단
    을 포함하는 드라이버 플러그인 프로그램 등록 장치.
  29. 제28항에 있어서, 상기 장치는 상기 장치 드라이버의 설치를 위해 제공되는 설치 스크립트에 의해 제어되는 드라이버 플러그인 프로그램 등록 장치.
  30. 제28항에 있어서, 새로운 플러그인 프로그램이 설치되는 경우에 상기 사용자 인터페이스에서의 탭 시트의 수가 증가하도록 상기 디스플레이 상에 표시되는 상기 드라이버의 사용자 인터페이스의 컨텐츠를 제어하는 제어 수단을 더 포함하는 드라이버 플러그인 프로그램 등록 장치.
  31. 제28항에 있어서, 상기 장치는 애플리케이션에 의해 제어되는 드라이버 플러그인 프로그램 등록 장치.
  32. 제31항에 있어서, 상기 애플리케이션은 웹 페이지로부터 액세스되는 드라이버 플러그인 프로그램 등록 장치.
  33. 제28항에 있어서, 각각의 식별자는 상기 외부 장치의 이름에 대응하는 시스템 레지스트리 위치에 입력되는 드라이버 플러그인 프로그램 등록 장치.
  34. 제28항에 있어서, 각각의 식별자는 사용자의 이름에 대응하는 시스템 레지스트리 위치에 입력되는 드라이버 플러그인 프로그램 등록 장치.
  35. 제29항에 있어서, 각각의 식별자는 상기 컴퓨팅 장치의 이름에 대응하는 시스템 레지스트리 위치에 입력되는 드라이버 플러그인 프로그램 등록 장치.
KR1020030025792A 2002-04-23 2003-04-23 확장 가능한 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체, 드라이버 플러그인 프로그램을 등록하는 방법 및 장치 KR100578434B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020030025792A KR100578434B1 (ko) 2002-04-23 2003-04-23 확장 가능한 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체, 드라이버 플러그인 프로그램을 등록하는 방법 및 장치

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/0131,012 2002-04-23
KR1020030025792A KR100578434B1 (ko) 2002-04-23 2003-04-23 확장 가능한 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체, 드라이버 플러그인 프로그램을 등록하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20030084709A KR20030084709A (ko) 2003-11-01
KR100578434B1 true KR100578434B1 (ko) 2006-05-11

Family

ID=41746177

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030025792A KR100578434B1 (ko) 2002-04-23 2003-04-23 확장 가능한 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체, 드라이버 플러그인 프로그램을 등록하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100578434B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101235859B1 (ko) 2007-10-10 2013-02-20 삼성전자주식회사 어플리케이션에 대응하는 프린터 드라이버 구동방법 및장치와 프린터 드라이버 설치방법 및 장치
KR101294308B1 (ko) * 2011-07-15 2013-08-08 엘지전자 주식회사 설비 관제 시스템 및 이의 운전 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR200453563Y1 (ko) * 2009-06-18 2011-05-13 조인현 피뢰도선용 고정장치
CN114237758B (zh) * 2021-12-21 2024-02-02 元心信息科技集团有限公司 通信连接方法、装置、电子设备及计算机可读存储介质
CN116708063B (zh) * 2022-12-23 2024-06-11 荣耀终端有限公司 日志上报方法、电子设备、云服务器及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101235859B1 (ko) 2007-10-10 2013-02-20 삼성전자주식회사 어플리케이션에 대응하는 프린터 드라이버 구동방법 및장치와 프린터 드라이버 설치방법 및 장치
US8407727B2 (en) 2007-10-10 2013-03-26 Samsung Electronics Co., Ltd. Method and apparatus for driving printer driver according to a determined application and method and apparatus for installing the printer driver
KR101294308B1 (ko) * 2011-07-15 2013-08-08 엘지전자 주식회사 설비 관제 시스템 및 이의 운전 방법

Also Published As

Publication number Publication date
KR20030084709A (ko) 2003-11-01

Similar Documents

Publication Publication Date Title
JP3745344B2 (ja) 拡張性を有するデバイスドライバ
KR100675242B1 (ko) 정보 처리 장치 및 그 제어 방법
Nagel et al. Professional c# 2005
CN100561435C (zh) 信息处理装置和信息处理方法
RU2412474C2 (ru) Способ и система для создания, хранения, управления и потребления специфичных культуре данных
US20030011640A1 (en) System and methods for implementing peripheral device front menu panels
EP1701254A1 (en) Resource authoring with re-usability score and suggested re-usable data
US7069294B2 (en) Browser based multiple file upload
EP1701255B1 (en) Authoring implementing application localization rules
KR20070049166A (ko) 목표 기기 상에서의 종속 소프트웨어 패키지의 검출 및이용을 자동화하기 위한 방법 및 소프트웨어 리포지터리를생성하기 위한 시스템
US6738156B1 (en) Reusable job editing and delivery system
US10809993B2 (en) System, management device, information processing device, control method for management device, control method for information processing device, and computer-readable storage medium
JP5166318B2 (ja) 情報を処理する装置、方法およびプログラム
US20130163025A1 (en) Data processing apparatus having a printer driver for changing an output destination
JP2006164240A (ja) データ処理装置および印刷設定処理方法およびコンピュータが読み取り可能な制御プログラムを格納した記憶媒体および制御プログラム
JP5553670B2 (ja) 管理装置、その制御方法およびプログラム
JP2000298567A (ja) インターネット・ベース・プリンティング
JP2012530972A (ja) 管理されたシステム拡張子機能
US10878055B2 (en) Web server
US10356267B2 (en) Information processing apparatus, control method, and storage medium
KR100578434B1 (ko) 확장 가능한 장치 드라이버 프로그램을 기록한 컴퓨터 판독가능 기록매체, 드라이버 플러그인 프로그램을 등록하는 방법 및 장치
JP4846030B2 (ja) 動作検証装置、動作検証方法および動作検証プログラム
JP2006163993A (ja) データ処理システムおよびデータ処理装置およびデータ処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
JP2003108355A (ja) デバイス制御装置及び方法、通信デバイス及びその制御方法、デバイス制御システム、プログラム並びに記憶媒体
GB2396035A (en) Preview and editing of print jobs

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130425

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140424

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee