KR20170066586A - 벤더 고유의 주변 장치 클래스 식별자들 - Google Patents

벤더 고유의 주변 장치 클래스 식별자들 Download PDF

Info

Publication number
KR20170066586A
KR20170066586A KR1020177012395A KR20177012395A KR20170066586A KR 20170066586 A KR20170066586 A KR 20170066586A KR 1020177012395 A KR1020177012395 A KR 1020177012395A KR 20177012395 A KR20177012395 A KR 20177012395A KR 20170066586 A KR20170066586 A KR 20170066586A
Authority
KR
South Korea
Prior art keywords
identifier
peripheral
namespace
peripheral device
vendor
Prior art date
Application number
KR1020177012395A
Other languages
English (en)
Other versions
KR102370570B1 (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 KR1020227006890A priority Critical patent/KR102449372B1/ko
Publication of KR20170066586A publication Critical patent/KR20170066586A/ko
Application granted granted Critical
Publication of KR102370570B1 publication Critical patent/KR102370570B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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
    • 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/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Traffic Control Systems (AREA)
  • Transition And Organic Metals Composition Catalysts For Addition Polymerization (AREA)

Abstract

주변 장치 클래스 식별자가 주변 장치들의 클래스에 대해 생성되고, 컴퓨팅 장치 상에 상기 클래스의 주변 장치들을 설치하거나 또는 그렇지 않고 설정하는 방법을 표시하는 설정 레코드를 식별하는데 사용된다. 주변 장치 클래스 식별자는 세가지 구성요소, 즉, 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자의 결합이다. 벤더 식별자는 주변 장치들의 클래스의 벤더의 식별자이다. 네임스페이스 식별자는 주변 장치들의 유형들 또는 주변 장치들의 기능의 유형들의 상이한 콜렉션 또는 그룹들의 식별자이다. 네임스페이스 엔트리 식별자는 주변 장치들의 유형들(또는 주변 장치들의 기능의 유형들)의 상이한 콜렉션들 또는 그룹들 중의 주변 장치의 특정 유형(또는 특정 기능)의 식별자이다.

Description

벤더 고유의 주변 장치 클래스 식별자들{VENDOR-SPECIFIC PERIPHERAL DEVICE CLASS IDENTIFIERS}
본 발명은 벤더 고유의 주변 장치 클래스 식별자들에 관한 것이다.
컴퓨팅 기술이 진보함에 따라, 많은 수의 상이한 주변 장치들이 컴퓨팅 장치와 함께 이용가능하게 되었다. 이러한 주변 장치들은 이 주변 장치들을 서로 구별가능하게 해주는 상이한 하드웨어 식별자들을 갖는다. 각각의 주변 장치는 자체적인 하드웨어 식별자를 가지므로, 주변 장치를 사용하는데 필요한 소프트웨어를 설치하거나 또는 그렇지 않고 이에 액세스하는 것과 같이 해당 주변 장치에 대한 올바른 설정이 컴퓨팅 장치 상에서 수행될 수 있다. 이는 주변 장치 벤더(vendor)가 주변 장치의 소프트웨어 패키지(예컨대, 드라이버, 인스톨러 등)의 재검사, 재인증 및 배포의 비용과 더불어, 이러한 소프트웨어 패키지를 패키지 당 새로운 하드웨어 식별자로 업데이트할 것을 요구하기 때문에 이것은 주변 장치 벤더들에 있어서 문제가 될 수 있다.
본 요약은 아래의 상세한 설명에서 보다 상세하게 설명되는 개념들의 선택을 단순한 형태로 소개하기 위해 제공된 것이다. 본 요약은 청구된 발명내용의 중요한 특징들 또는 필수적인 특징들을 확인시키려는 의도는 없으며, 또한 청구된 발명내용의 범위를 제한시키려는 의도도 없다.
하나 이상의 양태들에 따르면, 주변 장치들의 클래스(class)의 벤더를 식별하는 벤더 식별자가 획득되고, 주변 장치들의 유형들의 콜렉션(collection)을 식별하는 네임스페이스(namespace) 식별자가 획득되며, 주변 장치들의 특정 유형 또는 주변 장치들의 특정 기능 중 적어도 하나를 식별하는 네임스페이스 엔트리 식별자가 획득된다. 주변 장치 클래스 식별자는 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 기초하여 생성되며, 주변 장치 클래스 식별자는, 주변 장치가 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 대응하는 특성들을 갖는다고 결정한 것에 응답하여, 주변 장치에 대한 설정 레코드와 연관지어진다.
하나 이상의 양태들에 따르면, 컴퓨팅 장치에서 그리고 주변 장치에 대하여, 주변 장치를 포함하는 주변 장치들의 클래스의 벤더를 식별하는 벤더 식별자가 획득되고, 주변 장치의 유형을 포함하는 주변 장치들의 유형들의 콜렉션을 식별하는 네임스페이스 식별자가 획득되며, 주변 장치의 특정 유형인 주변 장치들의 특정 유형 또는 주변 장치의 특정 기능인 주변 장치들의 특정 기능 중 적어도 하나를 식별하는 네임스페이스 엔트리 식별자가 획득된다. 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 기초하여 주변 장치에 대한 주변 장치 클래스 식별자가 생성되고, 주변 장치 클래스 식별자는 주변 장치에 대한 설정 레코드를 식별하는데 사용된다.
상세한 설명을 첨부 도면들을 참조하여 설명한다. 도면들에서, 참조번호의 가장 좌측의 숫자(들)은 해당 참조번호가 처음 나타나는 도면을 식별한다. 상세한 설명과 도면들에서의 상이한 실례들에서의 동일한 참조번호들의 이용은 유사하거나 또는 동일한 아이템들을 나타낼 수 있다. 도면들에서 나타난 엔티티들은 하나 이상의 엔티티들을 나타낼 수 있으며, 이에 따라 본 논의에서는 엔티티들의 단수 형태 또는 복수 형태를 상호교환적으로 언급할 수 있다.
도 1은 하나 이상의 실시예들에 따라 벤더 고유의 주변 장치 클래스 식별자들을 구현하는 예시적인 컴퓨팅 장치를 나타내는 블록도이다.
도 2는 하나 이상의 실시예들에 따른 예시적인 주변 장치 클래스 식별자를 나타낸다.
도 3은 하나 이상의 실시예들에 따라 벤더 고유의 주변 장치 클래스 식별자들을 구현하기 위한 예시적인 프로세스를 나타내는 흐름도이다.
도 4는 하나 이상의 실시예들에 따라 벤더 고유의 주변 장치 클래스 식별자들을 구현하기 위한 다른 예시적인 프로세스를 나타내는 흐름도이다.
도 5는 여기서 설명된 다양한 기술들을 구현할 수 있는 하나 이상의 시스템들 및/또는 장치들을 나타내는 예시적인 컴퓨팅 장치를 포함하는 예시적인 시스템을 나타낸다.
벤더 고유의 주변 장치 클래스 식별자들이 여기서 논의된다. 주변 장치 클래스 식별자가 주변 장치들의 클래스에 대해 생성된다. 주변 장치 클래스 식별자는 주변 장치를 설치하거나 또는 그렇지 않고 설정하는데 사용되는 설정 레코드와 연관지어질 수 있다(예를 들어, 설정 레코드 내에 포함된다). 설정 레코드는, 예를 들어, 컴퓨팅 장치가 주변 장치를 사용할 수 있게 하기 위해 컴퓨팅 장치 상에 설치하는 하나 이상의 드라이버(예를 들어, 소프트웨어 드라이버)를 식별할 수 있다. 주변 장치가 컴퓨팅 장치에 연결될 때, 컴퓨팅 장치는 또한 주변 장치에 대한 주변 장치 클래스 식별자를 생성하고, 주변 장치 클래스 식별자와 연관된 설정 레코드를 주변 장치에 대한 설정 레코드로서 획득한다.
주변 장치 클래스 식별자는 세가지 구성요소, 즉, 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자로 구성된다. 이러한 세가지 구성 요소는 주변 장치 클래스 식별자를 생성하도록 결합된다(예를 들어, 함께 연결된다). 벤더 식별자는 클래스 내의 주변 장치들의 벤더의 식별자이다. 네임스페이스 식별자는 주변 장치들의 유형들 또는 주변 장치들의 기능의 유형들의 상이한 콜렉션 또는 그룹들의 식별자이다. 예를 들어, 상이한 사용 유형들의 콜렉션 또는 그룹은 일반 데스크톱 컨트롤, 게임 컨트롤 등일 수 있다. 네임스페이스 엔트리 식별자는 주변 장치들의 유형들 또는 주변 장치들의 기능의 유형들의 상이한 콜렉션들 또는 그룹들 중의 주변 장치의 특정 유형 또는 특정 기능의 식별자이다. 예를 들어, 상이한 사용 유형들의 콜렉션 또는 그룹은 일반 데스크톱 컨트롤일 수 있으며, 특정 사용은 키보드일 수 있다.
주변 장치 클래스 식별자는 주변 장치들의 클래스를 식별하고, 따라서 복수의 상이한 주변 장치들에 대응할 수 있다(일반적으로 대응한다). 예를 들어, 벤더는 약간 다른 25개의 상이한 주변 장치들(예를 들어, 키보드 또는 게임 컨트롤러)를 구축할 수 있으며, 벤더는 25개의 상이한 주변 장치들 각각에 대해 사용되는 단일 드라이버 및 이 드라이버를 식별하는 단일 설정 레코드를 더 생성할 수 있다. 동일한 주변 장치 클래스 식별자가 25개의 상이한 주변 장치들 모두에 대해 사용된다. 25개의 상이한 주변 장치들 각각이 동일한 주변 장치 클래스 식별자에 대응함에 따라, 유리하게도 동일한 설정 레코드 및 동일한 드라이버가 25개의 상이한 주변 장치들 모두에 대해 사용되도록 해준다.
여기서 논의된 기술들은 주변 장치 벤더가 각자의 주변 장치들의 콜렉션을 함께 그룹화하고 주변 장치들의 콜렉션의 식별자를 제공함으로써 호환성을 유지할 수 있게 한다. 따라서, 주변 장치들의 콜렉션에 대한 드라이버에 대해 업데이트가 행해질 때마다, 장치들의 콜렉션 내의 모든 장치들에 대해 업데이트가 행해진다.
도 1은 하나 이상의 실시예들에 따라 벤더 고유의 주변 장치 클래스 식별자들을 구현하는 예시적인 컴퓨팅 장치(100)를 나타내는 블록도이다. 컴퓨팅 장치(100)는 데스크탑 컴퓨터, 서버 컴퓨터, 랩탑 또는 넷북 컴퓨터, 이동 장치(예컨대, 태블릿 또는 페블릿 장치, 셀룰러 또는 다른 무선 전화기(예컨대, 스마트폰), 노트패드 컴퓨터, 이동국), 착용식 장치(예컨대, 안경, 시계), 엔터테인먼트 장치(예컨대, 엔터테인먼트 기기, 디스플레이 장치에 통신가능하게 결합된 셋톱 박스, 게임 콘솔), 텔레비전 또는 다른 디스플레이 장치, 차량 컴퓨터, 등등과 같은 다양한 상이한 유형들의 장치들일 수 있다. 따라서, 컴퓨팅 장치(100)는 상당한 메모리 및 프로세서 리소스들을 갖춘 풀 리소스 장치(예컨대, 개인 컴퓨터, 게임 콘솔)에서부터 제한된 메모리 및/또는 프로세싱 리소스들을 갖춘 로우 리소스 장치(예컨대, 전통적인 셋탑 박스, 핸드헬드 게임 콘솔)에 이르는 범위를 가질 수 있다.
컴퓨팅 장치(100)는 주변 장치 설정 시스템(102) 및 데이터 스토어(104)를 포함한다. 데이터 스토어(104)는 하나 이상의 설정 레코드(106)를 포함하며, 각각의 설정 레코드(106)는 컴퓨팅 장치(100) 상에 주변 장치를 설치하거나 또는 그렇지 않으면 설정하거나 또는 사용하는 방법을 설명하는 정보를 포함한다. 설정 레코드(106)는 파일(예를 들어, 정보 또는 INF 파일)일 수 있고, 파일의 일부일 수 있으며, 데이터베이스의 요소 등일 수 있다. 주변 장치에 대한 하나 이상의 드라이버의 명칭 및 위치, 주변 장치에 대한 드라이버의 버전의 식별정보, 등록 스토어(예를 들어, 컴퓨팅 장치(100)에 대한 운영체제 레지스트리 또는 다른 구성 데이터 스토어)에 추가될 정보 등과 같은 다양한 정보가 설정 레코드(106)에 포함될 수 있다. 하나 이상의 실시예들에서, 설정 레코드(106)는 주변 장치의 하나 이상의 드라이버들이 저장되어 있는 위치를 식별하지만, 대안적으로 설정 레코드(106)는 주변 장치의 하나 이상의 드라이버들의 적어도 일부를 포함할 수 있다.
주변 장치 설정 시스템(102)은 설정 관리 모듈(112) 및 주변 장치 클래스 식별자 생성 모듈(114)을 포함한다. 설정 관리 모듈(112)은 컴퓨팅 장치(100)와 함께 사용하기 위한 주변 장치들의 설정을 관리한다. 이 설정은 컴퓨팅 장치(100)가 주변 장치와 통신할 수 있도록 적절하게 컴퓨팅 장치(100)를 구성하는 것을 지칭한다. 이러한 설정은 주변 장치를 위한 하나 이상의 드라이버(예를 들어, 소프트웨어 드라이버)를 컴퓨팅 장치(100) 상에 설치하는 것, 주변 장치에 대한 (예를 들어, 등록 스토어에 있는) 구성 값들을 컴퓨팅 장치(100) 상에서 설정하는 것, 컴퓨팅 장치(100)의 다른 컴포넌트들 또는 모듈들에게 주변 장치의 존재를 알리는 것 등을 포함할 수 있다.
주변 장치 클래스 식별자 생성 모듈(114)은 주변 장치에 대한 주변 장치 클래스 식별자를 생성한다. 이러한 주변 장치 클래스 식별자는 아래에서 보다 상세히 설명되는 바와 같이 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 포함한다. 이러한 주변 장치 클래스 식별자들 각각은 주변 장치들의 특정 클래스를 식별하므로, 복수의 상이한 주변 장치들에 대응한다.
주변 장치를 사용하도록 컴퓨팅 장치(100)를 설정하는 방법을 설명하는 설정 레코드(106)와 주변 장치 사이의 연관이 또한 (예를 들어, 컴퓨팅 장치(100)에 의해) 유지된다. 이 연관은 주변 장치 클래스 식별자를 사용하여 유지된다. 주변 장치는 주변 장치 클래스 식별자에 의해 식별되고, 식별된 주변 장치를 사용하도록 컴퓨팅 장치(100)를 설정하는 방법을 설명하는 설정 레코드와 주변 장치 클래스 식별자 사이의 대응성이 유지된다. 하나 이상의 실시예들에서, 이러한 대응성은 주변 장치 클래스 식별자를 설정 레코드(106)에 포함함으로써 유지되고, 따라서 각각의 설정 레코드(106)는 설정 레코드(106)가 설정 방법을 설명하는 주변 장치들의 클래스의 주변 장치 클래스 식별자를 포함한다. 대안적으로, 주변 장치 클래스 식별자를 설정 레코드(106)에 매핑시키는 리스트 또는 다른 레코드를 유지하는 것, 주변 장치 클래스 식별자를 설정 레코드(106)의 파일 명칭 또는 요소 명칭으로서 사용하는 것 등과 같은 상이한 방식으로 대응성이 유지될 수 있다.
하나 이상의 실시예들에서, 주변 장치 설정 시스템(102)은 컴퓨팅 장치(100)의 운영체제의 일부이다. 대안적으로, 주변 장치 설정 시스템(102) 또는 주변 장치 설정 시스템(102)의 부분들은 컴퓨팅 장치(100)의 운영체제와는 별개인 다른 컴포넌트들 또는 모듈들로서 구현될 수 있다.
예시적인 주변 장치(120)가 컴퓨팅 장치(100)에 결합된 것으로서 도시되어 있다. 주변 장치(102)는 다양한 상이한 프로토콜을 구현하는 다양한 상이한 무선 또는 유선 통신 연결들 중 임의의 것을 사용하여 컴퓨팅 장치(100)에 결합될 수 있다. 이러한 통신 연결은 공개 및/또는 독점적 연결일 수 있다. 예를 들어, 주변 장치(102)는 USB(universal serial bus) 연결, 무선 USB 연결, 적외선 연결, 블루투스 연결, 디스플레이 포트(DisplayPort) 연결, PCI(Peripheral Component Interconnect) 고속 연결, 데이터 네트워크 연결(예컨대, Wi-Fi 네트워크 연결) 등을 통해 컴퓨팅 장치(100)에 결합될 수 있다.
주변 장치(120)는 주변 장치(120)의 클래스를 식별하는 주변 장치 클래스 식별자(122)를 갖는다. 주변 장치(120)의 클래스는 주변 장치들(120)이 속해있는 주변 장치들의 콜렉션 또는 그룹을 지칭한다. 주변 장치(120)의 벤더는 주변 장치들의 콜렉션 또는 그룹을 정의하고, 따라서 주변 장치(120)가 어느 클래스에 속해있는지를 정의한다. 주변 장치(120)가 어느 클래스에 속해있는지에 대한 이러한 정의는 주변 장치(120)의 다양한 특성들 또는 특징들에 기초한다.
주변 장치(120)는 주변 장치 클래스 식별자(122)의 컴포넌트들 또는 주변 장치 클래스 식별자(122)의 컴포넌트들이 결정될 수 있도록 해주는 다른 정보를 (예를 들어, 주변 장치(120)의 하나 이상의 레지스터에) 포함한다. 주변 장치(120)가 컴퓨팅 장치(100)에 연결되도록 (예를 들어, 유선 연결을 위해 케이블을 통해 어태치되고, 무선 연결의 무선 범위 내에 있고, 동일한 데이터 네트워크에 결합되도록) 위치될 때, 설정 관리 모듈(112)은 임의의 다양한 상이한 공개 또는 독점 방식으로 주변 장치(120)의 존재를 검출한다. 주변 장치 클래스 식별자 생성 모듈(114)은, 주변 장치(120)의 존재가 검출된 것에 응답하여, 주변 장치 클래스 식별자(122)를 생성하고, 주변 장치 클래스 식별자(122)를 사용하여 주변 장치(120)에 대응하는 설정 레코드(106)를 식별한다. 주변 장치 클래스 식별자 생성 모듈(114)은 주변 장치 클래스 식별자를 설정 관리 모듈(112)에 제공하여, 설정 관리 모듈(112)로 하여금, 주변 장치(122)를 사용하도록 컴퓨팅 장치(100)를 설정하게 한다.
주변 장치(122)를 사용하는 컴퓨팅 장치(100)는 주변 장치(122)와 통신하는 컴퓨팅 장치(100)를 지칭한다. 이 통신은 주변 장치(122)로 데이터 또는 정보를 전송하는 것 및/또는 주변 장치(122)로부터 데이터 또는 정보를 수신하는 것을 포함할 수 있다.
도 2는 하나 이상의 실시예들에 따른 예시적인 주변 장치 클래스 식별자(200)를 나타낸다. 주변 장치 클래스 식별자(200)는, 예를 들어, 도 1의 주변 장치 클래스 식별자(122)일 수 있다. 주변 장치 클래스 식별자(200)는 벤더 식별자(202), 네임스페이스 식별자(204), 및 네임스페이스 엔트리 식별자(206)를 포함한다.
벤더 식별자(202)는 주변 장치들의 클래스의 벤더의 식별자이다. 벤더 식별자(202)는 주변 장치들의 클래스의 벤더(예를 들어, 판매자, 제조자, 분배자)를 식별하는 문자열(예를 들어, 영숫자, 구두점)이다. 상이한 벤더들은 상이한 벤더 식별자들을 가지며, 단일 벤더가 복수의 벤더 식별자들을 가질 수 있다. 주변 장치는 해당 주변 장치가 속해있는 주변 장치들의 클래스의 벤더 식별자(202)를 (예를 들어, 주변 장치의 레지스터 내에) 포함한다.
네임스페이스 식별자(204)는 주변 장치들의 유형들 또는 주변 장치들의 기능의 유형들의 상이한 콜렉션 또는 그룹들의 식별자이다. 네임스페이스 식별자(204)는 주변 장치들의 상이한 유형들 또는 주변 장치들의 기능의 상이한 유형들의 복수의 상이한 콜렉션들 또는 그룹들 중 하나를 식별하는 문자열(예컨대, 영숫자, 구두점)이다. 예를 들어, 상이한 사용 유형들의 콜렉션 또는 그룹은 일반 데스크톱 컨트롤, 게임 컨트롤, LED, 버튼 등일 수 있다.
네임스페이스 엔트리 식별자(206)는 주변 장치들의 유형들(또는 주변 장치들의 기능의 유형들)의 상이한 콜렉션들 또는 그룹들 중의 주변 장치의 특정 유형(또는 특정 기능)의 식별자이다. 네임스페이스 식별자(204) 및 네임스페이스 엔트리 식별자(206)는 주변 장치들의 클래스에 의해 제공되는 기능의 유형 및/또는 주변 장치의 표시를 함께 제공한다. 예를 들어, (네임스페이스 식별자(204)에 의해 표시된 바와 같은) 주변 장치들의 유형들 또는 주변 장치들의 기능의 유형들의 콜렉션들 또는 그룹들은 일반 데스크톱 컨트롤일 수 있으며, (네임스페이스 엔트리 식별자(206)에 의해 표시된 바와 같은) 주변 장치의 특정 유형 또는 주변 장치에 의해 제공되는 특정 기능은 키보드, 조이스틱, 키패드, 마우스 등일 수 있다. 다른 예로서, (네임스페이스 식별자(204)에 의해 표시된 바와 같은) 주변 장치들의 유형들 또는 주변 장치들의 기능의 유형들의 콜렉션들 또는 그룹들은 게임 컨트롤일 수 있으며, (네임스페이스 엔트리 식별자(206)에 의해 표시된 바와 같은) 주변 장치의 특정 유형 또는 주변 장치에 의해 제공되는 특정 기능은 3차원 게임 컨트롤러, 핀볼 장치 등일 수 있다.
하나 이상의 실시예들에서, 주변 장치들이 휴먼 인터페이스 장치(human interface device; HID)인 경우, 네임스페이스 식별자(204)는 사용 페이지 식별자이고, 네임스페이스 엔트리 식별자(206)는 사용 식별자이다. 사용 페이지 식별자는 (예컨대, USB HID 사용 테이블 사양, 버전 1.12(2004년 10월 28일)와 같은) HID 표준 또는 사양의 사용 페이지를 식별하며, 사용 식별자는 HID 표준 또는 사양의 식별된 사용 페이지 상의 사용의 식별자이다. 대안적으로, 주변 장치들이 USB 장치들인 경우, 네임스페이스 식별자(204)는 클래스 식별자이고, 네임스페이스 엔트리 식별자(206)는 서브클래스 식별자이다. 클래스 식별자는 (예컨대, USB 사양, 버전 3.1(2013년 7월)과 같은) USB 표준 또는 사양의 클래스를 식별하며, 서브클래스는 USB 표준 또는 사양의 식별된 클래스의 서브클래스의 식별자이다.
벤더 식별자(202), 네임스페이스 식별자(204), 및 네임스페이스 엔트리 식별자(206)는 결합되어 주변 장치 클래스 식별자(200)가 생성된다. 하나 이상의 실시예들에서, 이러한 결합은 벤더 식별자(202), 네임스페이스 식별자(204), 및 네임스페이스 엔트리 식별자(206)의 연결이다. 예를 들어, 벤더 식별자(202)는 VID-046D일 수 있고, 네임스페이스 식별자(204)는 UP:FFBC일 수 있고, 네임스페이스 엔트리 식별자(206)는 U:0088일 수 있으며, 이들은 결합되어 VID_046D&UP:FFBC_U:0088의 주변 장치 클래스 식별자(200)가 생성된다. 그러나, 벤더 식별자(202), 네임스페이스 식별자(204), 및 네임스페이스 엔트리 식별자(206)는 다른 순서로 연결될 수 있으며, 벤더 식별자(202), 네임스페이스 식별자(204), 및 네임스페이스 엔트리 식별자(206)를 결합하는 다른 방식들이 대안적으로 사용될 수 있음을 이해해야 한다.
도 3은 하나 이상의 실시예들에 따라 벤더 고유의 주변 장치 클래스 식별자들을 구현하기 위한 예시적인 프로세스(300)를 나타내는 흐름도이다. 프로세스(300)는 벤더의 장치에 의해 수행되며, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 프로세스(300)는 일련의 동작들로서 도시되며, 다양한 동작들의 연산들을 수행하기 위해, 도시된 순서로 제한되지는 않는다. 프로세스(300)는 벤더 고유의 주변 장치 클래스 식별자들을 구현하기 위한 예시적인 프로세스이며, 벤더 고유의 주변 장치 클래스 식별자들을 구현하는 추가적인 논의가 상이한 도면들을 참조하여 여기에 포함된다.
프로세스(300)에서, 주변 장치에 대한 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자가 획득된다(동작 302). 이러한 식별자들은 벤더에 의해 제공되는 것과 같이, 상이한 소스들로부터, 다른 장치들 또는 컴포넌트들로부터, 산업계 표준 식별자 정의들 등으로부터 획득될 수 있다.
획득된 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 기초하여 주변 장치에 대한 주변 장치 클래스 식별자가 생성된다(동작 304). 주변 장치 클래스 식별자는 상술한 바와 같은 임의의 다양한 방식들로 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합함으로써 생성된다.
생성된 주변 장치 클래스 식별자는 주변 장치에 대한 설정 레코드와 연관된다(동작 306). 이러한 연관은, 주변 장치 클래스 식별자를 설정 레코드에 포함시키는 것과 같이, 상술한 바와 같은 다양한 방식으로 행해질 수 있다. 주변 장치는 동작 302에서 획득된 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 대응하는 특성들 또는 특징들을 갖고, 이에 따라 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자와의 주변 장치의 연관을 초래시킨다. 따라서, 연관은 또한 획득된 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 대응하는 특성들 또는 특징들을 갖는 주변 장치에 응답하여 행해진다.
도 4는 하나 이상의 실시예들에 따라 벤더 고유의 주변 장치 클래스 식별자들을 구현하기 위한 다른 예시적인 프로세스(400)를 나타내는 흐름도이다. 프로세스(400)는 도 1의 컴퓨팅 장치(100)와 같이, 주변 장치를 사용하도록 설정된 컴퓨팅 장치에 의해 수행되며, 이는 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 프로세스(400)는 일련의 동작들로서 도시되며, 다양한 동작들의 연산들을 수행하기 위해, 도시된 순서로 제한되지는 않는다. 프로세스(400)는 벤더 고유의 주변 장치 클래스 식별자들을 구현하기 위한 예시적인 프로세스이며, 벤더 고유의 주변 장치 클래스 식별자들을 구현하는 추가적인 논의가 상이한 도면들을 참조하여 여기에 포함된다.
프로세스(400)에서, 주변 장치에 대한 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자가 획득된다(동작 402). 이들 식별자들은 상술한 바와 같이 주변 장치에서의 레지스터들로부터와 같이 주변 장치로부터 획득된다. 대안적으로, 하나 이상의 식별자들이 상이한 소스들로부터 획득될 수 있다. 이들 상이한 소스들은, 예를 들어, 컴퓨팅 장치, 컴퓨팅 장치의 다른 컴포넌트 또는 모듈, 다른 장치의 관리자 또는 사용자 등일 수 있다.
획득된 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 기초하여 주변 장치에 대한 주변 장치 클래스 식별자가 생성된다(동작 404). 주변 장치 클래스 식별자는 상술한 바와 같은 임의의 다양한 방식들로 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합함으로써 생성된다. 주변 장치 클래스 식별자는 주변 장치 클래스 식별자가 도 3의 동작 304에서 생성되는 것과 동일한 방식으로 동작 404에서 생성된다.
생성된 주변 장치 클래스 식별자는 주변 장치에 대한 설정 레코드를 식별하는데 사용된다(동작 406). 설정 레코드는 상술한 바와 같이, 주변 장치 클래스 식별자와 연관된다. 주변 장치와 연관된 설정 레코드가 식별되는 방식은 설정 레코드가 주변 장치 클래스 식별자와 연관되는 방식에 따라 달라질 수 있다. 예를 들어, 생성된 주변 장치 클래스 식별자를 어떤 설정 레코드가 포함하는지를 결정하기 위해 설정 레코드가 검색될 수 있고, 어떤 설정 레코드가 생성된 주변 장치 클래스 식별자를 포함하는지 또는 그렇지 않으면 식별하는지 등을 결정하기 위해 설정 레코드의 데이터베이스 또는 다른 목록이 검색될 수 있다.
식별된 설정 레코드는 컴퓨팅 장치 상에서의 사용을 위해 주변 장치를 설정하는데 사용된다(동작 408). 상술한 바와 같이, 이 설정은 주변 장치와 통신하도록 컴퓨팅 장치를 구성하는 것을 포함하며, 컴퓨팅 장치 상에 주변 장치를 위한 드라이버를 설치하는 것을 포함할 수 있다.
본 명세서에서 논의된 기술들은 본 명세서에서 주변 장치 클래스 식별자로서 지칭되는 특정 유형의 주변 장치 식별자를 설명한다는 것에 유의해야 한다. 그러나, 다양한 다른 주변 장치 식별자들이 또한 주변 장치와 연관될 수 있다. 예를 들어, 벤더 식별자는 (네임스페이스 식별자 및 네임스페이스 엔트리 식별자보다는) 특정 주변 장치의 제품 식별자와 결합(예를 들어, 연결)될 수 있다. 제품 식별자는 특정 주변 장치가 벤더의 다른 주변 장치들로부터 구별되게 해준다. 이들 다양한 다른 주변 장치 식별자들은 주변 장치와 연관된 주변 장치 클래스 식별자와 동시적으로 주변 장치와 연관될 수 있다(예를 들어, 설정 레코드는 주변 장치 클래스 식별자뿐만이 아니라 하나 이상의 다른 주변 장치 식별자들을 포함할 수 있으며, 주변 장치의 레지스터는 주변 장치 클래스 식별자이 생성될 수 있게 해줄뿐만이 아니라 하나 이상의 다른 주변 장치 식별자들이 생성될 수 있게 해주는 정보를 포함할 수 있다).
본 명세서에서 설명된 기술들은 컴퓨팅 장치와 함께 주변 장치를 사용하는 것을 참조하여 설명된다는 것을 유념해둔다. 이들 기술들은 주변 장치를 위한 호스트 장치(예를 들어, 주변 장치가 무선 또는 유선으로 연결된 임의의 장치)로서 동작하는 임의의 장치와 함께 사용될 수 있다. 예를 들어, 본 명세서에 설명된 기술들은 주변 장치들이 차량 컴퓨터에 연결되는 차량 환경에서 사용될 수 있다. 또 다른 예로서, 본 명세서에서 설명된 기술들은 IOT(Internet of Things) 환경의 일부인 주변 장치들과 함께 사용될 수 있다.
본 명세서에서 설명된 기술들은 주변 장치 벤더가 주변 장치들의 콜렉션 또는 그룹을 위한 드라이버를 갖도록 해준다는 것을 또한 유념해 둔다. 드라이버는 하나 이상의 다양한 여러가지 임의의 배포 채널 또는 메커니즘을 사용하여 컴퓨팅 장치들에 배포될 수 있다. 예를 들어, 드라이버는 벤더의 웹 사이트 또는 다른 네트워크 위치에서 사용할 수 있거나, (예를 들어, 다른 운영체제 업데이트와 함께 운영체제 벤더에 의해 컴퓨팅 장치에 제공되는) 운영체제 업데이트 서비스의 일부로서 제공될 수 있다.
본 명세서에서 설명된 기술들은 다양한 여러가지 사용 시나리오들을 지원한다. 예를 들어, 벤더가 서로 간에 약간의 차이들을 갖는 25개의 상이한 주변 장치들을 갖고 있는 경우, 벤더는 25개의 상이한 주변 장치들 모두에 대해 단일 설정 레코드를 가질 수 있으며, 이 설정 레코드는 동일한 드라이버를 식별한다. 벤더는 컴퓨팅 장치(또는 운영체제)의 벤더가 단일 설정 레코드와 단일 드라이버를 승인하도록 함으로써 컴퓨팅 장치(또는 운영체제)의 벤더에 의한 사용에 대해 승인되었던 25개의 상이한 주변 장치들을 모두 가질 수 있다. 복수의 주변 장치들에 대한 단일 설정 레코드 및 드라이버의 이러한 사용은 컴퓨팅 장치 상에 포함된 설정 레코드 및 드라이버의 수를 유리하게 감소시킨다(따라서, 사용된 저장 공간 또는 메모리를 감소시키고 특정 주변 장치에 대한 설정 레코드를 식별하기 위해 검색되는 설정 레코드의 수를 감소시킴으로써 컴퓨팅 장치 성능을 향상시킨다). 또한, 벤더가 이후에 설정 레코드 또는 드라이버를 변경하면, 단일 설정 레코드 또는 드라이버만이 변경될 필요가 있을 뿐이며, 25개의 상이한 설정 레코드 또는 드라이버들에 대한 변경은 필요하지 않는다. 또한, 벤더가 새로운 주변 장치를 생성하는 경우, 그 새로운 주변 장치는 유리하게 동일한 주변 장치 클래스 식별자를 부여받을 수 있어서, 새로운 주변 장치가 컴퓨팅 장치(또는 운영체제)의 벤더에 의해 이전에 승인되었던 것과 동일한 설정 레코드 및 드라이버를 사용할 수 있게 하며, 설정 레코드와 드라이버를 재승인해야할 필요성을 피할 수 있게 해준다. 따라서, 주변 장치뿐만이 아니라 컴퓨팅 장치의 사용성이 증가된다.
본 명세서에서는 특정 기능이 특정 모듈들을 참조하여 논의되었지만, 본 명세서에서 논의된 개별 모듈들의 기능은 복수의 모듈들로 분리될 수 있고/있거나, 복수의 모듈들의 적어도 일부 기능이 단일 모듈로 결합될 수 있음을 유의해야 한다. 추가적으로, 동작을 수행하는 것으로서 본 명세서에서 논의된 특정 모듈은 동작을 수행하는 해당 특정 모듈 자체를 포함하거나, 또는 대안적으로 동작을 수행하는(또는 해당 특정 모듈과 관련하여 동작을 수행하는) 다른 컴포넌트 또는 모듈을 인보크하거나 또는 이와 달리 액세싱하는 해당 특정 모듈을 포함한다. 따라서, 동작을 수행하는 특정 모듈은 동작을 수행하는 해당 특정 모듈 자체 및/또는 동작을 수행하는 해당 특정 모듈에 의해 인보크되거나 또는 이와 달리 액세스되는 다른 모듈을 포함한다.
도 5는 본 명세서에서 설명된 다양한 기술들을 구현할 수 있는 하나 이상의 시스템들 및/또는 장치들을 나타내는 예시적인 컴퓨팅 장치(502)를 포함하는 예시적인 시스템을 참조번호 500으로 개략적으로 나타낸다. 컴퓨팅 장치(502)는, 예컨대, 서비스 공급자의 서버, 클라이언트와 연관된 장치(예컨대, 클라이언트 장치), 온 칩 시스템, 및/또는 임의의 다른 적절한 컴퓨팅 장치 또는 컴퓨팅 시스템일 수 있다. 컴퓨팅 장치(502)는 예를 들어, 도 1의 컴퓨팅 장치(100), 도 3의 프로세스(300)를 구현하는 컴퓨팅 장치, 도 4의 프로세스(400)를 구현하는 컴퓨팅 장치 등일 수 있다.
도시된 예시적인 컴퓨팅 장치(502)는 서로 통신가능하게 결합된, 프로세싱 시스템(504), 하나 이상의 컴퓨터로 판독가능한 매체(506), 및 하나 이상의 I/O 인터페이스들(508)를 포함한다. 도시되지는 않았지만, 컴퓨팅 장치(502)는 다양한 컴포넌트들을 서로 결합시키는 시스템 버스 또는 다른 데이터 및 커맨드 전송 시스템을 더 포함할 수 있다. 시스템 버스는 임의의 다양한 버스 아키텍처들을 활용하는, 메모리 버스 또는 메모리 제어기, 주변 버스, 범용 직렬 버스, 및/또는 프로세서 또는 로컬 버스와 같은, 상이한 버스 구조들 중의 임의의 하나 또는 이러한 상이한 버스 구조들의 조합을 포함할 수 있다. 제어 및 데이터 라인들과 같은, 다양한 다른 예시들이 또한 구상가능하다.
프로세싱 시스템(504)은 하드웨어를 이용하여 하나 이상의 연산들을 수행하는 기능을 나타낸다. 이에 따라, 프로세싱 시스템(504)은 프로세서들, 기능 블록들 등으로서 구성될 수 있는 하드웨어 엘리먼트(510)를 포함한 것으로서 예시된다. 이것은 하나 이상의 반도체들을 이용하여 형성된 응용 특정 집적 회로 또는 다른 로직 장치로서 하드웨어로의 구현을 포함할 수 있다. 하드웨어 엘리먼트들(510)은 하드웨어 엘리먼트를 형성하는 물질들 또는 그 안에서 활용된 프로세싱 메카니즘들에 의해 제한받지 않는다. 예를 들어, 프로세서들은 반도체(들) 및/또는 트랜지스터(들)(예컨대, 전자 집적 회로(electronic integrated circuit; IC))로 구성될 수 있다. 이러한 상황에서, 프로세서로 실행가능한 명령어들은 전자적으로 실행가능한 명령어들일 수 있다.
컴퓨터로 판독가능한 매체(506)는 메모리/스토리지(512)를 포함하는 것으로서 예시된다. 메모리/스토리지(512)는 하나 이상의 컴퓨터로 판독가능한 매체와 연관된 메모리/스토리지 용량을 나타낸다. 메모리/스토리지(512)는 (RAM(random access memory)과 같은) 휘발성 매체 및/또는 (ROM(read only memory), 플래쉬 메모리, 광 디스크, 자기 디스크 등과 같은) 비휘발성 매체를 포함할 수 있다. 메모리/스토리지(512)는 고정 매체(예컨대, RAM, ROM, 고정 하드 드라이브 등)뿐만이 아니라, 탈착가능 매체(예컨대, 플래쉬 메모리, 탈착가능 하드 드라이브, 광 디스크 등)를 포함할 수 있다. 컴퓨터로 판독가능한 매체(506)는 아래에서 추가로 설명되는 다양한 다른 방식들로 구성될 수 있다.
하나 이상의 입력/출력 인터페이스(들)(508)은 다양한 입력/출력 장치들을 이용하여 사용자로 하여금 컴퓨팅 장치(502)에 커맨드와 정보를 입력할 수 있도록 해주고, 또한 정보가 사용자 및/또는 다른 컴포넌트들 또는 장치들에 제시될 수 있도록 해주는 기능을 나타낸다. 입력 장치들의 예시들은 키보드, 커서 제어 장치(예컨대, 마우스), (예를 들어, 음성 인식 입력을 위한) 마이크로폰, 스캐너, 터치 기능(예컨대, 물리적 터치를 검출하도록 구성된 용량성 또는 다른 센서들), (예컨대, 접촉을 수반하지 않는 움직임을 제스처로서 검출하기 위해 적외선 주파수와 같은 가시적 또는 비가시적 파장을 사용할 수 있는) 카메라 등을 포함한다. 출력 장치들의 예시들은 디스플레이 장치(예컨대, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드, 촉각 반응 장치 등을 포함한다. 따라서, 컴퓨팅 장치(502)는 사용자 상호작용을 지원하기 위한 아래에서 추가로 설명되는 다양한 방식들로 구성될 수 있다.
컴퓨팅 장치(502)는 또한 주변 장치 설정 시스템(514)을 포함한다. 주변 장치 설정 시스템(514)은 주변 장치 클래스 식별자를 생성하는 것, 주변 장치와 함께 사용하도록 컴퓨팅 장치를 설정하는 것, 및 상술한 것 등등의 하나 이상을 수행할 수 있다. 주변 장치 설정 시스템(514)은, 예를 들어, 도 1의 주변 장치 설정 시스템(102)을 구현할 수 있다.
소프트웨어, 하드웨어 엘리먼트들, 또는 프로그램 모듈들의 일반적인 상황으로 다양한 기술들이 본 명세서에서 설명될 수 있다. 일반적으로, 이러한 모듈들은 특정한 태스크들을 수행하거나 또는 특정한 추상적 데이터 유형들을 구현하는, 루틴들, 프로그램들, 오브젝트들, 엘리먼트들, 컴포넌트들, 데이터 구조들 등을 포함한다. 여기서 이용된 "모듈", "기능", 및 "컴포넌트" 용어들은 일반적으로 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 조합을 나타낸다. 여기서 설명되는 기술들의 특징들은 플랫폼 독립적인데, 이것은 본 기술들이 다양한 프로세서들을 갖는 다양한 컴퓨팅 플랫폼들 상에서 구현될 수 있다는 것을 의미한다.
설명된 모듈들 및 기술들의 구현은 일부 형태의 컴퓨터로 판독가능한 매체 상에 저장될 수 있거나 또는 이를 통해 송신될 수 있다. 컴퓨터로 판독가능한 매체는 컴퓨팅 장치(502)에 의해 액세스될 수 있는 다양한 매체를 포함할 수 있다. 비제한적인 예시로서, 컴퓨터로 판독가능한 매체는 "컴퓨터로 판독가능한 저장 매체"와 "컴퓨터로 판독가능한 신호 매체"를 포함할 수 있다.
"컴퓨터로 판독가능한 저장 매체"는 단순한 신호 송신, 반송파, 또는 신호 그 자체와 대비되어, 영구적 정보 저장을 가능하게 해주는 매체 및/또는 장치들 및/또는 유형적 스토리지를 가리킨다. 따라서, 컴퓨터로 판독가능한 저장 매체는 비신호 함유 매체를 가리킨다. 컴퓨터로 판독가능한 저장 매체는 컴퓨터로 판독가능한 명령어, 데이터 구조, 프로그램 모듈, 로직 엘리먼트/회로, 또는 다른 데이터와 같은 정보의 저장에 적절한 방법 또는 기술로 구현된 휘발성 및 비휘발성의, 탈착가능 및 탈착불가능 매체 및/또는 스토리지 장치들과 같은 하드웨어를 포함한다. 컴퓨터로 판독가능한 저장 매체의 예시들은, 비제한적인 예시로서, RAM, ROM, EEPROM, 플래쉬 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다용도 디스크(DVD) 또는 다른 광학 스토리지, 하드 디스크, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 장치들, 또는 다른 스토리지 장치, 유형적 매체, 또는 희망하는 정보를 저장하는데 적합하고 컴퓨터에 의해 액세스될 수 있는 제조 물품을 포함할 수 있다.
"컴퓨터로 판독가능한 신호 매체"는 네트워크를 통해서와 같이, 명령어들을 컴퓨팅 장치(502)의 하드웨어에 송신하도록 구성된 신호 함유 매체를 가리킨다. 신호 매체는 일반적으로 컴퓨터로 판독가능한 명령어들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터를 반송파, 데이터 신호 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호 내에 포함시킬 수 있다. 신호 매체는 또한 임의의 정보 전달 매체를 포함한다. "변조 데이터 신호"의 용어는 해당 신호 내에 정보를 인코딩하는 방식으로 설정되거나 또는 변경된 하나 이상의 특성들을 갖는 신호를 의미한다. 비제한적인 예시로서, 통신 매체는 유선 네트워크 또는 직접적 유선 커넥션과 같은 유선 매체, 및 음향, RF, 적외선과 같은 무선 매체, 및 이와 다른 무선 매체를 포함한다.
이전에 설명한 바와 같이, 하드웨어 엘리먼트들(510)과 컴퓨터로 판독가능한 매체(506)는, 여기서 설명된 기술들의 적어도 몇몇의 양태들을 구현하기 위한 몇몇의 실시예들에서 활용될 수 있는 하드웨어 형태로 구현된 명령어들, 모듈들, 프로그램가능 장치 로직 및/또는 고정 장치 로직을 나타낸다. 하드웨어 엘리먼트들은 집적 회로 또는 온 칩 시스템, ASIC(application-specific integrated circuit), FPGA(field-programmable gate array), CPLD(complex programmable logic device), 및 실리콘 또는 다른 하드웨어 장치들로의 다른 구현들의 컴포넌트들을 포함할 수 있다. 이러한 상황에서, 하드웨어 엘리먼트는 해당 하드웨어 엘리먼트에 의해 구체화된 로직, 모듈, 및/또는 명령어들에 의해 정의된 프로그램 태스크들을 수행하는 프로세싱 장치 뿐만이 아니라, 실행용 명령어들을 저장하는 데에 활용된 하드웨어 장치, 예컨대 이전에 설명된 컴퓨터로 판독가능한 저장 매체로서 동작할 수 있다.
본 명세서에서 설명된 다양한 기술들과 모듈들을 구현하기 위해 전술한 내용의 조합들이 또한 활용될 수 있다. 이에 따라, 소프트웨어, 하드웨어, 프로그램 모듈들, 및 다른 프로그램 모듈들이 몇몇 형태의 컴퓨터로 판독가능한 저장 매체 상에 및/또는 하나 이상의 하드웨어 엘리먼트들(510)에 의해 포함된 하나 이상의 명령어들 및/또는 로직으로서 구현될 수 있다. 컴퓨팅 장치(502)는 해당 소프트웨어 및/또는 하드웨어 모듈들에 대응하는 특정 명령어들 및/또는 기능들을 구현하도록 구성될 수 있다. 이에 따라, 소프트웨어로서 컴퓨팅 장치(502)에 의해 실행가능한 모듈로서의 모듈들의 구현은 적어도 부분적으로 하드웨어로, 예컨대, 프로세싱 시스템의 컴퓨터로 판독가능한 저장 매체 및/또는 하드웨어 엘리먼트들(510)의 이용을 통해 달성될 수 있다. 여기서 설명된 기술들, 모듈들, 및 예시들을 구현하기 위해 명령어들 및/또는 기능들은 하나 이상의 제조 물품들(예컨대, 하나 이상의 컴퓨팅 장치들(502) 및/또는 프로세싱 시스템들(504))에 의해 실행가능/동작가능할 수 있다.
도 5에서 추가로 예시된 바와 같이, 예시적인 시스템(500)은 개인 컴퓨터(PC), 텔레비젼 장치, 및/또는 모바일 장치 상에서 애플리케이션들을 구동시킬 때의 끊김없는 사용자 경험을 위해 유비쿼터스 환경들을 가능하게 해준다. 애플리케이션을 활용하고, 비디오 게임을 하며, 비디오 시청 등을 하면서 하나의 장치로부터 다음 장치로 천이할 때 서비스들과 애플리케이션들은 공통적인 사용자 경험을 위해 세가지 모두의 환경들에서 실질적으로 유사하게 구동된다.
예시적인 시스템(500)에서, 복수의 장치들이 중앙 컴퓨팅 장치를 통해 상호연결된다. 중앙 컴퓨팅 장치는 복수의 장치들에 대해 로컬방식으로 있을 수 있거나 또는 다중 장치들로부터 원격 위치될 수 있다. 하나 이상의 실시예들에서, 중앙 컴퓨팅 장치는, 네트워크, 인터넷, 또는 다른 데이터 통신 링크를 통해 복수의 장치들에 연결된 하나 이상의 서버 컴퓨터들의 클라우드일 수 있다.
하나 이상의 실시예들에서, 이러한 상호연결 아키텍처는 복수의 장치들의 사용자에게 공통적이고 끊김없는 경험을 제공하도록 복수의 장치들에 걸쳐 기능이 전달될 수 있게 해준다. 복수의 장치들 각각은 상이한 물리적 요건들 및 능력들을 가질 수 있으며, 중앙 컴퓨팅 장치는, 장치에 맞춤화되며 또한 모든 장치들에게 공통되는 경험의 장치로의 전달을 가능하게 해주는 플랫폼을 이용한다. 하나 이상의 실시예들에서, 타겟 장치들의 클래스가 생성되며 경험들은 장치들의 일반적인 클래스에 맞춤화된다. 장치들의 클래스는 장치들의 물리적 특징들, 사용 유형들, 또는 다른 공통 특성들에 의해 정의될 수 있다.
다양한 구현예들에서, 컴퓨팅 장치(502)는 컴퓨터(516), 모바일(518), 및 텔레비젼(520) 이용들과 같은, 다양한 상이한 구성들을 취할 수 있다. 이러한 구성들 각각은 대체로 상이한 구성들 및 능력들을 가질 수 있는 장치들을 포함하며, 이에 따라 컴퓨팅 장치(502)는 하나 이상의 상이한 장치 클래스들에 따라 구성될 수 있다. 예컨대, 컴퓨팅 장치(502)는 개인 컴퓨터, 데스크탑 컴퓨터, 멀티 스크린 컴퓨터, 랩탑 컴퓨터, 넷북 등을 포함하는 컴퓨터(516) 장치 클래스로서 구현될 수 있다.
컴퓨팅 장치(502)는 또한 모바일 폰, 휴대용 뮤직 플레이어, 휴대용 게임 장치, 태블릿 컴퓨터, 멀티 스크린 컴퓨터 등과 같은 모바일 장치들을 포함하는 모바일(518) 장치 클래스로서 구현될 수 있다. 컴퓨팅 장치(502)는 또한 평상시의 시청 환경들에서 대체로 보다 큰 스크린들을 갖거나 또는 이에 연결된 장치들을 포함하는 텔레비젼(520) 장치 클래스로서 구현될 수 있다. 이러한 장치들에는 텔레비젼, 셋탑 박스, 게이밍 콘솔 등이 포함된다.
본 명세서에서 설명된 기술들은, 컴퓨팅 장치(502)의 이러한 다양한 구성들에 의해 지원될 수 있으며, 본 명세서에서 설명된 기술들의 특정 예시들로 한정되지 않는다. 이 기능은 또한 아래에서 설명되는 플랫폼(524)을 통한 "클라우드"(522)를 통해서와 같이, 분산된 시스템의 이용을 통해 전체적으로 또는 부분적으로 구현될 수 있다.
클라우드(522)는 리소스들(526)을 위한 플랫폼(524)을 포함하고/포함하거나 이를 나타낸다. 플랫폼(524)은 클라우드(522)의 하드웨어(예컨대, 서버들)와 소프트웨어 리소스들의 기저 기능을 추상화시킨다. 리소스들(526)은 컴퓨터 프로세싱이 컴퓨팅 장치(502)로부터 원격위치된 서버들 상에서 실행되고 있는 동안에 활용될 수 있는 애플리케이션들 및/또는 데이터를 포함할 수 있다. 리소스들(526)은 또한, 인터넷을 통해 및/또는 셀룰러 또는 Wi-Fi 네트워크와 같은 가입자 네트워크를 통해 제공되는 서비스들을 포함할 수 있다.
플랫폼(524)은 컴퓨팅 장치(502)를 다른 컴퓨팅 장치들에 연결시키기 위해 리소스들 및 기능들을 추상화시킬 수 있다. 플랫폼(524)은 또한 플랫폼(524)을 통해 구현되는 리소스들(526)에 대한 수요에 맞대응하기 위해 대응하는 스케일 레벨을 제공하도록 리소스들의 스케일링을 추상화하는 역할을 할 수 있다. 이에 따라, 상호연결된 장치 실시예에서, 여기서 설명된 기능의 구현은 시스템(500)에 걸쳐 분산될 수 있다. 예를 들어, 본 기능은 컴퓨팅 장치(502) 상에서 뿐만이 아니라 클라우드(522)의 기능을 추상화하는 플랫폼(524)을 통해서 부분적으로 구현될 수 있다.
본 명세서의 논의에서는, 다양한 상이한 실시예들이 설명된다. 본 명세서에 기술된 각각의 실시예는 그 자체로 또는 본 명세서에서 설명된 하나 이상의 다른 실시예들과 연결지어서 사용될 수 있다는 것을 알고 이해해야 한다. 본 명세서에서 논의된 기술들의 추가 양태들은 다음의 실시예들 중 하나 이상에 관한 것이다.
방법은, 주변 장치들의 클래스의 벤더를 식별하는 벤더 식별자, 주변 장치들의 유형들의 콜렉션을 식별하는 네임스페이스 식별자, 및 주변 장치들의 특정 유형 또는 주변 장치들의 특정 기능 중 적어도 하나를 식별하는 네임스페이스 엔트리 식별자 각각을 획득하는 단계; 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 기초하여 주변 장치 클래스 식별자를 생성하는 단계; 및 주변 장치가 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 대응하는 특성들을 갖는다고 결정한 것에 응답하여 주변 장치 클래스 식별자를 주변 장치에 대한 설정 레코드와 연관시키는 단계를 포함한다.
대안적으로, 또는 전술한 방법에 더하여, 다음 중 임의의 하나 또는 그 조합이 활용된다: 주변 장치 클래스 식별자를 생성하는 단계는 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합함으로써 주변 장치 클래스 식별자를 생성하는 단계를 포함하고, 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합하는 단계는 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 연결하는 단계를 포함하고, 주변 장치는 범용 직렬 버스 장치를 포함하고, 네임스페이스 식별자는 범용 직렬 버스 장치의 클래스 식별자를 포함하고, 네임스페이스 엔트리 식별자는 범용 직렬 버스 장치의 서브클래스 식별자를 포함하고, 주변 장치는 휴먼 인터페이스 장치를 포함하고, 네임스페이스 식별자는 휴먼 인터페이스 장치의 사용 페이지 식별자를 포함하고, 네임스페이스 엔트리 식별자는 휴먼 인터페이스 장치의 사용 식별자를 포함하고, 주변 장치 클래스 식별자를 주변 장치에 대한 설정 레코드와 연관시키는 단계는 주변 장치 클래스 식별자를 설정 레코드에 포함시키는 단계를 포함하고, 설정 레코드는 컴퓨팅 장치 상에 주변 장치를 설치 또는 사용하는 방법을 설명하는 정보 파일을 포함하며, 설정 레코드는 컴퓨팅 장치가 주변 장치와 통신할 수 있게 하기 위해 컴퓨팅 장치 상에 설치하기 위한 드라이버를 식별한다.
컴퓨팅 장치에서 구현되는 방법에 있어서, 주변 장치에 대하여, 주변 장치를 포함하는 주변 장치들의 클래스의 벤더를 식별하는 벤더 식별자, 주변 장치의 유형을 포함하는 주변 장치들의 유형들의 콜렉션을 식별하는 네임스페이스 식별자, 및 주변 장치의 특정 유형인 주변 장치들의 특정 유형 또는 주변 장치의 특정 기능인 주변 장치들의 특정 기능 중 적어도 하나를 식별하는 네임스페이스 엔트리 식별자 각각을 획득하는 단계; 주변 장치에 대해, 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 기초하여 주변 장치 클래스 식별자를 생성하는 단계; 및 주변 장치 클래스 식별자를 사용하여 주변 장치에 대한 설정 레코드를 식별하는 단계를 포함한다.
대안적으로, 또는 전술한 임의의 방법에 더하여, 다음 중 임의의 하나 또는 그 조합이 활용된다: 상기 방법은 설정 레코드를 사용하여 컴퓨팅 장치 상에서의 사용을 위해 주변 장치를 설정하는 단계를 더 포함하고, 설정 레코드를 사용하여 컴퓨팅 장치 상에서의 사용을 위해 주변 장치를 설정하는 단계는 컴퓨팅 장치 상에 설정 레코드에 의해 식별된 드라이버를 설치하는 단계를 포함하고, 주변 장치 클래스 식별자를 생성하는 단계는 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합함으로써 주변 장치 클래스 식별자를 생성하는 단계를 포함하고, 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합하는 단계는 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 연결하는 단계를 포함하고, 주변 장치는 범용 직렬 버스 장치를 포함하고, 네임스페이스 식별자는 범용 직렬 버스 장치의 클래스 식별자를 포함하고, 네임스페이스 엔트리 식별자는 범용 직렬 버스 장치의 서브클래스 식별자를 포함하고, 주변 장치는 휴먼 인터페이스 장치를 포함하고, 네임스페이스 식별자는 휴먼 인터페이스 장치의 사용 페이지 식별자를 포함하고, 네임스페이스 엔트리 식별자는 휴먼 인터페이스 장치의 사용 식별자를 포함하고, 설정 레코드는 컴퓨팅 장치 상에 주변 장치를 설치 또는 사용하는 방법을 설명하는 정보 파일을 포함한다.
컴퓨팅 장치에 있어서, 하나 이상의 프로세서들을 포함하는 프로세싱 시스템; 및 프로세싱 시스템에 의한 실행에 응답하여, 프로세싱 시스템으로 하여금 동작들을 수행하게 하는 복수의 명령어들이 저장되어 있는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함하고, 상기 동작들은, 주변 장치에 대하여, 주변 장치를 포함하는 주변 장치들의 클래스의 벤더를 식별하는 벤더 식별자, 주변 장치의 유형을 포함하는 주변 장치들의 유형들의 콜렉션을 식별하는 네임스페이스 식별자, 및 주변 장치의 특정 유형인 주변 장치들의 특정 유형 또는 주변 장치의 특정 기능인 주변 장치들의 특정 기능 중 적어도 하나를 식별하는 네임스페이스 엔트리 식별자 각각을 획득하는 동작; 주변 장치에 대해, 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 기초하여 주변 장치 클래스 식별자를 생성하는 동작; 주변 장치 클래스 식별자를 사용하여 주변 장치에 대한 설정 레코드를 식별하는 동작; 및 설정 레코드를 사용하여 컴퓨팅 장치 상에서의 사용을 위해 주변 장치를 설정하는 동작을 포함한다.
대안적으로, 또는 전술한 컴퓨팅 장치에 더하여, 다음 중 임의의 하나 또는 그 조합이 활용된다: 설정 레코드를 사용하여 컴퓨팅 장치 상에서의 사용을 위해 주변 장치를 설정하는 동작은 컴퓨팅 장치 상에 설정 레코드에 의해 식별된 드라이버를 설치하는 동작을 포함하고, 주변 장치는 휴먼 인터페이스 장치를 포함하고, 네임스페이스 식별자는 휴먼 인터페이스 장치의 사용 페이지 식별자를 포함하고, 네임스페이스 엔트리 식별자는 휴먼 인터페이스 장치의 사용 식별자를 포함하고, 주변 장치 클래스 식별자를 생성하는 동작은 벤더 식별자, 사용 페이지 식별자, 및 사용 식별자를 연결함으로써 주변 장치 클래스 식별자를 생성하는 동작을 포함하며, 주변 장치 클래스 식별자를 사용하여 설정 레코드를 식별하는 동작은 설정 레코드로서, 컴퓨팅 장치 상의 복수의 설정 레코드들 중 하나를 식별하는 동작을 포함하고, 복수의 설정 레코드들 중 하나는 주변 장치 클래스 식별자를 포함한다.
컴퓨팅 장치에 있어서, 하나 이상의 프로세서들을 포함하는 프로세싱 시스템; 및 프로세싱 시스템에 의한 실행에 응답하여, 프로세싱 시스템으로 하여금 동작들을 수행하게 하는 복수의 명령어들이 저장되어 있는 하나 이상의 컴퓨터 판독가능 저장 매체를 포함하고, 상기 동작들은, 주변 장치에 대하여, 주변 장치를 포함하는 주변 장치들의 클래스의 벤더를 식별하는 벤더 식별자, 주변 장치의 유형을 포함하는 주변 장치들의 유형들의 콜렉션을 식별하는 네임스페이스 식별자, 및 주변 장치의 특정 유형인 주변 장치들의 특정 유형 또는 주변 장치의 특정 기능인 주변 장치들의 특정 기능 중 적어도 하나를 식별하는 네임스페이스 엔트리 식별자 각각을 획득하는 동작; 주변 장치에 대해, 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 기초하여 주변 장치 클래스 식별자를 생성하는 동작; 및 주변 장치 클래스 식별자를 사용하여 주변 장치에 대한 설정 레코드를 식별하는 동작을 포함한다.
대안적으로, 또는 전술한 임의의 컴퓨팅 장치들에 더하여, 다음 중 임의의 하나 또는 그 조합이 활용된다: 상기 동작들은 설정 레코드를 사용하여 컴퓨팅 장치 상에서의 사용을 위해 주변 장치를 설정하는 동작을 더 포함하고, 설정 레코드를 사용하여 컴퓨팅 장치 상에서의 사용을 위해 주변 장치를 설정하는 동작은 컴퓨팅 장치 상에 설정 레코드에 의해 식별된 드라이버를 설치하는 동작을 포함하고, 주변 장치 클래스 식별자를 생성하는 동작은 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합함으로써 주변 장치 클래스 식별자를 생성하는 동작을 포함하고, 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합하는 동작은 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 연결하는 동작을 포함하고, 주변 장치는 범용 직렬 버스 장치를 포함하고, 네임스페이스 식별자는 범용 직렬 버스 장치의 클래스 식별자를 포함하고, 네임스페이스 엔트리 식별자는 범용 직렬 버스 장치의 서브클래스 식별자를 포함하고, 주변 장치는 휴먼 인터페이스 장치를 포함하고, 네임스페이스 식별자는 휴먼 인터페이스 장치의 사용 페이지 식별자를 포함하고, 네임스페이스 엔트리 식별자는 휴먼 인터페이스 장치의 사용 식별자를 포함하고, 설정 레코드는 컴퓨팅 장치 상에 주변 장치를 설치 또는 사용하는 방법을 설명하는 정보 파일을 포함한다.
시스템 또는 장치에 있어서, 주변 장치들의 클래스의 벤더를 식별하는 벤더 식별자, 주변 장치들의 유형들의 콜렉션을 식별하는 네임스페이스 식별자, 및 주변 장치들의 특정 유형 또는 주변 장치들의 특정 기능 중 적어도 하나를 식별하는 네임스페이스 엔트리 식별자 각각을 획득하기 위한 수단; 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 기초하여 주변 장치 클래스 식별자를 생성하기 위한 수단; 및 주변 장치가 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 대응하는 특성들을 갖는다고 결정한 것에 응답하여 주변 장치 클래스 식별자를 주변 장치에 대한 설정 레코드와 연관시키기 위한 수단을 포함한다.
대안적으로, 또는 전술한 임의의 시스템들 또는 장치들에 더하여, 다음 중 임의의 하나 또는 그 조합이 활용된다: 주변 장치 클래스 식별자를 생성하기 위한 수단은 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합함으로써 주변 장치 클래스 식별자를 생성하기 위한 수단을 포함하고, 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합하기 위한 수단은 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 연결하기 위한 수단을 포함하고, 주변 장치는 범용 직렬 버스 장치를 포함하고, 네임스페이스 식별자는 범용 직렬 버스 장치의 클래스 식별자를 포함하고, 네임스페이스 엔트리 식별자는 범용 직렬 버스 장치의 서브클래스 식별자를 포함하고, 주변 장치는 휴먼 인터페이스 장치를 포함하고, 네임스페이스 식별자는 휴먼 인터페이스 장치의 사용 페이지 식별자를 포함하고, 네임스페이스 엔트리 식별자는 휴먼 인터페이스 장치의 사용 식별자를 포함하고, 주변 장치 클래스 식별자를 주변 장치에 대한 설정 레코드와 연관시키기 위한 수단은 주변 장치 클래스 식별자를 설정 레코드에 포함시키기 위한 수단을 포함하고, 설정 레코드는 컴퓨팅 장치 상에 주변 장치를 설치 또는 사용하는 방법을 설명하는 정보 파일을 포함하며, 설정 레코드는 컴퓨팅 장치가 주변 장치와 통신할 수 있게 하기 위해 컴퓨팅 장치 상에 설치하기 위한 드라이버를 식별한다.
시스템 또는 장치에 있어서, 주변 장치에 대하여, 주변 장치를 포함하는 주변 장치들의 클래스의 벤더를 식별하는 벤더 식별자, 주변 장치의 유형을 포함하는 주변 장치들의 유형들의 콜렉션을 식별하는 네임스페이스 식별자, 및 주변 장치의 특정 유형인 주변 장치들의 특정 유형 또는 주변 장치의 특정 기능인 주변 장치들의 특정 기능 중 적어도 하나를 식별하는 네임스페이스 엔트리 식별자 각각을 획득하기 위한 수단; 주변 장치에 대해, 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자에 기초하여 주변 장치 클래스 식별자를 생성하기 위한 수단; 및 주변 장치 클래스 식별자를 사용하여 주변 장치에 대한 설정 레코드를 식별하기 위한 수단을 포함한다.
대안적으로, 또는 전술한 임의의 시스템들 또는 장치들에 더하여, 다음 중 임의의 하나 또는 그 조합이 활용된다: 설정 레코드를 사용하여 컴퓨팅 장치 상에서의 사용을 위해 주변 장치를 설정하기 위한 수단을 더 포함하고, 설정 레코드를 사용하여 컴퓨팅 장치 상에서의 사용을 위해 주변 장치를 설정하기 위한 수단은 컴퓨팅 장치 상에 설정 레코드에 의해 식별된 드라이버를 설치하기 위한 수단을 포함하고, 주변 장치 클래스 식별자를 생성하기 위한 수단은 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합함으로써 주변 장치 클래스 식별자를 생성하기 위한 수단을 포함하고, 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 결합하기 위한 수단은 벤더 식별자, 네임스페이스 식별자, 및 네임스페이스 엔트리 식별자를 연결하기 위한 수단을 포함하고, 주변 장치는 범용 직렬 버스 장치를 포함하고, 네임스페이스 식별자는 범용 직렬 버스 장치의 클래스 식별자를 포함하고, 네임스페이스 엔트리 식별자는 범용 직렬 버스 장치의 서브클래스 식별자를 포함하고, 주변 장치는 휴먼 인터페이스 장치를 포함하고, 네임스페이스 식별자는 휴먼 인터페이스 장치의 사용 페이지 식별자를 포함하고, 네임스페이스 엔트리 식별자는 휴먼 인터페이스 장치의 사용 식별자를 포함하고, 설정 레코드는 컴퓨팅 장치 상에 주변 장치를 설치 또는 사용하는 방법을 설명하는 정보 파일을 포함한다.
본 발명내용은 구조적 특징들 및/또는 방법론적 동작들에 특유적인 용어로 기술되었지만, 첨부된 청구항들에서 정의된 발명내용은 위에서 설명된 이러한 특정한 특징들 또는 동작들로 반드시 제한될 필요는 없다는 것을 이해하여야 한다. 이보다는, 위에서 설명된 특정한 특징들 및 동작들은 청구항들을 구현하는 예시 형태들로서 개시된 것이다.

Claims (14)

  1. 방법에 있어서,
    주변 장치들의 클래스(class)의 벤더(vendor)를 식별하는 벤더 식별자, 주변 장치들의 유형들의 콜렉션(collection)을 식별하는 네임스페이스 식별자, 및 주변 장치들의 특정 유형 또는 주변 장치들의 특정 기능 중 적어도 하나를 식별하는 네임스페이스 엔트리 식별자 각각을 획득하는 단계;
    상기 벤더 식별자, 상기 네임스페이스 식별자, 및 상기 네임스페이스 엔트리 식별자에 기초하여 주변 장치 클래스 식별자를 생성하는 단계; 및
    상기 주변 장치가 상기 벤더 식별자, 상기 네임스페이스 식별자, 및 상기 네임스페이스 엔트리 식별자에 대응하는 특성들을 갖는다고 결정한 것에 응답하여 상기 주변 장치 클래스 식별자를 주변 장치에 대한 설정 레코드와 연관시켜서, 상기 설정 레코드가 상기 주변 장치뿐만이 아니라 복수의 추가적인 주변 장치들과 연관되게 하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 주변 장치 클래스 식별자를 생성하는 단계는 상기 벤더 식별자, 상기 네임스페이스 식별자, 및 상기 네임스페이스 엔트리 식별자를 결합함으로써 상기 주변 장치 클래스 식별자를 생성하는 단계를 포함한 것인 방법.
  3. 제2항에 있어서,
    상기 벤더 식별자, 상기 네임스페이스 식별자, 및 상기 네임스페이스 엔트리 식별자를 결합하는 단계는 상기 벤더 식별자, 상기 네임스페이스 식별자, 및 상기 네임스페이스 엔트리 식별자를 연결하는(concatenating) 단계를 포함한 것인 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 주변 장치는 휴먼 인터페이스 장치를 포함하고, 상기 네임스페이스 식별자는 상기 휴먼 인터페이스 장치의 사용 페이지 식별자를 포함하고, 상기 네임스페이스 엔트리 식별자는 상기 휴먼 인터페이스 장치의 사용 식별자를 포함한 것인 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 주변 장치 클래스 식별자를 상기 주변 장치에 대한 상기 설정 레코드와 연관시키는 단계는 상기 주변 장치 클래스 식별자를 상기 설정 레코드에 포함시키는 단계를 포함한 것인 방법.
  6. 제5항에 있어서,
    상기 설정 레코드는 컴퓨팅 장치 상에 상기 주변 장치를 설치 또는 사용하는 방법을 설명하는 정보 파일을 포함한 것인 방법.
  7. 제5항 또는 제6항에 있어서,
    상기 설정 레코드는 컴퓨팅 장치가 상기 주변 장치와 통신할 수 있게 하기 위해 상기 컴퓨팅 장치 상에 설치하기 위한 드라이버를 식별하는 것인 방법.
  8. 컴퓨팅 장치에 있어서,
    하나 이상의 프로세서들을 포함하는 프로세싱 시스템; 및
    상기 프로세싱 시스템에 의한 실행에 응답하여, 상기 프로세싱 시스템으로 하여금 동작들을 수행하게 하는 복수의 명령어들이 저장되어 있는 하나 이상의 컴퓨터 판독가능 저장 매체
    를 포함하고,
    상기 동작들은,
    주변 장치에 대하여, 상기 주변 장치를 포함하는 주변 장치들의 클래스의 벤더를 식별하는 벤더 식별자, 상기 주변 장치의 유형을 포함하는 주변 장치들의 유형들의 콜렉션을 식별하는 네임스페이스 식별자, 및 상기 주변 장치의 특정 유형인 주변 장치들의 특정 유형 또는 상기 주변 장치의 특정 기능인 주변 장치들의 특정 기능 중 적어도 하나를 식별하는 네임스페이스 엔트리 식별자 각각을 획득하는 동작;
    상기 주변 장치에 대해, 상기 벤더 식별자, 상기 네임스페이스 식별자, 및 상기 네임스페이스 엔트리 식별자에 기초하여 주변 장치 클래스 식별자를 생성하는 동작;
    상기 주변 장치 클래스 식별자를 사용하여 상기 주변 장치에 대한 설정 레코드를 식별하는 동작; 및
    상기 컴퓨팅 장치가 상기 주변 장치와 통신하도록 구성하는 것을 비롯하여, 상기 설정 레코드를 사용하여, 상기 컴퓨팅 장치 상에서의 사용을 위해 상기 주변 장치를 설정하는 동작
    을 포함한 것인 컴퓨팅 장치.
  9. 제8항에 있어서,
    상기 주변 장치를 설정하는 동작은 상기 컴퓨팅 장치 상에, 상기 설정 레코드에 의해 식별된 드라이버를 설치하는 동작을 포함한 것인 컴퓨팅 장치.
  10. 제8항 또는 제9항에 있어서,
    상기 주변 장치 클래스 식별자를 생성하는 동작은 상기 벤더 식별자, 상기 네임스페이스 식별자, 및 상기 네임스페이스 엔트리 식별자를 결합함으로써 상기 주변 장치 클래스 식별자를 생성하는 동작을 포함한 것인 컴퓨팅 장치.
  11. 제10항에 있어서,
    상기 벤더 식별자, 상기 네임스페이스 식별자, 및 상기 네임스페이스 엔트리 식별자를 결합하는 동작은 상기 벤더 식별자, 상기 네임스페이스 식별자, 및 상기 네임스페이스 엔트리 식별자를 연결하는 동작을 포함한 것인 컴퓨팅 장치.
  12. 제10항 또는 제11항에 있어서,
    상기 주변 장치는 범용 직렬 버스 장치를 포함하고, 상기 네임스페이스 식별자는 상기 범용 직렬 버스 장치의 클래스 식별자를 포함하고, 상기 네임스페이스 엔트리 식별자는 상기 범용 직렬 버스 장치의 서브클래스 식별자를 포함한 것인 컴퓨팅 장치.
  13. 제10항 또는 제11항에 있어서,
    상기 주변 장치는 휴먼 인터페이스 장치를 포함하고, 상기 네임스페이스 식별자는 상기 휴먼 인터페이스 장치의 사용 페이지 식별자를 포함하고, 상기 네임스페이스 엔트리 식별자는 상기 휴먼 인터페이스 장치의 사용 식별자를 포함한 것인 컴퓨팅 장치.
  14. 제8항 내지 제13항 중 어느 한 항에 있어서,
    상기 설정 레코드는 컴퓨팅 장치 상에 상기 주변 장치를 설치 또는 사용하는 방법을 설명하는 정보 파일을 포함한 것인 컴퓨팅 장치.
KR1020177012395A 2014-10-10 2015-10-06 벤더 고유의 주변 장치 클래스 식별자들 KR102370570B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227006890A KR102449372B1 (ko) 2014-10-10 2015-10-06 벤더 고유의 주변 장치 클래스 식별자들

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/512,033 US10437742B2 (en) 2014-10-10 2014-10-10 Vendor-specific peripheral device class identifiers
US14/512,033 2014-10-10
PCT/US2015/054106 WO2016057439A1 (en) 2014-10-10 2015-10-06 Vendor-specific peripheral device class identifiers

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227006890A Division KR102449372B1 (ko) 2014-10-10 2015-10-06 벤더 고유의 주변 장치 클래스 식별자들

Publications (2)

Publication Number Publication Date
KR20170066586A true KR20170066586A (ko) 2017-06-14
KR102370570B1 KR102370570B1 (ko) 2022-03-04

Family

ID=54364675

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020177012395A KR102370570B1 (ko) 2014-10-10 2015-10-06 벤더 고유의 주변 장치 클래스 식별자들
KR1020227006890A KR102449372B1 (ko) 2014-10-10 2015-10-06 벤더 고유의 주변 장치 클래스 식별자들

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227006890A KR102449372B1 (ko) 2014-10-10 2015-10-06 벤더 고유의 주변 장치 클래스 식별자들

Country Status (5)

Country Link
US (2) US10437742B2 (ko)
EP (1) EP3204847A1 (ko)
KR (2) KR102370570B1 (ko)
CN (1) CN106796557B (ko)
WO (1) WO2016057439A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI670639B (zh) 2017-05-18 2019-09-01 美商愛特梅爾公司 用於識別使用者介面元件之技術以及使用其之系統及裝置
US11113188B2 (en) 2019-08-21 2021-09-07 Microsoft Technology Licensing, Llc Data preservation using memory aperture flush order
CN111611189A (zh) * 2020-05-28 2020-09-01 开元通信技术(厦门)有限公司 一种通信方法、装置及计算机存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140026451A (ko) * 2011-05-02 2014-03-05 마이크로소프트 코포레이션 장치 기능과 애플리케이션의 결합

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974474A (en) * 1996-03-15 1999-10-26 Novell, Inc. System for automatic hardware identification and configuration where instance values are unique within the computer system and resource requirement conflicts are resolved by modifying resource settings
US5890014A (en) * 1996-08-05 1999-03-30 Micronet Technology, Inc. System for transparently identifying and matching an input/output profile to optimal input/output device parameters
US5875350A (en) * 1997-04-21 1999-02-23 International Business Machines Corporation Compressed message exchange initiated by basic command accompanied by enhancement code
US7047534B2 (en) 2000-03-17 2006-05-16 Microsoft Corporation Simplified device drivers for hardware devices of a computer system
US7076536B2 (en) 2000-12-21 2006-07-11 Microsoft Corporation Method and system to access software pertinent to an electronic peripheral device at an address based on a peripheral device identifier
US20030078980A1 (en) * 2001-10-18 2003-04-24 Jay Carstens Electronic billboard for peripheral devices
US20040003135A1 (en) * 2002-06-27 2004-01-01 Moore Terrill M. Technique for driver installation
US20040006459A1 (en) * 2002-07-05 2004-01-08 Dehlinger Peter J. Text-searching system and method
US7069354B2 (en) * 2002-10-01 2006-06-27 Hewlett-Packard Development Company, L.P. Method and apparatus for identifying multiple paths to a SCSI device using a calculated unique identifier
US20040193860A1 (en) * 2003-03-24 2004-09-30 Rothman Michael A Methods and apparatus to export information from hardware devices
US8463951B1 (en) * 2003-03-27 2013-06-11 Nvidia Corporation Unified driver architecture device identifier strategy
US7232063B2 (en) * 2003-06-09 2007-06-19 Fujitsu Transaction Solutions Inc. System and method for monitoring and diagnosis of point of sale devices having intelligent hardware
DE102004018579A1 (de) * 2004-04-16 2005-11-03 Airbus Deutschland Gmbh Verkleidung für eine Struktur eines Flugzeugs
US7802022B2 (en) 2004-04-29 2010-09-21 Microsoft Corporation Generic USB drivers
TWI301606B (en) * 2004-08-09 2008-10-01 Chi Mei Optoelectronics Corp Device for generating gamma correction voltage and display ultilizing the same
US7480740B1 (en) * 2004-10-05 2009-01-20 Lsi Corporation Method and system for enforcing hardware/software compatibility constraints
US7716382B2 (en) 2005-01-11 2010-05-11 Microsoft Corporation Rich targeting criteria for selection of driver packages
US8073997B2 (en) * 2005-03-04 2011-12-06 Cambridge Silicon Radio Limited Software install automation
US7584347B2 (en) * 2005-06-10 2009-09-01 Dell Products L.P. System and method for identifying bootable device by generating a signature for each bootable device where the signature is independent of a location of the bootable device
US20070294430A1 (en) * 2006-06-20 2007-12-20 Microsoft Corporation Generating a device address persistent across different instantiations of an electronic device
US20080126628A1 (en) 2006-11-29 2008-05-29 Sony Ericsson Mobile Communications Ab Methods, devices and computer program products for automatically providing an alternate usb configuration of a usb compliant peripheral device for exposure to a host computer
US8132186B1 (en) 2007-03-23 2012-03-06 Symantec Corporation Automatic detection of hardware and device drivers during restore operations
US20080276012A1 (en) 2007-05-04 2008-11-06 Joe Mesa Driver Loading via a PnP Device
US20090319694A1 (en) 2008-06-20 2009-12-24 Microsoft Corporation Association of an input and output of a peripheral device in a computing system
JP5294892B2 (ja) 2009-01-14 2013-09-18 キヤノン株式会社 画像形成装置、装置、制御方法、及びプログラム
US8554957B1 (en) * 2010-02-24 2013-10-08 Open Invention Network, Llc Method for creation of device drivers and device objects for peripheral devices
US8825909B1 (en) 2011-02-28 2014-09-02 Vmware, Inc. Application directed dynamic driver substitution
US9009738B2 (en) 2011-03-17 2015-04-14 Microsoft Technology Licensing, Llc Device identification using device functions
US20130036431A1 (en) * 2011-08-02 2013-02-07 Microsoft Corporation Constraining Execution of Specified Device Drivers
US9224359B2 (en) * 2011-09-26 2015-12-29 Google Technology Holdings LLC In-band peripheral authentication
US9058184B2 (en) 2012-09-13 2015-06-16 Vayavya Labs Private Limited Run time generation and functionality validation of device drivers

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140026451A (ko) * 2011-05-02 2014-03-05 마이크로소프트 코포레이션 장치 기능과 애플리케이션의 결합

Also Published As

Publication number Publication date
US10684962B2 (en) 2020-06-16
US20160103771A1 (en) 2016-04-14
WO2016057439A1 (en) 2016-04-14
KR102449372B1 (ko) 2022-09-29
KR20220031764A (ko) 2022-03-11
EP3204847A1 (en) 2017-08-16
KR102370570B1 (ko) 2022-03-04
CN106796557B (zh) 2020-08-28
CN106796557A (zh) 2017-05-31
US10437742B2 (en) 2019-10-08
US20190220421A1 (en) 2019-07-18

Similar Documents

Publication Publication Date Title
US9110754B2 (en) Computing device update control
CN110199271B (zh) 用于现场可编程门阵列虚拟化的方法和设备
CN110178136B (zh) 现场可编程门阵列程序的签名验证的方法和设备
US11185783B2 (en) Controller emulation for cloud gaming
US9937415B1 (en) Virtual controller for touchscreen
US10684962B2 (en) Vendor-specific peripheral device class identifiers
WO2014204505A1 (en) Dependency based configuration package activation
CN110325992B (zh) 对初始计算机操作系统设置选项的远程管理
US11706305B2 (en) Methods and apparatus for user identification via community detection
US11283689B2 (en) Method for managing multiple servers and device employing method
US11010213B2 (en) Electronic device and method for providing event management service
US10521216B2 (en) Unified extensible firmware interface updates
US10229678B2 (en) Device-described natural language control
US11836503B2 (en) Electronic device for executing heterogeneous operating systems and method therefor
US20180349131A1 (en) Windows support of a pluggable ecosystem for universal windows application stores
EP3593252A1 (en) Managing guest partition access to physical devices
US20160070320A1 (en) Individual Device Reset and Recovery in a Computer
KR101554076B1 (ko) 타일드 디스플레이 시스템에서 다중 입력 장치에 기반한 사용자 인터랙션 제공 시스템 및 이를 이용하는 방법
WO2022187502A1 (en) Methods and apparatus to perform computer-based community detection in a network
KR20200020376A (ko) 음원 관리 플랫폼을 제공하기 위한 전자 장치 및 그 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant