KR100988961B1 - 사이드 바이 사이드 드라이버 - Google Patents

사이드 바이 사이드 드라이버 Download PDF

Info

Publication number
KR100988961B1
KR100988961B1 KR1020050017151A KR20050017151A KR100988961B1 KR 100988961 B1 KR100988961 B1 KR 100988961B1 KR 1020050017151 A KR1020050017151 A KR 1020050017151A KR 20050017151 A KR20050017151 A KR 20050017151A KR 100988961 B1 KR100988961 B1 KR 100988961B1
Authority
KR
South Korea
Prior art keywords
driver
files
package
delete delete
name
Prior art date
Application number
KR1020050017151A
Other languages
English (en)
Other versions
KR20060043307A (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 마이크로소프트 코포레이션
Publication of KR20060043307A publication Critical patent/KR20060043307A/ko
Application granted granted Critical
Publication of KR100988961B1 publication Critical patent/KR100988961B1/ko

Links

Images

Classifications

    • EFIXED CONSTRUCTIONS
    • E04BUILDING
    • E04HBUILDINGS OR LIKE STRUCTURES FOR PARTICULAR PURPOSES; SWIMMING OR SPLASH BATHS OR POOLS; MASTS; FENCING; TENTS OR CANOPIES, IN GENERAL
    • E04H1/00Buildings or groups of buildings for dwelling or office purposes; General layout, e.g. modular co-ordination or staggered storeys
    • E04H1/12Small buildings or other erections for limited occupation, erected in the open air or arranged in buildings, e.g. kiosks, waiting shelters for bus stops or for filling stations, roofs for railway platforms, watchmen's huts or dressing cubicles
    • E04H1/1205Small buildings erected in the open air
    • E04H1/1216Public W.C.s
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F24HEATING; RANGES; VENTILATING
    • F24DDOMESTIC- OR SPACE-HEATING SYSTEMS, e.g. CENTRAL HEATING SYSTEMS; DOMESTIC HOT-WATER SUPPLY SYSTEMS; ELEMENTS OR COMPONENTS THEREFOR
    • F24D13/00Electric heating systems
    • F24D13/02Electric heating systems solely using resistance heating, e.g. underfloor heating
    • F24D13/022Electric heating systems solely using resistance heating, e.g. underfloor heating resistances incorporated in construction elements
    • F24D13/024Electric heating systems solely using resistance heating, e.g. underfloor heating resistances incorporated in construction elements in walls, floors, ceilings
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F24HEATING; RANGES; VENTILATING
    • F24HFLUID HEATERS, e.g. WATER OR AIR HEATERS, HAVING HEAT-GENERATING MEANS, e.g. HEAT PUMPS, IN GENERAL
    • F24H3/00Air heaters
    • F24H3/02Air heaters with forced circulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • EFIXED CONSTRUCTIONS
    • E04BUILDING
    • E04FFINISHING WORK ON BUILDINGS, e.g. STAIRS, FLOORS
    • E04F2290/00Specially adapted covering, lining or flooring elements not otherwise provided for
    • E04F2290/02Specially adapted covering, lining or flooring elements not otherwise provided for for accommodating service installations or utility lines, e.g. heating conduits, electrical lines, lighting devices or service outlets
    • E04F2290/023Specially adapted covering, lining or flooring elements not otherwise provided for for accommodating service installations or utility lines, e.g. heating conduits, electrical lines, lighting devices or service outlets for heating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Architecture (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Mechanical Engineering (AREA)
  • Thermal Sciences (AREA)
  • Civil Engineering (AREA)
  • Structural Engineering (AREA)
  • Stored Programmes (AREA)

Abstract

후속 버전 또는 공통된 이름을 갖는 다른 드라이버에 의해 덮어 쓰여지는 것을 방지하기 위한 방법 및 시스템은, 모든 적합한 드라이버 패키지에 대한 고유 식별자를 생성하는 것을 포함한다. 그러면, 드라이버 패키지로부터의 드라이버 파일들 또는 전체 드라이버 패키지 자체는 상기 고유 식별자에 기초하여 공통 저장소의 서브디렉토리 위치에 설치된다. 드라이버 파일들은 서브디렉토리 위치로부터 메모리로 로드될 수 있다. 따라서, 동일한 이름을 갖는 다수의 드라이버 패키지와 드라이버 파일들이 사이드 바이 사이드 방식으로 설치되고 로드될 수 있다.
드라이버 패키지, 드라이버 이미지 파일, 드라이버 파일, 공통된 이름, 강한 이름, 드라이버 충돌

Description

사이드 바이 사이드 드라이버{SIDE-BY-SIDE DRIVERS}
도 1은 컴퓨팅 장치에 플러그인되거나 부착될 수 있는 다수의 주변 장치들 중 적어도 하나를 지원하기 위해 드라이버 패키지를 설치하는 예시적인 컴퓨팅 장치.
도 2는 예시적인 실시예에 따라 설치될 수 있는 예시적인 드라이버 패키지.
도 3은 사이드 바이 사이드 드라이버의 설치를 구현하는 기능적 컴포넌트들을 도시하고, 그 컴포넌트들에 관련된 처리 흐름의 예를 보여주는 도면.
도 4는 도 3의 예로부터의 저장 컴포넌트 예.
도 5는 도 3의 예와 다른 저장 컴포넌트의 또다른 예.
도 6은 본 명세서의 기술을 구현하기 위해 사용될 수 있는 일반적인 컴퓨터 네트워크 환경의 예.
<도면의 주요 부분에 대한 부호의 설명>
105: 컴퓨팅 장치
110: 드라이버 패키지
115: 사이드 바이 사이드 설치자
120: 복사기
125: 프린터
130: 게임 콘솔
135: 휴대형 정보 단말기
140: 무선 전화
145: 캠코더
본 발명은 동일한 이름을 갖는 다수의 드라이버가 동시에 설치되고 로드되게 하는 것에 관한 것이다.
드라이버 이미지 파일(또는 "드라이버")은 컴퓨팅 장치를 위한 운영 시스템을 주변 장치로 연결하는 프로그램 루틴이다. 드라이버 이미지 파일은 대응하는 프로그램 코드에 의해 요청된 기능을 수행하기 위하여 주변 장치에 의해 이용되는 기계 언어를 포함한다. 컴퓨팅 장치와 협력하여 사용될 수 있는 주변 장치에 대해, 주변장치가 자신의 목적된 기능들을 수행할 수 있기 전에, 드라이버 이미지 파일을 포함한 연관된 드라이버 파일들을 포함하는 드라이버 패키지(driver package)가 컴퓨팅 장치의 하드 드라이브에 설치된다.
컴퓨팅 장치의 하드 드라이브에 설치된 드라이버 패키지의 수는 컴퓨팅 장치의 운영 시스템에 의해 지원되는 주변장치의 수에 따라 증가한다. 특히, 컴퓨팅 장치와 함께 사용되는 거의 모든 주변장치들에 대해서, 기존 드라이버 패키지나 기존 드라이버 패키지에 관련된 드라이버 파일들을 대체 혹은 갱신하기 위하여, 다소 규칙적인 흐름의 드라이버 패키지가 컴퓨팅 장치의 하드 드라이브에 설치된다.
불행히도, 주변장치 및 대응 드라이버 패키지의 판매업자들은 전술한 드라이버 패키지와 관련된 드라이버 파일들의 새롭고 갱신된 버전에 대해 종종 동일한 이름을 사용한다. 새로운 혹은 갱신된 드라이버 패키지나 관련 드라이버 파일들은 컴퓨팅 장치의 하드 드라이버에 설치될 때 일반적으로, 기존에 설치된 드라이버 패키지들에 관련된 공통의 이름을 갖는 드라이버 파일들이 동일한 주변장치에 관한 것인지에 상관없이, 기존의 드라이버 패키지들을 덮어쓴다. 따라서, 드라이버 파일 이름의 반복적인 사용은 본 기술분야에서 숙련된 기술을 가진 자들이 "드라이버 충돌(driver collisions)"이라 일컫는 것을 야기시킨다. 드라이버 파일 충돌의 결과로서, 특정 드라이버 파일을 사용하는 주변 장치는 실제로 의도된 드라이버 파일과 동일한 이름을 가지는 또 다른 드라이버 파일을 불러들이거나, 나중에 설치된 동일한 이름을 갖는 드라이버 파일에 의해 덮어 쓰여졌기 때문에 더이상 존재하지 않는 드라이버 파일을 불러들일 수도 있다.
워싱턴주 레드몬드 시의 마이크로 소프트 사의 연구원들은 157,000개 이상의 드라이버 파일들이 현 버전의 윈도우 운영 시스템에 의해 지원되는 것으로 알려지고 있지만, 이들 중 대략 26,000개의 드라이버 파일들만이 고유의 이름을 갖고 있는 것으로 결정했다. 즉, 운영 시스템에 의해 지원되는 131,000에 가까운 드라이버 파일들이 중복된 이름을 가진다. 더 나아가, 연구에 의하면 주변 장치들의 판매업자에 의해 제출된 고유의 이름을 갖는 드라이버 파일들의 수는 하루에 적어도 12개의 비율로 증가하고 있지만, 운영 시스템에 의해 지원되는 새로운 드라이버 파일의 총 수는 하루에 150개 이상의 비율로 증가하고 있는 것을 확인하였다. 즉, 반복되는 이름을 가지는 드라이버 파일들이 대략 하루에 138개의 비율로 추가된다. 따라서, 드라이버 충돌의 비율 또한 증가한다.
다음 시나리오는 하나의 운영 시스템에 로드된 드라이버 파일들이 중복된 이름을 가짐으로써 발생하는 문제점들을 예시하고 있다. 본 예는, 프린터를 컴퓨터에 플러그인하고 해당 드라이버 패키지를 설치한 사용자를 고려한다. 드라이버 패키지는 어떤 파일들이 포함되어 있는지를 나타내는 정보 파일 "INF"를 포함한다. 전형적으로, 상기 INF 파일은 적어도 사용자 컴퓨터의 하드 드라이브에 설치되는 드라이버 이미지 파일(예를 들어, "foo.sys")의 존재를 나타낸다. 상기 예는 더 나아가 사용자가 이어서 복사기를 컴퓨터에 플러그인하고, 역시 "foo.sys" 라고 이름붙여진 드라이버 이미지 파일을 갖는 해당 드라이버 패키지를 설치하는 것을 고려한다. 현재 구현된 솔루션 하에서, 가장 최근에 플러그인된 복사기에 해당하는 드라이버 이미지 파일 foo.sys가 프린터에 해당하는 더 오래된 드라이버 이미지 파일 foo.sys 위에 설치된다. 결과적으로, 해당하는 응용 프로그램에 의한 사용을 위해 컴퓨터의 메모리로 복사기에 해당하는 foo.sys를 로드하려는 시도가 행해질 때, 프린터를 사용하려는 어떠한 시도도 드라이버 충돌을 일으키게 된다. 따라서, 상기 프린터는 사용자의 컴퓨터에서 실행할 수 없다.
또 다른 예시적인 시나리오는 상이한 버전의 주변 장치들을 상이한 버전의 드라이버 이미지 파일들에 의해 구동하고자 하는 판매업자들에 관한 것이다. 그러 나, 초기 버전의 드라이버 이미지 파일을 갱신하거나 업그레이드할 때 판매업자가 적어도 하나의 드라이버 이미지 파일의 이름을 변경하는 것을 실패하면, 현재 버전의 드라이버 이미지 파일을 요구하는 주변 장치는 의도된 드라이버 이미지 파일을 메모리로 로드할 수 없고, 따라서 상기 주변 장치는 컴퓨팅 장치에서 동작할 수 없다. 즉, 현 버전의 드라이버 이미지 파일과 동일한 이름을 갖는 새로운 혹은 갱신된 드라이버 이미지 파일은 이전 버전의 드라이버 이미지 파일을 대신하여 컴퓨팅 장치의 하드 드라이브에 설치된다.
본 발명에서, 드라이버들을 사이드 바이 사이드 방식으로 설치하고 로드하는 방법이 기술된다. 컴퓨터와 함께 사용될 수 있는 주변 장치들을 지원할 때, 드라이버 패키지가 컴퓨팅 장치의 하드 드라이브에 설치된다. 이러한 드라이버 패키지에 대해 강한 이름(strong name)이 생성될 수 있다. 그러면, 강한 이름은 상기 드라이버 패키지 및 관련 드라이버 파일들이 다른 드라이버 패키지 및 다른 관련 드라이버 파일들과 동일한 이름을 공유하는지에 관계없이, 드라이버 패키지 및 관련 드라이버 파일들에게 공통 저장소(common storage) 내의 고유 서브 디렉토리 위치를 할당하기 위한 기초로서 사용될 수 있다.
이하의 상세한 설명에서, 실시예들은 단지 예시로서 기술되며 당업자라면 후술될 설명으로부터 다양한 변화와 변형들을 쉽게 알 수 있을 것이다. 도면에서, 참조번호의 제일 앞자리의 숫자는 해당 참조번호가 처음 나타나는 도면을 나타낸다. 상이한 도면들에서 같은 참조번호의 사용은 유사하거나 동일한 항목임을 나타 낸다.
이하의 설명은 관련 드라이버 파일들을 포함하는 드라이버 패키지를 설치하고 로딩하기 위한 기술에 관한 것이다. 적어도 하나의 드라이버 이미지 파일을 포함하는 드라이버 파일들은 회로 접속(hardwired)이나 무선 방식으로 해당 컴퓨팅 장치와 협력할 수 있는 주변 장치를 지원하기 위하여 드라이버 패키지의 일부로서 컴퓨팅 장치의 하드 드라이브에 설치된다. 그러나, 새로운 갱신된 버전의 드라이버 파일들이 이전에 설치된 드라이버 파일들과 동일한 이름을 갖는 경우가 자주 있기 때문에, 다양한 주변 장치들이 동작할 때 드라이버 충돌이 빈번히 발생한다.
본 실시예는 공통된 이름을 갖는 드라이버 패키지와 관련 드라이버 파일들이 사이드 바이 사이드(side-by-side) 방식으로 설치되고 로드되는 것을 가능하게 한다. 즉, 본 실시예는 공통된 이름을 가진 둘 이상의 드라이버 패키지 및/또는 관련 드라이버 파일이 프로세싱 충돌을 일으키지 않고 동일한 하드 드라이브에 설치되고 하나의 메모리로 로드되는 것을 가능하게 한다. 더 상세하게는, 설치는 각 드라이버 패키지와 그들의 관련 드라이버 파일들을 고유하게 할당된 공통 저장소의 서브디렉토리에 저장하는 것을 포함한다. 서브디렉토리는 공통된 이름을 가진 다른 드라이버 패키지와 관련 드라이버 파일들을 설치하는 다른 서브디렉토리에 사이드 바이 사이드 방식이 아니라면 아주 근접하여 있다. 각 서브디렉토리는 각 드라이버 패키지에 대한 강한 이름에 따라 할당된다. 강한 이름은 드라이버 패키지에 대한 고유 식별자이고, 어떤 컴퓨팅 장치에 있는 드라이버 패키지를 식별하는 데에 사용될 수 있다.
도 1은 사이드 바이 사이드 설치자(side-by-side installer)(115)를 사용하여 드라이버 패키지(110)를 설치하는 컴퓨팅 장치(105)의 예를 보여준다. 드라이버 파일을 포함하는 드라이버 패키지(110)는 회로 접속 또는 무선 방식으로 컴퓨팅 장치(105)와 협력할 수 있는 주변 장치를 지원하기 위하여 컴퓨팅 장치(105)의 하드 드라이브에 설치된다. 컴퓨팅 장치(105)와 협력할 수 있는 주변 장치들의 예들의 리스트는 복사기(120), 프린터(125), 게임 콘솔(130), 휴대형 정보 단말기(personal digital assistant: PDA)(135), 무선 전화(140) 및 캠코더(145)를 포함하지만, 이러한 리스트가 모든 예를 일일이 열거하는 것은 아니다. 도시되지 않은 다른 주변 장치들은 청각/시각적 데이터의 입력/출력, 데이터 파일들의 전송 등과 관련될 수 있다. 그러한 주변 장치들은 컴퓨팅 장치(105)에 설치되거나, 부착 혹은 플러그 인될 때, 혹은 컴퓨팅 장치(105)와 무선으로 통신할 때 컴퓨팅 장치(105)와 협력할 수 있다.
또한, 컴퓨팅 장치(105)는 데스크탑 개인용 컴퓨터(PC), 워크스테이션, 메인프레임 컴퓨터, 인터넷 장치, 및 게임 콘솔을 포함하는 다양한 종래의 컴퓨팅 장치 중 어떤 것도 될 수 있다. 또한, 컴퓨팅 장치(105)는 유선 또는 무선 링크에 의해 네트워크와 통신할 수 있는 네트워크 관련 장치일 수 있으며, 그러한 장치는 PDA, 랩탑 컴퓨터 및 휴대 전화(120) 등을 포함하지만 이들로 제한되지는 않는다. 클라이언트 혹은 서버 장치의 예시적인 실시예가 도 6을 참조하여 더 상세히 기술될 것이다.
드라이버 패키지(110)는 사이드 바이 사이드 설치자(115)에 의해 컴퓨팅 장 치(105)의 하드 드라이버에 설치될 수 있다. 관련 드라이버 파일들을 포함하는 드라이버 패키지(110)는 CD-ROM, 플래시 메모리 또는 플로피 디스크 등을 포함하는 컴퓨터 액세스가능 매체를 통해 컴퓨팅 장치(105)의 사이드 바이 사이드 설치자(115)에 의해 수신될 수 있다. 대안적으로, 드라이버 패키지(110)와 관련 파일들은 운영 시스템 갱신의 일부로서 네트워크를 통해 혹은 웹사이트나 중앙 서버 장치로부터의 다른 형태의 데이터 전송을 통해 컴퓨팅 장치(105)의 사이드 바이 사이드 설치자(115)에 의해 수신될 수 있다.
도 2는 드라이버 패키지(110)의 예를 도시한다. 그러나, 본 예에 따라 사이드 바이 사이드 방식으로 설치되는 상기 드라이버 패키지 또는 그들의 관련 드라이버 파일들은 도 2에 도시된 것으로 제한되지 않는다.
주변 장치의 판매업자는 전형적으로 컴퓨팅 장치(105)에서 주변 장치의 기능을 지원하기 위하여 드라이버 패키지(110)와 관련 드라이버 파일들을 제공한다. 드라이버 패키지(110)와 관련될 수 있는 드라이버 파일들의 예로는 장치 셋업 정보 파일(즉, INF) (210), 적어도 하나의 드라이버 이미지 파일(즉, ".sys") (215), 드라이버 카탈로그 파일(220), 하나 이상의 협동 설치자(co-installer) 파일(225), 및 고객 장치 로딩 응용 프로그램(custom device loading application), 장치 아이콘, 드라이버 라이브러리 파일 등을 포함하는 기타 파일들(230)이 포함된다.
장치 셋업 정보 파일(INF)(210)은 운영 시스템을 위한 셋업 컴포넌트가 주변장치에 대한 지원을 로드하는 데에 사용하는 정보를 포함한다.
드라이버 이미지 파일(215)은 드라이버에 대한 이미지 파일을 포함한다. 드 라이버 이미지 파일에 대한 확장자의 제한되지 않는 예는 마이크로소프트 윈도우즈 ® 운영 시스템에서 사용되고 있는 ".sys"이다. 드라이버 이미지 파일은 운영 시스템과 컴퓨팅 장치(105)와 협력하여 사용될 주변 장치 사이의 인터페이스를 제공하기 때문에, 종종 총칭적으로 "드라이버"로 칭해진다.
드라이버 카탈로그 파일(220)은 주변 장치 및/또는 드라이버 패키지의 판매업자에 대응하는 디지털 서명을 포함한다. 드라이버 카탈로그 파일(220)은 또한 디지털 서명에 포함되거나 혹은 그것에 첨부되는 방식으로, 판매업자에 대응하는 공유키(public key) 혹은 공유키 토큰(public key token)을 포함한다.
협동 설치자(225)는 컴퓨팅 장치(105)에 설치되거나 부착된 주변 장치의 설치와 관리를 돕는 선택적인 드라이버 파일이다.
도 3은 드라이버 파일을 사이드 바이 사이드 방식으로 설치하기 위한 예시적인 처리 흐름을 구현하기 위한 실시예의 기능 컴포넌트를 보여준다.
도 3의 예에 따르면, 주변 장치가 유선이나 무선 방식으로 컴퓨팅 장치(105)와 연관되기 전 또는 후에, 설치자(115)는 컴퓨팅 장치(105)로 드라이버 패키지(110)를 수신한다. 이전에 언급된 것과 같이, 드라이버 패키지(110)는 예를 들어 CD-ROM, 플래시 메모리, 플로피 디스크 등의 컴퓨터 액세스가능 매체로부터, 또는 네트워크를 통한 온라인으로 수신될 수 있다.
설치자(115)는 드라이버 패키지(110)를 수신하고, 드라이버 패키지(110)에 대한 "강한 이름"(305)을 생성하는, 컴퓨팅 장치(105)와 연관된 모듈 혹은 컴포넌트이다. 강한 이름(305)은 적어도 컴퓨팅 장치(105)에 있는 드라이버 패키지(110) 에 대한 고유 식별자이다. 더 나아가, 강한 이름(305)은 드라이버 패키지(110)와, 상기 드라이버 패키지(110)에 관련된 드라이버 파일들(210, 215, 220, 225, 230) 중 어느 하나를 고유하게 식별하는 데에 이용될 수 있다.
설치자(115)는 드라이버 패키지(110)에 포함되거나 관련된, 혹은 첨부된 데이터의 함수로서 강한 이름(305)을 생성한다. 보다 상세하게, 강한 이름(305)은 드라이버 패키지(110)에 관련된 드라이버 파일들(210, 215, 220, 225, 230)로부터의 데이터의 임의의 조합의 해시(hash)로서, 그러한 데이터 중 임의의 것의 연결(concatenation), 혹은 상기 해시와 연결의 다양한 조합으로서 생성될 수 있다. 예를 들어, 강한 이름(305)은 드라이버 카탈로그 파일(220)의 SHA1 해시(20bytes), 장치 셋업 정보 파일(즉, INF)(210)의 적어도 한 부분, 및 장치 셋업 정보 파일(210)의 버전, 날짜, 구조, 언어 중 적어도 하나를 사용하여 생성될 수 있다. 대안적으로, 강한 이름(305)은 예를 들어 INF 파일의 일부로서 드라이버 패키지(110)에 포함될 수 있다. 그러한 정보는 드라이버 파일들의 버전이나 제조업자의 이름을 포함할 수 있다. 따라서, 강한 이름(305)을 "생성"하는 것은 단지 드라이버 패키지에 있는 적당한 파일로부터 강한 이름을 추출하는 기능이다.
강한 이름(305)을 생성하는 것의 바람직한 효과는 드라이버 패키지(110)와 그 관련 드라이버 파일들을 이후에 일어나는 식별과 지원 목적을 위하여 판매업자에게 다시 관련시키는 것일 수 있다. 그러므로, 강한 이름(305)은 판매업자의 이름, 판매업자의 공유키나 공유키 토큰, 드라이버 패키지의 버전, 및 드라이버 패키지(110)에 관련된 다른 드라이버 파일들의 임의의 조합의 해시 및/또는 연결을 더 포함할 수 있다. 그러한 데이터는 단지 예로서 제공되며, 특히 드라이버 패키지가 계속 발전하고 있다는 관점에서 볼 때, 한정하기 위한 것이 아니다.
도 3의 예에서, 설치자(115)는 드라이버 파일(310)에게 드라이버 저장소(315)에서의 고유 저장 위치를 할당하기 위하여 강한 이름(305)을 사용할 수 있다. 고유 저장 위치는 전체 드라이버 패키지(110)에, 또는 드라이버 패키지(110)에 관련된 하나 이상의 드라이버 파일들에 할당될 수 있고, 이러한 파일로는 드라이버 패키지(110) 자체, 혹은 장치 셋업 정보 파일(210), 드라이버 이미지 파일(215), 드라이버 카탈로그 파일(220), 협동 설치자(225), "기타" 파일(230)의 임의의 조합도 포함될 수 있다.
드라이버 저장소(315)는 다수의 서브디렉토리를 포함하는 컴퓨팅 장치(105)와 연합된 저장 컴포넌트(storage component) 또는 모듈(module)이며, 각 서브디렉토리는 강한 이름(305)이 생성된 개개의 드라이버 패키지나 적어도 하나의 관련 드라이버 파일에 할당된다. 드라이버 저장소(315)의 예시적인 실시예는 도 4를 참조하여 이하에 더 상세히 기술된다.
또한, 도 3의 예는 강한 이름(305)에 기초하여 드라이버 패키지(110)에 있는 드라이버 파일들 중 하나로부터 추출된 특정 데이터를 저장하는 것을 고려한다. 특히, 본 예는 드라이버 패키지(110)의 드라이버 셋업 정보 파일(INF)(210)로부터 추출된 서비스 이름(320)이 서비스 이름 데이터베이스(325)에서 고유 저장 위치를 할당받는 것을 보여주고 있다. 서비스 이름 및 관련 파라미터들은, 주변 장치를 위한 운영 시스템이 해당 주변 장치를 지원하는 드라이버 파일들로의 이미지 경로 를 설정하는 데에 사용된다. 서비스 이름 데이터베이스(325)의 예시적인 실시예는 도 5를 참조하여 이하에 더 상세히 기술된다.
도 4는 드라이버 저장소(315)의 예를 보여준다. 드라이버 저장소(315)는 컴퓨팅 장치(105)와 연합된 저장 모듈 혹은 컴포넌트일 수 있다. 드라이버 저장소(315)는 다수의 서브디렉토리를 포함하고, 각 서브디렉토리는 각 드라이버 패키지나 적어도 하나의 관련 드라이버 파일에 대한 강한 이름(305)에 부여된다. 따라서 각 서브디렉토리는 강한 이름(305)에 기초하여 드라이버 패키지(110)나 관련 드라이버 파일들을 설치한다.
드라이버 저장소(315)는 공통된 이름을 가진 드라이버 패키지 혹은 드라이버 이미지 파일을 포함하는 관련 드라이버 파일들을 사이드 바이 사이드 방식으로 설치함으로써 시스템이 드라이버 이미지 충돌의 발생을 감소시키도록 한다. 판매업자들은 다수의 버전의 드라이버 파일들, 특히 드라이버 이미지 파일들에 대해 동일한 이름을 반복적으로 사용한다. 대안적으로, 다른 판매업자들은 종종 다른 주변 장치들에 관련된 드라이버 파일들(예를 들어, 드라이버 이미지 파일들)에 대해 공통된 이름을 사용한다. 그러므로, 강한 이름(305)과 같은 고유 식별자에 기초하여 드라이버 패키지와 그들의 관련 드라이버 파일들을 저장하는 것에 대한 실시예들은 공통된 이름을 가진 드라이버 파일들이 드라이버 저장소(315)에 사이드 바이 사이드 방식으로 설치되는 것을 가능하게 한다.
도 4의 예는 도 3에서 드라이버 저장소(315)에 설치된 드라이버 파일들(310)이 상이한 드라이버 패키지들에 대응하는 드라이버 이미지 파일들이라고 가정한다. 더 상세하게, 도 4에서 foo.sys라는 이름을 가진 세 개의 구별되는 드라이버 이미지 파일들이 드라이버 저장소(315)의 서브디렉토리들(405,410,415)에 사이드 바이 사이드 방식으로 설치된다. foo.sys라는 이름을 갖는 각 드라이버 이미지 파일들은 각 드라이버 이미지 파일들이 유도된 각 드라이버 패키지들에 대해 생성된 강한 이름들 "strongname.1", "strongname.2" 및 "strongname.3"에 따라 서브디렉토리들(405, 410 및 415)에 설치된다. 도 4의 예의 결과로서, 상이한 드라이버 패키지들로부터의 공통된 이름을 갖는 드라이버 파일들이 컴퓨팅 장치(105)에 사이드 바이 사이드 방식으로 설치될 수 있다. 또한, foo.sys라는 이름을 갖는 어떠한 드라이버 이미지 파일들도, 컴퓨팅 장치(105)의 하드 드라이브의 드라이버 저장소(315)에 설치되는 순서와 상관없이 다른 파일을 덮어쓰지 않는다.
도 5는 드라이버 파일을 로딩할 때 도움을 주기 위하여 제공되는 서비스 이름 데이터베이스(325)의 예를 보여준다. 특히, 운영 시스템이 주변 장치에 대한 드라이버 이미지 파일을 드라이버 저장소(315)로부터 컴퓨팅 장치(105)에 있는 메모리로 로드할 때 드라이버 충돌이 피해진다. 특히, 운영 시스템은, 서브디렉토리들(405, 410, 415) 중 어떤 서브디렉토리에 컴퓨팅 장치(105)의 운영 시스템을 해당 주변 장치에 연결하기 위한 적합한 드라이버 이미지 파일이 설치되었는지를 결정한다.
도 5에서, 서비스 이름 데이터베이스(325)는 컴퓨팅 장치(105)와 연합된 저장 모듈 혹은 컴포넌트일 수 있다. 서비스 이름 데이터베이스(325)는 드라이버 패키지와 그 관련 드라이버 파일들에 부여된 다수의 서브디렉토리들을 식별한다. 따 라서, 서비스 이름 데이터베이스(325)의 각 서브디렉토리는 드라이버 저장소(315)에 설치된 드라이버 패키지(110) 또는 관련 드라이버 파일에 대응하는 서비스키, 이미지 경로 또는 기타 정보와 같은 드라이버 관련 파라미터들을 저장한다. 서비스 이름 데이터베이스는, 운영 시스템에게 주어진 주변 장치에 대한 특정 드라이버를 알려주기 위한 모듈에 대한 단지 하나의 예일 뿐이다.
서비스 이름 데이터베이스(325)는 도 4의 드라이버 이미지 파일들에 대응하는 서비스 키, 이미지 경로 및 기타 서비스 관련 정보를 포함한다. 서브디렉토리 모듈(505, 510, 515)은 강한 이름 "StrongName.1", "StrongName.2" 및 "StrongName.3"을 갖는 도 4의 드라이버 이미지 파일들에 대응하는 서비스 키, 이미지 경로 및 기타 정보를 각각 저장한다.
예를 들어, 도 5는, 서비스 키 "ServiceName.StrongName.1"(505)가 강한 이름 "StrongName.1"을 부여받은 드라이버 패키지로부터 추출된 서비스 이름을 포함한다는 것을 보여준다. 이미지 경로 "%DriverStore%\StrongName.1\Foo.Sys"(510)는 주변 장치 프로그램 코드를 드라이버 저장소(315)의 서브디렉토리 %DriverStore%\StrongName.1(405)에 설치된 드라이버 이미지 파일 foo.sys로 가리킨다(도 4 참조). 파라미터 "기타 정보"는 컴퓨팅 장치(105)와 유선 혹은 무선 방식으로 협동할 주변 장치의 지원을 위해 사용될 수 있는 어떠한 다른 서비스 이름 관련 데이터를 포함한다. 따라서, 운영 시스템은 적절한 서비스 이름 파라미터에 의해 서비스 이름 데이터베이스(325)를 액세스할 수 있고, 주변 장치에 대한 프로그램 코드를 운영 시스템으로 연결하기 위하여 드라이버 저장소(315)에 설치된 적절한 드라이버 이미지 파일로 향해진다. 따라서, 운영 시스템은 주변 장치를 동작시키기 위하여 foo.sys라고 이름붙여진 적절한 드라이버 이미지 파일을 컴퓨팅 장치(105)의 메모리로 로드할 수 있다.
실시예들에 따르면, 드라이버 패키지 및 관련 드라이버 파일들은 사이드 바이 사이드 방식으로 설치된다. 그러나, 만약 또다른 드라이버 파일이 동일한 이름을 공유한다면, 관련 드라이버 파일들(예를 들어, 드라이버 이미지 파일들) 모두가 각 드라이버 저장소 위치로부터 컴퓨팅 장치의 메모리로 로드되지는 않는다. INF 파일들의 대안적인 실시예는 드라이버 패키지에 관련된 드라이버 파일들이 드라이버 저장소(315)로부터 로드될 수 있음을 운영 시스템에게 알리는 플래그를 포함할 수 있다. 후자에 해당하는 코드의 예는 아래 제공된다. :
#if _SETUPAPI_VER >= 0x0600
//
// (AddService) install service side by side
//
#define SPSVCINST_SIDE_BY_SIDE (0x00000800)
#endif // _SETUPAPI_VER >= 0x0600.
제한적이지 않은 예로서 제공된 플래그 "SPSVCINST_SIDE_BY_SIDE"는 주변장치를 동작시키기 위하여, 드라이버 저장소(315)에 저장된 드라이버 패키지로부터의 드라이버 이미지 파일들이 드라이버 저장소(315)로부터 컴퓨팅 장치(105)의 메모리로 로드될 수 있도록 설정한다.
도 6은 상술된 바와 같은 드라이버 파일들을 사이드 바이 사이드 방식으로 로드하기 위한 기술을 구현하기 위해 사용될 수 있는 일반적인 컴퓨터 환경(600)을 도시한다. 상기 컴퓨터 환경(600)은 컴퓨팅 환경의 일례일 뿐 컴퓨터와 네트워크 구조의 사용 혹은 기능성의 범위에 대해 어떠한 제한을 가하는 것을 의도하지 않는다. 컴퓨터 환경(600)은 예시된 컴퓨터 환경(600)에 도시된 컴포넌트들 중 어느 하나 또는 조합과 관련하여 어떠한 의존성이나 요구사항을 가지는 것으로 해석되어서는 안 된다.
컴퓨터 환경(600)은 컴퓨팅 장치(105)를 포함할 수 있는 컴퓨터(602) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(602)의 컴포넌트는 하나 이상의 프로세서나 프로세싱 유닛(604), 시스템 메모리(606) 및 프로세서(604)를 포함한 다양한 시스템 구성요소들을 시스템 메모리(606)로 연결하는 시스템 버스(608)를 포함할 수 있으나, 이들로 제한되지는 않는다.
시스템 버스(608)는 메모리 버스나 메모리 컨트롤러, 주변 버스(peripheral bus), 가속 그래픽 포트(accelerated graphics port), 다양한 버스 구조를 사용하는 프로세서 또는 로컬 버스를 포함하여, 하나 이상의 다양한 형태의 버스 구조를 나타낸다. 예를 들어, 그러한 구조들은 산업 표준 구조(Industry Standard Architecture: ISA) 버스, 마이크로 채널 구조(Micro Channel Architecture:MCA) 버스, 강화된 ISA(Enhanced ISA:EISA) 버스, 비디오 전자 표준 협회(Video Electronics Standards Association:VESA) 로컬 버스, Mezzanine 버스로 잘 알려진 주변 컴포넌트 인터커넥트(Peripheral Component Interconnects:PCI) 버스, PCI 익 스프레스 버스, 유니버셜 시리얼 버스(Universal Serial Bus:USB), 보안 디지털(Secure Digital:SD) 버스, 또는 IEEE 1394 버스, 즉 FireWire 등을 포함할 수 있다.
컴퓨터(602)는 다양한 컴퓨터 판독가능 매체를 포함할 수 있다. 그러한 매체는 컴퓨터(602)에 의해 액세스 가능한 임의의 가용 매체를 포함하며, 휘발성과 비휘발성, 분리가능과 분리불가능 매체 모두를 포함한다.
시스템 메모리(606)는 랜덤 액세스 메모리(RAM)와 같은 휘발성 메모리의 형태 및/또는 판독전용 메모리(ROM)나 플래시 RAM과 같은 비휘발성 메모리의 형태의 컴퓨터 판독가능 매체를 포함한다. 컴퓨터를 시작할 때 등에, 컴퓨터(602) 내의 구성요소들 간의 정보의 전달을 돕는 기본 루틴을 포함하는 기본 입력/출력 시스템(BIOS)(614)은 ROM(612) 또는 플래시 RAM에 저장된다. RAM(610)은 전형적으로 즉시 액세스 가능하고/가능하거나 현재 프로세싱 유닛(604)에 의해 실행중인 데이터와 프로그램 모듈을 포함한다.
컴퓨터(602)는 또한 다른 분리가능/분리불가능, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 예를 들어, 도 6은 분리 불가능한 비휘발성 자기 매체(도시되지 않음)에 대한 판독 및 기입을 위한 하드 디스크 드라이브(616), 분리 가능한 비휘발성 자기 디스크(620)(예를 들면, 플로피 디스크)에 대한 판독 및 기입을 위한 자기 디스크 드라이브(618) 및 CD-ROM, DVD-ROM 또는 기타 광학 매체와 같은 분리가능한 비휘발성 광학 디스크(624)에 대한 판독 및 기입을 위한 광학 디스크 드라이브(622)를 도시한다. 하드 디스크 드라이브(616), 자기 디스크 드라이브 (618) 및 광학 디스크 드라이브(622)는 하나 이상의 데이터 매체 인터페이스(625)에 의해 각각 시스템 버스(608)로 연결된다. 대안으로, 하드 디스크 드라이브(616), 자기 디스크 드라이브(618) 및 광학 디스크 드라이브(622)는 하나 이상의 인터페이스(도시되지 않음)에 의해 시스템 버스(608)로 연결될 수 있다.
디스크 드라이브와 그 관련 컴퓨터 판독가능 매체는 컴퓨터(602)에게 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장소를 제공한다. 본 예는 하드 디스크(616), 분리가능 자기 디스크(620) 및 분리가능 광학 디스크(624)를 도시하고 있지만, 컴퓨터에 의해 액세스 가능한 데이터를 저장할 수 있는 여러 형태의 컴퓨터 판독가능 매체들 또한 예시된 컴퓨팅 시스템과 환경을 구현하기 위해 사용될 수 있으며, 그러한 매체로는 자기 카세트 또는 다른 자기 저장 장치, 플래시 메모리 카드, CD-ROM, DVD(digital versatile disk) 또는 기타 광학 저장소, RAM, ROM, EEPROM 등이 있다.
예를 들어, 운영 시스템(626), 하나 이상의 어플리케이션(628), 기타 프로그램 모듈(630) 및 프로그램 데이터(632)를 포함하는 임의의 개수의 프로그램 모듈들이, 하드 디스크(616), 자기 디스크(620), 광학 디스크(624), ROM(612) 및/또는 RAM(610)에 저장될 수 있다. 그러한 운영 시스템(626), 하나 이상의 어플리케이션 프로그램(628), 기타 프로그램 모듈(630) 및 프로그램 데이터(632)(또는 이들의 임의의 조합) 각각은 분산 파일 시스템을 지원하는 상주 컴포넌트의 전부 또는 일부를 구현할 수 있다.
사용자는 키보드(634)와 포인팅 장치(636)(예를 들어, "마우스")를 통해 명 령어와 정보를 컴퓨터(602)로 입력할 수 있다. 다른 입력 장치(638)(상세하게 도시되지 않음)들은 마이크로폰, 조이스틱, 게임패드, 위성 디쉬, 시리얼 포트, 스캐너 등을 포함할 수 있다. 이러한 다른 입력 장치들은 시스템 버스(608)로 연결된 입력/출력 인터페이스(640)를 통해 프로세싱 유닛(604)으로 연결되지만, 병렬 포트, 게임 포트 또는 USB와 같은 기타 인터페이스 및 버스 구조에 의해 연결될 수도 있다.
모니터(642) 또는 다른 형태의 디스플레이 장치 또한 비디오 어댑터(644)와 같은 인터페이스를 통해 시스템 버스(608)로 연결될 수 있다. 모니터(642) 외에, 다른 출력 주변 장치들은 입력/출력 인터페이스(640)를 통해 컴퓨터(602)로 연결될 수 있는 스피커(도시되지 않음) 및 프린터(646)와 같은 컴포넌트를 포함할 수 있다.
컴퓨터(602)는 원격 컴퓨팅 장치(648)와 같은 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하여 네트워크 환경에서 동작할 수 있다. 예를 들어, 원격 컴퓨팅 장치(648)는 PC, 휴대용 컴퓨터, 서버, 라우터, 네트워크 컴퓨터, 피어 디바이스 또는 다른 공통 네트워크 노드 등이 될 수 있다. 원격 컴퓨팅 장치(648)는 컴퓨터(602)와 관련되어 여기에 기술된 많은 또는 모든 요소들과 특징들을 포함할 수 있는 휴대용 컴퓨터로서 도시된다. 대안적으로 컴퓨터(602)는 네트워크화되지 않은 환경에서 또한 동작할 수 있다.
컴퓨터(602)와 원격 컴퓨터(648) 사이의 논리적 연결은 근거리 통신망(LAN)(650)과 일반적인 광역 통신망(WAN)(652)으로서 기술된다. 그러한 네트워킹 환경은 사무실, 기업적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 구현될 때, 컴퓨터(602)는 네트워크 인터페이스 또는 어댑터(654)를 통해 근거리 통신망(650)에 연결된다. 광역 통신망(WAN) 네트워킹 환경에서 구현될 때, 컴퓨터(602)는 광역 통신망(652)을 통한 통신을 설정하기 위하여 전형적으로 모뎀(656)이나 다른 수단을 포함한다. 컴퓨터(602)로 내장되거나 외장일 수 있는 모뎀(656)은 입력/출력 인터페이스(640)나 다른 적절한 메커니즘을 통해 시스템 버스(608)로 연결될 수 있다. 도시된 네트워크 연결들은 예이며, 컴퓨터들(602, 648) 사이에 적어도 하나의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것을 알아야 한다.
컴퓨팅 환경(600)과 함께 도시된 것과 같은 네트워크 환경에서, 컴퓨터(602)와 관련되어 기술된 프로그램 모듈 또는 그 일부는 원격 메모리 저장 장치에 저장될 수 있다. 예를 들어, 원격 어플리케이션 프로그램(658)은 원격 컴퓨터(648)의 메모리 장치에 상주한다. 예시의 목적으로, 어플리케이션 또는 프로그램과, 운영 시스템과 같은 다른 실행가능한 프로그램 컴포넌트들이 개별적인 블럭으로 도시되어 있지만, 그것들이 컴퓨팅 장치(602)의 상이한 저장 컴포넌트들에 여러 번 상주하며 컴퓨터의 적어도 하나의 데이터 프로세서에 의해 실행된다는 점을 알아야 한다.
다양한 모듈과 기술들이 하나 이상의 컴퓨터나 다른 장치들에 의해 실행되는, 프로그램 모듈과 같은 컴퓨터 실행 가능한 명령어의 일반적인 문맥으로 여기에 기술될 수 있다. 일반적으로, 프로그램 모듈들은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하기 위한 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 전형적으로, 상기 프로그램 모듈의 기능은 다양한 실시예에서 바라는 대로 결합되거나 분산될 수 있다.
이러한 모듈과 기술의 구현은 소정 형태의 컴퓨터 판독가능 매체를 거쳐 저장되거나 전송될 수 있다. 컴퓨터 판독가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한적이지 않은 예로서, 컴퓨터 읽기가능 매체는 "컴퓨터 저장 매체"와 "통신 매체"를 포함할 수 있다.
"컴퓨터 저장 매체"는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같은 정보의 저장을 위한 방법이나 기술로 구현되는 휘발성과 비휘발성, 분리가능과 분리불가능 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD 또는 기타 광학 저장소, 자기 카세트, 자기 테이프, 자기 디스크 저장소 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 사용될 수 있고, 컴퓨터에 의해 액세스될 수 있는 다른 매체를 포함하지만, 이들로 제한되는 것은 아니다.
"통신 매체"는 전형적으로 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 반송파나 다른 전송 메커니즘과 같은 변조된 데이터 신호 내의 다른 데이터를 포함한다. 통신 매체는 또한 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에서 정보를 암호화하기 위한 방식으로 하나 이상의 특성이 설정 또는 변화된 신호를 의미한다. 제한하지 않는 예로서, 통신 매체는 유선 네트워크나 직접 유선연결된 연결, 그리고 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함한다. 상술한 것들의 임의의 조합 또한 컴퓨터 판독가능 매체의 범위에 포함된다.
본 발명의 예시적인 실시예와 응용이 도시되고 기술되지만, 본 발명은 상기 기술된 정확한 구성과 자원들로 제한되지는 않는 것으로 이해되어야 한다. 당업자라면 본 발명의 방법과 시스템의 배치, 동작 및 세부사항이 특허청구범위를 벗어나지 않고서, 다양하게 변형, 변화 및 변동이 될 수 있음을 쉽게 알 수 있을 것이다.
본 발명은 공통된 이름을 갖는 드라이버 패키지와 관련 드라이버 파일들이 사이드 바이 사이드 방식으로 설치되고 로드되는 것을 가능하게 한다. 즉, 공통된 이름을 가진 하나 이상의 드라이버 패키지와 관련 드라이버 파일들이 충돌을 일으키지 않으면서 동일한 하드 드라이브에 설치되고 하나의 메모리로 로드되는 것을 가능해 진다.

Claims (38)

  1. 컴퓨터 구현 방법으로서,
    사이드 바이 사이드 설치자(side-by-side installer)를 사용하여,
    드라이버 패키지를 수신하는 단계,
    상기 드라이버 패키지에 대한 강한 이름(strong name)을 생성하는 단계 - 이로 인해 공통된 이름의 드라이버 패키지들 또는 드라이버 패키지들에 관련된 공통된 이름의 드라이버 파일들이 사이드 바이 사이드(side-by-side)로 설치 및 로딩될 수 있음 - ,
    상기 강한 이름에 기초하여 상기 드라이버 패키지에 관련된 드라이버 파일들에 대한 저장 위치를 할당하는 단계 - 상기 드라이버 파일들은 드라이버 이미지 파일을 포함함 - , 및
    컴퓨터를 주변 장치에 링크하기 위해 상기 드라이버 이미지 파일을 상기 저장 위치로부터 상기 컴퓨터 상의 메모리로 로드하는 단계
    에 의해 컴퓨터에 드라이버 패키지를 설치하는 것을 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 드라이버 패키지에 대한 강한 이름을 생성하는 단계는 상기 드라이버 패키지에 관련된 드라이버 파일들 중 적어도 하나의 드라이버 파일로부터의 데이터를 해싱하는 단계를 포함하는 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 강한 이름에 따라 상기 드라이버 패키지로부터의 드라이버 파일들에 저장 위치를 할당하는 단계는 상기 드라이버 패키지에 관련된 적어도 하나의 드라이버 파일을 드라이버 저장소의 서브디렉토리에 할당하는 단계를 포함하는 컴퓨터 구현 방법.
  4. 컴퓨터 구현 방법으로서,
    컴퓨터 상에서 공통된 이름의 드라이버 파일들이 대응하는 각 드라이버 패키지에 대해 고유 식별자를 생성하는 단계 - 이로 인해 공통된 이름의 드라이버 패키지들 또는 드라이버 패키지들에 관련된 공통된 이름의 드라이버 파일들이 사이드 바이 사이드로 설치 및 로딩될 수 있음 - ,
    상기 고유 식별자에 기초하여 상기 각 드라이버 패키지에 관련된 드라이버 파일들을 공통 저장소의 서브디렉토리들에 할당하는 단계 - 상기 드라이버 파일들은 드라이버 이미지 파일을 포함함 - , 및
    컴퓨터를 주변 장치에 링크하기 위해 상기 서브디렉토리들 중 하나로부터의 상기 드라이버 이미지 파일을 컴퓨터 상의 메모리로 로딩하는 단계
    를 포함하는 컴퓨터 구현 방법.
  5. 제4항에 있어서,
    상기 드라이버 파일들은 서비스 이름을 더 포함하고,
    상기 할당하는 단계는 상기 각 드라이버 이미지 파일이 대응하는 드라이버 패키지에 대한 상기 고유 식별자에 기초하여 상기 각 드라이버 패키지로부터의 드라이버 이미지 파일들을 드라이버 저장소의 서브디렉토리들에 할당하는 단계를 포함하는 컴퓨터 구현 방법.
  6. 제4항에 있어서,
    상기 공통된 이름의 드라이버 파일들이 대응하는 상기 각 드라이버 패키지에 대해 고유 식별자를 생성하는 단계는 상기 드라이버 패키지에 관련된 적어도 하나의 드라이버 파일로부터의 데이터를 해싱하는 단계를 포함하는 컴퓨터 구현 방법.
  7. 하나 이상의 프로세서에 의해 실행될 하나 이상의 명령어를 갖는 컴퓨터 판독가능 저장 매체로서,
    상기 하나 이상의 명령어는 상기 하나 이상의 프로세서로 하여금,
    드라이버 패키지에 대한 강한 이름을 생성하게 하고 - 이로 인해 공통된 이름의 드라이버 패키지들 또는 드라이버 패키지들에 관련된 공통된 이름의 드라이버 파일들은 사이드 바이 사이드로 설치 및 로딩될 수 있음 - ,
    상기 강한 이름에 기초하여 상기 드라이버 패키지에 관련된 드라이버 파일에 대한 저장 위치를 할당하게 하고 - 상기 드라이버 파일은 드라이버 이미지 파일임 - ,
    컴퓨터를 주변 장치에 링크하기 위해 상기 드라이버 이미지 파일을 상기 저장 위치로부터 메모리로 또한 로드하게 하는
    컴퓨터 판독가능 저장 매체.
  8. 제7항에 있어서,
    상기 강한 이름은 상기 드라이버 패키지에 관련된 적어도 하나의 드라이버 파일의 해시인 컴퓨터 판독가능 저장 매체.
  9. 제7항에 있어서,
    상기 강한 이름은 상기 드라이버 패키지의 판매업자(vendor)에 대응하는 드라이버 카탈로그 파일과 공유키 중 적어도 하나를 포함하는 컴퓨터 판독가능 저장 매체.
  10. 컴퓨터 구현 장치로서,
    드라이버 패키지에 대한 강한 이름을 생성하기 위한 설치자(installer) - 이로 인해 공통된 이름의 드라이버 패키지들 또는 드라이버 패키지들에 관련된 공통된 이름의 드라이버 파일들이 사이드 바이 사이드로 설치 및 저장될 수 있음 - ,
    상기 강한 이름에 기초하여 상기 드라이버 패키지에 관련된 파일들을 설치하기 위한 저장소 - 상기 파일들은 드라이버를 포함하는 상기 드라이버 패키지에 관련된 드라이버 이미지 파일들임 - 및
    컴퓨터를 주변 장치에 링크하기 위해 상기 드라이버 이미지 파일을 메모리로 로드하기 위한 로더
    를 포함하는 컴퓨터 구현 장치.
  11. 제10항에 있어서,
    상기 설치자는 상기 드라이버 패키지에 관련된 적어도 하나의 드라이버 파일의 해시 함수로서 상기 강한 이름을 생성하는 컴퓨터 구현 장치.
  12. 제10항에 있어서,
    상기 저장소는 상기 강한 이름에 대응하는 서브디렉토리를 포함하는 컴퓨터 구현 장치.
  13. 컴퓨터 구현 장치로서,
    드라이버 패키지에 대한 강한 이름을 생성하기 위한 수단 - 이로 인해 공통된 이름의 드라이버 패키지들 또는 드라이버 패키지들에 관련된 공통된 이름의 드라이버 파일들은 사이드 바이 사이드로 설치 및 로딩될 수 있음 - ,
    상기 강한 이름에 기초하여 상기 드라이버 패키지에 관련된 파일들을 저장하기 위한 수단 - 상기 드라이버 패키지에 관련된 파일들은 드라이버 이미지 파일을 포함함 - , 및
    상기 드라이버 이미지 파일을 메모리로 로드하기 위한 수단
    을 포함하는 컴퓨터 구현 장치.
  14. 제13항에 있어서,
    상기 생성하기 위한 수단은 상기 드라이버 패키지로부터의 적어도 하나의 드라이버 파일로부터의 데이터를 해싱하는 컴퓨터 구현 장치.
  15. 제13항에 있어서,
    상기 생성하기 위한 수단은 상기 드라이버 패키지에 관련된 디지털 서명을 상기 강한 이름에 포함시키는 컴퓨터 구현 장치.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
KR1020050017151A 2004-03-02 2005-03-02 사이드 바이 사이드 드라이버 KR100988961B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/791,586 US7216344B2 (en) 2004-03-02 2004-03-02 Side-by-side drivers
US10/791,586 2004-03-02

Publications (2)

Publication Number Publication Date
KR20060043307A KR20060043307A (ko) 2006-05-15
KR100988961B1 true KR100988961B1 (ko) 2010-10-20

Family

ID=34838858

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050017151A KR100988961B1 (ko) 2004-03-02 2005-03-02 사이드 바이 사이드 드라이버

Country Status (5)

Country Link
US (1) US7216344B2 (ko)
EP (1) EP1577766A3 (ko)
JP (1) JP4286798B2 (ko)
KR (1) KR100988961B1 (ko)
CN (1) CN100461097C (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7251812B1 (en) * 2001-10-31 2007-07-31 Microsoft Corporation Dynamic software update
US7293272B1 (en) 2004-02-26 2007-11-06 Veritas Operating Corporation Device driver processing for automated system restores
US7523089B2 (en) * 2005-09-30 2009-04-21 Microsoft Corporation Offline servicing of image files
JP2008146601A (ja) * 2006-12-13 2008-06-26 Canon Inc 情報処理装置及び情報処理方法
JP4710837B2 (ja) * 2007-01-22 2011-06-29 富士ゼロックス株式会社 画像処理装置及びプログラム
US7996831B2 (en) * 2007-02-19 2011-08-09 Kabushiki Kaisha Toshiba Office equipment and program installation support method
US20090307680A1 (en) * 2008-06-06 2009-12-10 Microsoft Corporation Side-by-side driver installation
CN103294617A (zh) * 2012-02-29 2013-09-11 鸿富锦精密工业(深圳)有限公司 扩展电子装置的设备驱动的方法及便携式智能电子装置
US9110761B2 (en) 2012-06-27 2015-08-18 Microsoft Technology Licensing, Llc Resource data structures for firmware updates
US8972973B2 (en) 2012-06-27 2015-03-03 Microsoft Technology Licensing, Llc Firmware update discovery and distribution
US9235404B2 (en) 2012-06-27 2016-01-12 Microsoft Technology Licensing, Llc Firmware update system
US9032423B2 (en) 2013-06-21 2015-05-12 Microsoft Technology Licensing, Llc Dependency based configuration package activation
US20160070557A1 (en) * 2014-09-09 2016-03-10 Tsuyoshi Yamada Information processing apparatus, information processing method, and information processing system
CN104360889B (zh) * 2014-12-08 2017-11-10 中科创达软件股份有限公司 一种驱动程序加载方法及装置
KR20170010574A (ko) 2015-07-20 2017-02-01 삼성전자주식회사 정보처리장치, 영상처리장치 및 그들의 제어방법
US11223537B1 (en) 2016-08-17 2022-01-11 Veritas Technologies Llc Executing custom scripts from the host during disaster recovery
CN108536465A (zh) * 2017-12-31 2018-09-14 广州用能互联网有限公司 一种电网监测硬件设备驱动程序配置及安装方法
US10990371B2 (en) * 2018-01-17 2021-04-27 Crowdstrike, Inc. Device driver non-volatile backing-store installation
US11423186B2 (en) 2018-01-17 2022-08-23 Crowdstrike, Inc. Verified inter-module communications interface

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001516479A (ja) * 1997-03-20 2001-09-25 フェニックス テクノロジーズ リミテッド 機能するオペレーティング・システムなしにコンピュータのリモート管理を可能にするネットワーク機能拡張bios
US20040215754A1 (en) * 2003-03-31 2004-10-28 Microsoft Corporation Peripheral device driver maintenance scheme for networked peripheral device clients

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802365A (en) * 1995-05-05 1998-09-01 Apple Computer, Inc. Dynamic device matching using driver candidate lists
EP1194851A1 (en) * 1999-06-30 2002-04-10 Microsoft Corporation Restoration of a computer to a previous working state
JP2002366501A (ja) * 2001-06-11 2002-12-20 Murata Mfg Co Ltd 周辺デバイス、コンピュータシステム、及びインストーラプログラム
US20030160989A1 (en) * 2002-02-25 2003-08-28 Xerox Corporation System for installing a printer driver on a network
US6976252B2 (en) * 2002-05-17 2005-12-13 Hewlett-Packard Development Company, L.P. Systems and methods for driver installation
US7334099B2 (en) * 2002-06-28 2008-02-19 Microsoft Corporation Method and system for managing image files

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001516479A (ja) * 1997-03-20 2001-09-25 フェニックス テクノロジーズ リミテッド 機能するオペレーティング・システムなしにコンピュータのリモート管理を可能にするネットワーク機能拡張bios
US20040215754A1 (en) * 2003-03-31 2004-10-28 Microsoft Corporation Peripheral device driver maintenance scheme for networked peripheral device clients

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Jeffrey Richter work and Microsoft. .NET programming introduction Part II.NET Programming Part II, msdn magazine, Japan, ASCII, Inc., April 18, 2001, No. 13, 51 - 52nd page *
Rick Anderson, "The End of DLL hell", 2000.01. *

Also Published As

Publication number Publication date
EP1577766A3 (en) 2007-06-27
JP2005251204A (ja) 2005-09-15
CN100461097C (zh) 2009-02-11
US7216344B2 (en) 2007-05-08
JP4286798B2 (ja) 2009-07-01
EP1577766A2 (en) 2005-09-21
US20050197996A1 (en) 2005-09-08
CN1667574A (zh) 2005-09-14
KR20060043307A (ko) 2006-05-15

Similar Documents

Publication Publication Date Title
KR100988961B1 (ko) 사이드 바이 사이드 드라이버
US10540160B2 (en) Techniques for deploying virtual software applications on computers
RU2421785C2 (ru) Автоматизированное управление драйверами устройств
US7558867B2 (en) Automatic firmware upgrade for a thin client using one or more FTP servers
US10216510B2 (en) Silent upgrade of software with dependencies
US20080214172A1 (en) Method of loading software in mobile and desktop environments
US20150154224A1 (en) Method, device, processing center and system for desktop synchronization
KR20080082623A (ko) 애플리케이션의 메타데이터 구동 배치
JP5587192B2 (ja) アプリケーションのリモートオートプロビジョニング及びリモートオートパブリケーション
US7440971B2 (en) Context based access of files by file system to a client based on detection of related files opened by the client
JP5248657B2 (ja) デバイス上におけるレジストリベースの自動インストール及びコンポーネントハンドリングのためのシステム
KR102052776B1 (ko) 병행가능하고 신뢰성 있는 설치를 위한 설치 엔진 및 패키지 포맷
US7818467B2 (en) Method of indentifying devices in mobile and desktop environments
CN105872842A (zh) 一种多桌面独立升级方法及装置
KR101638689B1 (ko) 클라이언트 단말에 대한 사용자 맞춤형 동기화 서비스 제공 방법 및 시스템
KR20030016740A (ko) Tftp 파일 전송 시스템 및 그 시스템에서의소프트웨어 업그레이드 방법
KR20070045489A (ko) 프로그램 분산 배포 장치의 서버 로드 밸런싱 방법
Wilson et al. Exploring the Installer APIs
KR20050021848A (ko) 범용의 컨텐츠 이용시스템
KR20160025488A (ko) 클라이언트 단말에 대한 사용자 맞춤형 동기화 서비스 제공 방법 및 시스템

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated 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: 20130927

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140929

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 9