KR20030051217A - 일반 그래픽 어댑터 - Google Patents

일반 그래픽 어댑터 Download PDF

Info

Publication number
KR20030051217A
KR20030051217A KR1020020070099A KR20020070099A KR20030051217A KR 20030051217 A KR20030051217 A KR 20030051217A KR 1020020070099 A KR1020020070099 A KR 1020020070099A KR 20020070099 A KR20020070099 A KR 20020070099A KR 20030051217 A KR20030051217 A KR 20030051217A
Authority
KR
South Korea
Prior art keywords
uga
firmware
hardware
ugafwgetchilddevice
plorequest
Prior art date
Application number
KR1020020070099A
Other languages
English (en)
Other versions
KR100973401B1 (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 KR20030051217A publication Critical patent/KR20030051217A/ko
Application granted granted Critical
Publication of KR100973401B1 publication Critical patent/KR100973401B1/ko

Links

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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/006Details of the interface to the display terminal
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/04Exchange of auxiliary data, i.e. other than image data, between monitor and graphics controller
    • G09G2370/042Exchange of auxiliary data, i.e. other than image data, between monitor and graphics controller for monitor identification
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/04Exchange of auxiliary data, i.e. other than image data, between monitor and graphics controller
    • G09G2370/045Exchange of auxiliary data, i.e. other than image data, between monitor and graphics controller using multiple communication channels, e.g. parallel and serial
    • G09G2370/047Exchange of auxiliary data, i.e. other than image data, between monitor and graphics controller using multiple communication channels, e.g. parallel and serial using display data channel standard [DDC] communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Digital Computer Display Output (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 펌웨어(firmware)를 통해 표준 방식으로 저레벨 그래픽 하드웨어를 요약하여 발췌하는 하드웨어에 독립적인 설계의 UGA(Universal Graphics Adapter)에 관련된다. UGA는 펌웨어 표준으로, VGA를 포함하여 기존 또는 계획되는 하드웨어를 포함하도록 의도된다. UGA는 프로그램하는데 실-모드(real-mode) 어셈블리 언어, 직접적인 하드웨어 레지스터, 또는 프레임 버퍼 억세스를 요구하지 않으므로, 종래의 시스템 보다 이점을 제공한다. UGA는 기본적인 드로잉(drawing) 동작, 연속적인 디스플레이 모드, 및 전력 관리를 지원한다. 펌웨어-기반의 표준으로, UGA는 개발되는 하드웨어 특성과 새로운 하드웨어 특성을 모두 지원하도록 시스템을 업데이트하는 것을 용이하게 한다.

Description

일반 그래픽 어댑터{UNIVERSAL GRAPHICS ADAPTER}
본 출원은 2001년 12월 13일 일반 그래픽 어댑터(UNIVERSAL GRAPHICS ADAPTER) 명으로 출원된 미국 가출원 일련 No. 60/341,140의 우선권을 주장하고,그 전체 내용은 여기서 참고로 포함된다.
본 발명은 일반적으로 비디오 그래픽 디스플레이에 관한 것으로, 보다 특정하게 비디오 하드웨어를 제거하고 운영 시스템에 인터페이스를 밝히는 펌웨어(firmware) 서비스를 통해 제작된 하드웨어에 독립적인 비디오 디스플레이에 관한 것이다.
비디오 그래픽 어레이(video graphics array, VGA)는 개인용 컴퓨터(PC)를 위한 그래픽 디스플레이 시스템이다. VGA는 사실상 PC의 표준 중 하나가 되어 텍스트 모드에서 720x400 픽셀(pixel)의 해상도를 제공하고 그래픽 모드에서 해상도를 선택하게 한다(예를 들면, 640x480 16 칼라, 320x200 256 칼라). VGA는 디지털 신호가 아니라 아날로그 신호를 사용하는 하드웨어 특정 표준이다. 1987 VGA 데뷔 이래로 다른 표준이 등장하였지만, VGA가 최저의 공통 분모 표준을 유지하므로 실질적으로 모든 PC가 VGA를 지원한다. 그러나, VGA는 결함을 갖는다.
예를 들어, VGA는 하드웨어에 특정되므로, VGA에 대한 프로그램이 하드웨어, 소프트웨어, 및 어셈블리 및/또는 기계어의 인지를 요구하여 프로그래밍을 어렵게 만든다. 더욱이, PC가 계속하여 발전되면서 폭넓은 네트워크의 어셈블러 및/또는 기계 코드 BIOS(Basic Input Output System) 코드가 진보 내용을 지원하도록 요구하므로, VGA의 본래 요구조건 중 일부가 지원되기 더 어려워진다. 1980년도의 VGA 표준은 Int 10 서비스의 사용, 비선형 프레임 버퍼, 제한된 범위의 디스플레이 모드, 및 실-모드(real-mode) 어셈블리 모드를 사용한 직접적인 레지스터 어드레싱과 같이, 오늘날 시대에 뒤진 하드웨어 및 소프트웨어를 요구한다. 또 다른 제한으로는 BIOS 코드가 실-모드 x86 환경에서 실행되는 것과 비디오 BIOS 영상이 64K의 절대 최대치로 제한되는 것이 있다. 부가하여, VGA는 재배치가능하지 않은 메모리 및 비직관적이고 비선형적인 프레임 버퍼 배치를 갖는 오래된 I/O(Input/Output) 및 메모리 사용과 연관된다. 또한, VGA는 제한된 모드를 지원한다(예를 들면, 80x25x70Hz 문자 및 640x480x16-칼라 그래픽). VGA는 또한 이동 컴퓨팅 환경에서 점차 중요해지는 전력 관리를 지원하지 않는다. 또한, 기존 운영 시스템 하에서는 다중-모니터 구성에 VGA 어댑터를 지원하는 펌웨어가 없다.
실질적으로, 모든 디스플레이 디바이스는 노출되는 고성능 디바이스 기능에 부가하여 VGA를 지원한다. 많은 PC는 시스템이 부트되기 이전에 VGA 디바이스가 기계 내에 있도록 요구하고, BIOS POST(Power-On Self Test) 메시지는 디스플레이에 VGA 디바이스를 요구한다. 실질적인 일반 표준에 부가하여, VGA는 또한 PC 플랫폼이 발전됨에 따라 현저하게 변화되지 않는 기능을 갖는 구식 표준이다.
다음은 본 발명의 특성을 기본적으로 이해하기 위한 본 발명의 간략한 요약을 제공한다. 본 요약은 본 발명의 폭넓은 개요가 아니다. 본 발명의 요점 또는 중요한 내용을 식별하거나 본 발명의 범위를 묘사하도록 의도되지 않는다. 이는 나중에 주어질 보다 상세한 설명의 서론으로서 간략한 형태로 본 발명의 개념을 제공한다.
일반 그래픽 어댑터(Universal Graphics Adapter, UGA)는 펌웨어를 통해 표준적인 방식으로 저레벨 그래픽 하드웨어를 요약하는 하드웨어에 독립적인 설계이다. UGA는 VGA를 포함하여 기존의 하드웨어나 계획된 하드웨어를 포함하도록 의도되는 펌웨어 표준이다. UGA는 실-모드 어셈블리 언어의 사용, 직접적인 하드웨어 레지스터, 또는 프로그램에 대한 프레임 버퍼 억세스를 요구하지 않으므로, 종래 시스템과 비교해 이점을 제공한다. UGA는 기본적인 드로잉 동작, 연속 디스플레이 모드, 및 전력 관리를 지원한다. 펌웨어 기반의 표준으로, UGA는 시스템의 업데이트를 용이하게 하여 점진적으로 변하는 하드웨어 특성과 새로운 하드웨어 특성을 모두 지원한다.
UGA는 기본적인 그래픽 동작을 실행하기 더 어렵게 만들지 않으면서 VGA의 단점을 완화시킨다. 예를 들어, 하드웨어 실시를 포함하는데 펌웨어를 사용하면, 하드웨어 변화를 요구하지 않으면서 다양한 디스플레이 어댑터가 UGA 특성과 일치하는 것을 용이하게 한다. UGA 펌웨어 인터페이스 특성의 한 예는 여기서 본 특허 출원 명세서의 일부인 부록 A로 이에 부착된다. UGA는 디바이스가 예를 들어 옵션 ROM(Read Only Memory)에 UGA 및 VGA BIOS를 모두 포함하는 다중 BIOS를 지원하는 것을 용이하게 한다. VGA 레지스터 세트는 변화되지 않으므로, 하이브리드(hybrid) 디스플레이 어댑터가 계속하여 기존 기계에서 작동하면서 UGA-인에이블 운영 시스템과도 작동된다. 이러한 관점에서, UGA는 디스플레이 어댑터의 차일드(child) 디바이스의 표준화된 열거 및 조작을 제공함으로서 플러그 및 플레이(PnP)와 ACPI(PCI 버스 이면)의 개념을 확장시킨다.
UGA 특성은, 제한되지 않지만: 하드웨어의 상세 내용이 펌웨어로 둘러싸이는 것; 노출 디바이스 기능이 펌웨어로 실시되는 것; 본래 모드 지원이 펌웨어로 노출되는 것; 구식 I/O 또는 메모리에 억세스를 요구하지 않는 것; PCI(Peripheral Component Interconnect, 로컬 버스 표준) 공간에만 BAR(Base Address Register)를 사용하는 것; 실-모드 실시 환경을 요구하지 않는 것; BIOS의 크기를 64K로 제한하지 않는 것; BIOS에 새로운 기능을 부가하는 것을 용이하게 하는 것; 크로스-플랫폼(cross-platform) 지원(예를 들면, x86, Itanium); 개선된 전체적인 그래픽 하드웨어 및 드라이버의 질; 및 더 높은 레벨의 언어(예를 들면, C vs. 어셈블러/기계어)로 BIOS를 코드화할 수 있는 것을 포함한다.
UGA는 다른 방법으로 다른 등급의 사용자에게 이점을 제공한다. 예를 들어, 실질적으로 모든 사용자가 개선된 프리-부트(pre-boot) 및 포스트-부트(post-boot) 경험에서 이점을 얻는다. 사용자가 먼저 컴퓨터의 스위치를 on 상태로 할 때, POST(power-on self-test) 동안 또는/또한 그 이전에 OEM(Other Equipment Manufacturer)이 그래픽을 배치할 수 있는 고해상도의 그래픽 디스플레이가 제공된다. 이는 예를 들어, 운영 시스템과 똑같은 계열에 따른 시스템을 구성하거나 수리하는 도구를 포함할 수 있다. 다중 모니터 지원의 이점을 사용하길 원하는 경험있는 사용자는 디스플레이 어댑터 중 하나에서 VGA BIOS를 디스플레이시키는 방법을 이해하도록 요구되지 않는다. 고성능 디스플레이 드라이버가 부족한 이동 PC에서 먼저 배포된 운영 시스템으로부터 업데이트된 사용자는 종래 VGA 드라이버와 다르게 전력-관리 드라이버 지원에서 이득을 얻을 수 있다.
UGA는 다른 이점을 갖는다. 예를 들어, BIOS는 어셈블러 보다 더 높은 레벨의 언어(예를 들면, C, C#)로 개발될 수 있다. 그래서, 어셈블러 기술 보다 고레벨 언어 프로그래밍 기술이 더 폭넓게 이용가능하므로, BIOS가 더 쉽게 유지된다. 더욱이, BIOS 크기가 64K로 제한되지 않으므로, 새로운 특성의 지원이 이용가능해지고 요구될 때 추가될 수 있다. 디스플레이 어댑터는 플랫폼에 무관하여 Int 10 지원이나 x86 어셈블러에 대한 하드웨어 제한으로부터 자유로우므로, 새로운 디스플레이 하드웨어의 적응 및 전개를 용이하게 한다. 새로운 디스플레이 어댑터는 새로운 디스플레이 어댑터에서 VGA 레지스터를 지원하도록 요구되지 않으므로, 어댑터 설계의 혁신을 용이하게 한다. 디스플레이 하드웨어는 펌웨어를 통해 UGA를 지원하도록 만들어지므로, 다이 크기를 감소시킬 수 있다. 더욱이, UGA 드라이버가 운영 시스템의 일부로 제공될 수 있으므로, 독립적인 하드웨어 공급자가 UGA 디바이스 드라이버를 공급하도록 요구되지 않는다. 이와 같이, 어댑터는 보다 적시에 시장으로 출고되어야 한다.
운영 시스템이 UGA 드라이버를 제공할 수 있다. UGA HAL(Hardware Abstraction Layer)은 본래 UGA 드라이버 지원과 VGA 드라이버 모두를 포함하므로, VGA와 UGA 디바이스 사이의 전이를 지원하는 것을 용이하게 한다. 본 발명의 한 실시예에서, 지원 종류가 모두 이용가능하면, 시스템은 UGA에 디폴드(default)로 구성될 수 있다.
상기의 목적 및 그와 관련된 목적을 이루기 위해, 여기서는 다음의 설명 및 첨부 도면과 연관되어 본 발명의 특정한 특성이 설명된다. 그러나, 이들 특성은 본 발명의 원리가 사용될 수 있는 다양한 방법 중 몇 가지만을 나타내고, 본 발명은 이러한 특성 및 그와 동일한 내용을 모두 포함하도록 의도된다. 본 발명의 다른 이점 및 새로운 특성은 도면과 연관된 본 발명의 상세한 설명으로부터 명백해진다.
도 1은 레지스터 인터페이스와 상호작용하는 종래의 VGA 특정 BIOS 및 노출된 인터페이스를 통해 UGA 하드웨어를 발췌하는 UGA 펌웨어(firmware)를 갖춘 BIOS를 비교하는 도면.
도 2는 본 발명의 한 특성에 따라 UGA 인에이블 운영 시스템의 샘플 설계를 도시하는 도면.
도 3은 본 발명의 한 특성에 따라 UGA 인에이블 디스플레이 어댑터에 대한 샘플 UGA 디바이스 트리(tree)를 도시하는 도면.
도 4는 본 발명의 한 특성에 따라 UGA I/O 서비스 요구 급송(dispatch)을 설명하는 흐름도.
도 5는 본 발명의 한 특성에 따라 UGA 출력 범위 협의를 설명하는 흐름도.
도 6은 본 발명의 한 특성에 따라 UGA 디바이스 열거를 설명하는 흐름도.
도 7은 본 발명의 한 특성에 따라 UGA 펌웨어와 상호작용할 수 있는 차일드(child) 디바이스를 갖춘 디스플레이 디바이스를 도시하는 도면.
도 8은 본 발명의 한 특성에 따라 본 발명이 동작될 수 있는 컴퓨팅 환경의 한 예에 대한 블록도.
도 9는 본 발명의 한 특성에 따라 UGA 인에이블 디스플레이 어댑터의 샘플옵션 ROM 배치를 도시하는 도면.
부록 A는 UGA 펌웨어 인터페이스의 한 예로, 본 특허 출원 명세서의 일부로 간주된다.
부록 B는 EFI-UGA 바인딩 프로토콜(Extensible Firmware Interface Universal Graphics Adaptor Binding Protocol)의 한 예로, 본 특허 출원 명세서의 일부로 간주된다.
<도면의 주요 부분에 대한 부호의 설명>
210: UGA 가상 기계
220: UGA 하드웨어
230: VGA 하드웨어
240: VGA I/O 레지스터 인터페이스
260: 하드웨어 발췌층
280: 응용 프로그램 인터페이스
320: 그래픽 제어기
340, 350: 출력 제어기
본 발명은 이제 똑같은 참고 번호가 동일한 소자를 칭하는데 사용되는 도면을 참고로 설명된다. 다음 내용에서는 설명을 위해 본 발명의 철저한 이해를 제공하도록 다양한 상세 내용이 설명된다. 그러나, 종래 기술에 숙련된 자에게는 본 발명이 이들 상세 내용 없이 실시될 수 있음이 명백하다. 다른 예에서는 공지된 구조 및 디바이스가 본 발명의 설명을 용이하게 하도록 블록도 형태로 도시된다.
본 명세서에서 사용되는 "컴퓨터 구성성분"이란 말은 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어와 같은 컴퓨터-관련 엔터티를 칭하도록 의도된다. 예를 들어, 컴퓨터 구성성분은, 제한되지 않지만, 프로세서에서 운행 중인 처리 과정, 프로세서, 객체(object), 실행가능한 것, 실행 트레드(thread of execution), 프로그램, 및 컴퓨터가 될 수 있다. 설명을 통해, 서버에서 운행 중인 응용 및 서버는 컴퓨터 구성성분이 될 수 있다. 하나 이상의 컴퓨터 구성성분이 처리 과정 및/또는 실행 트레드 내에 위치할 수 있고, 컴퓨터 구성성분은 2개 이상의 컴퓨터 사이에 분포되거나 한 컴퓨터에 위치할 수 있다.
UGA는 VGA를 계승하는 차세대 그래픽 어댑터이다. UGA는 그래픽 하드웨어를 발췌하고 펌웨어 인터페이스의 다른 측에 있는 엔터티 (예를 들면, 운영 시스템과 그래픽 디스플레이 디바이스) 사이의 플랫폼에 독립적인 상호작용을 용이하게 하는 UGA 펌웨어 인터페이스를 밝힌다. UGA 펌웨어 인터페이스는 UGA 펌웨어로부터 밝혀진다. 본 발명의 한 예에서는 시스템 펌웨어와 UGA HAL 드라이버가 UGA 하드웨어와의 기본적인 동작을 실행하는데 인터페이스를 사용한다. 이 층은 구식 비디오 BIOS를 대신한다. 본 예에서, UGA 펌웨어는 외부 세계에 단일 입구를 제공한다(예를 들면, 시스템 펌웨어, 운영 시스템 런타임). 한 예로 제공된 입구는 UgaFwDispatchService로, 이는 UGA 디바이스 종류 및 I/O 요구 종류를 근거로 UGA 펌웨어 내에서 적절한 처리기에 UGA I/O 요구를 급송(dispatch)하는 것을 담당한다. 그러므로, 한 예의 UGA 명세서는 입구를 통한 운영 시스템과의 상호작용을 용이하게 하도록 5가지의 UGA 디바이스 종류(UgaDtParentBus, UgaDtGraphicsController, UgaDtOutputController, UgaDtOutputPort, UgaDtOther)를 정의한다.
UGA는 고해상도, 고칼라, 다중 모니터 지원, GDI(Graphics Device Interface) 가속, 및 LFB(Linear Frame Buffer) 배치 독립성을 제공한다. UGA는 IHV(Independent Hardware Vendors)가 UGA 펌웨어를 통해 운영 시스템과의 상호작용을 용이하게 하도록 UGA 하드웨어를 실시할 수 있는 인터페이스를 정의한다. 그래서, 운영 시스템으로, 펌웨어 및/또는 하드웨어는 이러한 엔터티 사이의 인터페이스가 유지되는 한 전개되고, 이러한 변화는 관련된 엔터티에 이러한 변화가 충격을 주는 것을 최소화하도록 다른 엔터티에 독립적일 수 있어, 충격이 더 커질 수 있는 종래 시스템 보다 이점을 제공한다. 예를 들어, 그래픽 디스플레이 하드웨어 구성성분은 업데이트되어 더 높은 해상도를 제공할 수 있다. 하드웨어 구성성분이 UGA 펌웨어에 인터페이스를 유지하는 한, UGA 펌웨어나 운영 시스템은 그래픽 디스플레이 하드웨어 변화로 인해 변화되도록 요구되지 않는다. 이는 하드웨어 구성성분 업그레이드가 운영 시스템을 임시로 접속하도록 요구할 수 있는 종래 시스템 보다 이점을 제공한다.
UGA는 디스플레이 제어기 펌웨어에 대한 I/O 서비스 요구의 급속을 용이하게 하고, 출력 제어기 및 디바이스에 대한 디스플레이 기능 범위의 보고, 협의, 및 구성을 용이하게 하고, 디스플레이 제어기 디바이스 및 그들의 차일드(child)의 열거를 용이하게 하고, 또한 디스플레이 제어기 디바이스 및 그들의 차일드의 전력 관리를 용이하게 한다. 이러한 서비스는 플랫폼에 독립적인 그래픽 디스플레이 화면의 제작을 용이하게 하여 종래 시스템 보다 이점을 제공한다.
UGA는 시스템 BIOS 및/또는 운영 시스템 가상 기계 p-코드 및/또는 바이트 코드에 의해 해석되도록 컴파일될 수 있는 고레벨 언어(예를 들면, C, C#)로 기록될 수 있는 펌웨어에 대한 펌웨어 인터페이스 조건을 정의한다. UGA 펌웨어는 집적된 환경으로 시스템 및/또는 디스플레이 디바이스에 위치할 수 있다.
이제는 도 1을 참고로, 본 발명을 사용함으로서, 운영 시스템(100)은 BIOS에 저장된 UGA 펌웨어(120)를 통해 발췌된 UGA 하드웨어(110)와 상호작용할 수 있다. 이러한 펌웨어는 보드상의 실행 환경으로 실행되는 더 높은 레벨의 언어(예를 들면, C, C#)로부터 컴파일된 바이트 코드로 해석될 수 있다. 펌웨어(120)는 운영 시스템(100)과 하드웨어(110) 사이의 하드웨어에 특정되지 않은 상호작용을 용이하게 하는 인터페이스를 실시할 수 있다. 이러한 인터페이스는 device_on, device_off, device_accept_data, device_provide_data, 및device_report_children과 같은 발췌내용을 포함할 수 있다. 한 예의 인터페이스는 부록 A에서 설명된다. 이러한 인터페이스는 하드웨어 인터페이스에 대한 운영 시스템의 탄력적인 접근을 용이하게 하고, 여기서 하드웨어가 특정한 작업을 실행하는 방법의 상세 내용은 하드웨어에 제한된다. 이는 표준적인 VGA 레지스터 인터페이스를 실시하는 VGA 특정, 하드웨어 특정 BIOS(150)를 통해 VGA 하드웨어(140)와 운영 시스템(130)이 상호작용하는 종래의 상황과 대조적이다. 종래에는 BIOS(150)가 더 낮은 레벨의 언어(예를 들면, 어셈블러, 기계어)로 코드화된다.
이제는 도 2를 참고로 UGA 인터페이스를 통해 UGA 하드웨어(220)에 대한 억세스를 용이하게 하는 UGA 가상 기계(210)를 포함하는 시스템(200)이 설명된다. UGA 가상 기계(210)는 펌웨어로 실시될 수 있고 UGA 하드웨어(220)와 연관된 칩에서 BIOS에 저장된다. 시스템(200)은 VGA 하드웨어(230)와의 구식 호환성이 유지되는 컴퓨터 구성성분의 한가지 구성을 설명한다. 종래에는 VGA 하드웨어(230)에 대한 억세스가 Int 10, VGA I/O 레지스터 인터페이스(240)를 통해 이루어졌다.
시스템(200)에서는 부트 시간 응용(242) 및/또는 런-타임 응용(250)이 하드웨어 발췌층(260)(HAL) 및 UGA 핵심 서비스(270)의 상호작용을 통해 UGA 하드웨어(220)만을 갖는 것으로 시스템(200)을 간주할 수 있다. HAL(260)은 비디오 디스플레이 하드웨어의 상세 내용을 인터페이스로 발췌한다. 부트 시간 응용(242)은 POST 동안 메시지를 디스플레이하는 것과 같은 작용을 실행하도록 또한/또는 선두(예를 들면, 상표 화면)에 파워를 디스플레이하도록 부트 시간 디스플레이 API(Application Programming Interface)(280)를 호출한다. 런 타임응용(250)은 디스플레이 기능(예를 들면, 디스플레이 텍스트, 디스플레이 그래픽)을 실행하도록 런 타임 디스플레이 API(290)를 호출한다. 비록 부트 시간 응용(242) 및/또는 런 타임 응용(250)이 UGA 하드웨어(220)와 상호작용을 원하더라도, 시스템(200)은 VGA 하드웨어(230)만을 가질 수 있다. 그래서, HAL(260)은 종래 레지스터 인터페이스(240)를 통해 VGA 하드웨어(230)와 작업하도록 발췌된 방법을 실시할 수 있다. 그러나, UGA 하드웨어가(220)가 주어지면, HAL(260)은 UGA 가상 기계(210)를 통해 작업하여 UGA 하드웨어(220)와 상호작용하도록 발췌된 방법을 실시할 수 있다.
이제는 도 3을 참고로 UGA와 연관된 컴퓨터 구성성분의 계층구조(300)가 설명된다. 계층구조(300)는 디바이스를 통해 부착된 디바이스와의 통신을 용이하게 하는 부록 A로 첨부된 UGA 펌웨어 명세서의 예에 정의된 5개의 샘플 디바이스를 포함한다. 계층구조(300)의 상단에는 패어런트(parent) 디바이스(310)(예를 들면, UgaDtParentBus)가 있다. 운영 시스템은 UGA 펌웨어 인터페이스를 통해 물리적 및/또는 논리적 디바이스인 패어런트 디바이스(310)와 상호작용할 수 있다. 디바이스와 통신하는데는 2가지 정보, 즉 디바이스 식별자(예를 들면, 통신하길 원하는 디바이스) 및 요구 종류(예를 들면, 디바이스가 실행하길 원하는 것)가 사용된다. 본 발명의 한 예에서는 사용자가 디바이스에 실행되길 원하는 것을 서비스라 칭한다. 이러한 서비스는, 제한되지 않지만, 전력 관리(예를 들면, 켜기, 끄기, 저전력 상태로 가기, 고전력 상태로 가기), 디바이스 설명(예를 들면 EDID(extended display identification data standard) 데이터를 제공하는 것), 및 데이터 통신(예를 들면, 데이터 수용, 데이터 제공)을 포함할 수 있다.
계층구조(300)는 또한 그래픽 제어기(예를 들면, UgaDtGraphicsController)를 포함한다. 이러한 제어기는 운영 시스템에 대한 기능(예를 들면, 서비스)을 실행할 수 있고, 또한 다른 차일드 컴퓨터 구성성분과 상호작용할 수 있다. 예를 들면, 하나 이상의 다른 디바이스(330)(예를 들면, UgaDtOther)가 논리적으로 또한/또는 물리적으로 제어기 디바이스(320)에 연결될 수 있다. 운영 시스템은 패어런트 디바이스(310)를 통해 그래픽 제어기(320) 및 다른 디바이스(330)와 통신할 수 있다. 유사하게, 운영 시스템은 패어런트 디바이스(310)를 통해 그래픽 제어기(320) 및 출력 제어기(340 또는 350)(예를 들면, UgaDtOutputController)와 통신할 수 있다. 하나의 다른 디바이스(330)와 2개의 출력 제어기(340, 350)가 도시되지만, 이러한 디바이스의 다양한 조합이 본 발명에 사용될 수 있음이 명백하다. 출력 제어기(340)는 실제 출력 디바이스(예를 들면, 모니터와 연관된 출력 포트(342))와 연결될 수 있고, 출력 제어기(350)는 또 다른 실제 출력 디바이스(예를 들면, 텔레비전과 연관된 출력 포트(344))와 연결될 수 있다.
이와 같이, 부록 A에 첨부된 UGA 펌웨어 명세서에 정의된 한 예의 계층구조(300)는 운영 시스템이 실제 출력 디바이스 및 운영 시스템과 실제 디바이스 사이에 위치하는 물리적 및/또는 논리적 디바이스와 통신하는 것을 용이하게 한다. 본 발명의 한 예에서는 계층구조(300)에서 식별되는 하나 이상의 구성성분이 비디오 그래픽 어댑터 카드에 위치할 수 있다. 도시된 예에서, 비디오 그래픽 카드는 텔레비전 출력을 위한 하나와 컴퓨터 모니터 출력을 위한 하나의 두 출력 포트를 가질 수 있다. 이러한 출력은 출력 디바이스의 기능 식별 및 디바이스에 대한 전력 관리와 같은 작용을 실행하는 것을 용이하게 하도록 출력 제어기에 연결될 수 있다. 유사하게, 출력 제어기는 그래픽 제어기에 동작되게 연결될 수 있고, 이는 차례로 비디오 그래픽 어댑터 카드를 호스트 시스템에 연결시키는 것을 용이하게 하는 버스에 동작되게 연결된다. 종래에는 가능하면 VGA 레지스터 인터페이스를 통해 비디오 그래픽 카드에서 하나 이상의 물리적 및/또는 논리적 엔터티에 개별적으로 억세스하였다. 그래서, UGA 펌웨어 인터페이스는 하나의 물리적 디바이스에 위치하는 다수의 물리적 및/또는 논리적 디바이스를 억세스하는 것에 대해 종래 시스템 보다 이점을 제공한다.
상기에 설명되고 도시된 모범적인 시스템에서, 본 발명에 따라 실시되는 방법은 도 4 내지 도 6의 흐름도를 참고로 더 잘 이해된다. 설명을 간략하게 하기 위해 설명되는 방법은 일련의 블록으로 도시되어 설명되지만, 본 발명은 본 발명에 따라 일부 블록이 다른 순서로 또한/또는 여기서 설명되고 도시되는 다른 블록과 동시에 실행될 수 있으므로 블록 순서에 의해 제한되지 않는 것으로 이해되어야 한다. 또한, 본 발명에 따른 방법을 실시하기 위해 전혀 설명되지 않은 블록이 요구될 수 있다. 더욱이, 추가 및/또는 다른 방법은 여기서 설명되지 않은 추가 블록을 사용할 수 있다. 본 발명의 한 예에서, 이러한 방법은 컴퓨터로 실행가능한 지시 및/또는 동작으로 실시될 수 있고, 지시 및/또는 동작은, 제한되지 않지만, ASIC, CD, DVD, RAM, ROM, PROM, EEPROM, 디스크, 반송파, 및 메모리 스틱을 포함하는 컴퓨터 판독가능 매체에 저장될 수 있다.
이제는 도 4를 참고로 I/O 서비스 요구 급송에 대한 방법(400)이 흐름도로 도시된다. (410)에서, UGA 클라이언트는 디바이스 신원, 입력 버퍼의 위치와 크기, 출력 버퍼의 위치와 크기, 및 요구 종류와 같은 정보 설립을 포함하는 문맥을 설립한다. (420)에서는 UGA 펌웨어 인터페이스의 층들을 통해 발췌된 서비스의 급송을 시작하는 방법(예를 들면, UgaHalDispatchService(Context, IoRequest))이 호출된다. (430)에서는 (410)에서 설립된 문맥이 유효(valid)한가 여부에 대해 결정이 이루어지고, (440)에서는 요구된 I/O 작용이 유효한가에 대해 결정이 이루어진다. (430)이나 (440)에서 결정이 NO이면, 처리 과정은 (450)으로 진행되어 상태 코드가 발생된다. 그러나, (430, 440)의 결정이 YES이면, 처리 과정은 (460)으로 진행된다.
(460)에서는 요구된 발췌 UGA 서비스에 이용가능한 UGA 하드웨어가 있는가 여부를 결정한다. (460)의 결정이 NO이면, UGA 하드웨어가 없으므로 발췌된 UGA 호출이 에뮬레이션(emulation)에 의해 처리되어 이용가능한 VGA 하드웨어와 상호작용할 수 있다. 그러나, (460)의 결정이 YES이면, (470)에서는 서비스가 UGA 펌웨어 인터페이스에서 다음으로 낮은 레벨로 급송된다. 유사하게, (480)에서는 (490) 내지 (499)에서 실제 서비스 루틴이 시동될 때까지 서비스가 다음으로 낮은 레벨로 급송된다. 서비스 루틴(490 및 492 내지 494)은 제1 UGA 서비스에 대한 서비스 세트를 나타낸다. 서비스 루틴(496 및 498 내지 499)은 제2 UGA 서비스에 대한 서비스 세트를 나타낸다. UGA 디바이스는 발췌된 UGA 서비스 세트를 실시한다. 그래서, UGA 디바이스는 UGA 클라이언트에 대한 인터페이스를 실시하는 발췌 하드웨어와 같이 동작할 수 있으므로, 하드웨어 통신 및 제어에 대한 운영 시스템을 간략화시킨다. 이러한 발췌는 운영 시스템이 VGA 하드웨어와의 통신을 위해 레지스터 인터페이스를 인지하고 실시하여야 하는 종래의 VGA 레지스터 인터페이스와 직접적으로 대조적이다.
이와 같이, UGA 펌웨어 방법을 시동하기 위해서는 UGA 클라이언트가 UGA 디바이스 특정 문맥 및 UGA I/O 요구 블록을 공급하는 UGA 펌웨어로부터 주어지는 입구(예를 들면, UgaFwDispatchService)를 호출할 수 있다. UGA 디바이스 문맥은 I/O 요구가 의도되는 UGA 디바이스를 식별하도록 UGA 펌웨어에 의해 사용된다. UGA 클라이언트는 UGA 디바이스 문맥을 위한 메모리 저장, UGA I/O 요구 블록, 및 UGA I/O 요구 블록과 연관된 입출력 버퍼를 제공한다. UGA 클라이언트는 UGA I/O 요구 블록 요구 코드와 입력 및/또는 출력 버퍼의 위치 및 크기를 정한다. I/O 요구가 성공적으로 완료되면, UGA 펌웨어는 I/O 요구 블록에 복귀된 바이트의 수를 배치하고, UGA I/O 요구 코드 및 디바이스 문맥을 근거로 하여 요구 데이터로 출력 버퍼를 채운다. UGA 펌웨어는 각 UGA I/O 요구에 대해 I/O 요구의 상태(예를 들면, 성공/실패)를 나타내는 상태 코드를 복귀시킬 수 있다.
UGA 펌웨어 런 타임 환경(예를 들면, 시스템 펌웨어, 운영 시스템)은 UGA 및 비-UGA(예를 들면, VGA) 디스플레이 디바이스에 공통된 인터페이스를 용이하게 하도록 UGA 하드웨어 발췌층(UGA HAL)을 실시할 수 있다. 그래서, 펌웨어 클라이언트는 UGA 펌웨어가 이용가능함을 확인할 수 있고, 비-UGA 디바이스에 대해, UGA HAL은 UGA 클라이언트 및 비-UGA(예를 들면, VGA, 파이어와이어(firewire), 네트워크) 출력 디바이스로부터의 UGA I/O 요구의 해석을 용이하게 한다. 더욱이, UGA 명세서에 따른 펌웨어는 로컬이 아닌 디스플레이 제어기 디바이스에 대해 실시될 수 있다. 원격 디스플레이 디바이스는 UGA HAL을 포함하여 UGA 클라이언트에 로컬 디스플레이 디바이스로 나타난다.
이제는 도 5를 참고로, 출력 범위를 협의하는 방법(500)이 흐름도로 도시된다. 출력 범위는 디스플레이 디바이스가 할 수 있는 것과 연관된다. 예를 들어, 제1 디스플레이 디바이스는 640x480@60Hz를 디스플레이할 수 있고, 제2 디스플레이 디바이스는 1280x1024@80Hz를 디스플레이할 수 있다. 두 디스플레이 디바이스가 모두 똑같은 그래픽 제어기와 연관되면, 본 발명은 디바이스의 성능 사이에서 그 교차점을 확인하는데 사용될 수 있다.
(510)에서는 초기값이 정해진다. 이러한 초기값들은, 제한되지 않지만, 이용가능한 디바이스 세트에 대한 인덱스 설정 및 출력 제어기에 대한 문맥 설정을 포함한다. (520)에서는 디바이스 성능에 대한 정보가 판독된다. 예를 들어, 디바이스의 성능을 설명하는 EDID 데이터(예를 들면, 128 바이트, 256 바이트)를 회복하도록 UgaFwGetEdidSegment(context) 호출이 이루어질 수 있다. 이러한 EDID 데이터는 분리된 값(예를 들면, 한가지 기능을 갖는 디바이스에 대해) 및/또는 값의 범위(예를 들면, 다중-기능 디바이스에 대해)를 포함할 수 있다. (530)에서는 이것이 첫 번째로 디바이스 판독되었나 여부에 대해 결정이 이루어진다. 그런 경우, (534)에서는 데이터 판독이 성공적이었나 여부에 대해 결정이 이루어진다. 그렇지 않은 경우에는 치명적인 에러가 발생되어 처리 과정이 (540)으로 진행된다. 그러나, 판독이 성공적이면, (570)에서는 현재 결정되는 출력 범위가 (520)에서 판독된 초기 범위로 정해진다. 이것이 첫 번째 판독이 아니면, (532)에서는 판독이 성공적이었나 여부에 대해 결정이 이루어진다. 판독이 성공적이지 못하였으면, 처리 과정은 (580)으로 계속되어 다음의 잠재 디바이스가 식별되고 그 다음 디바이스로부터 설명 데이터의 판독이 용이해지도록 문맥이 정해진다. 판독이 성공적이었으면, 처리 과정은 (550)으로 계속되어 이전에 결정된 범위와 현재 판독된 범위 사이의 교차점이 정해진다. (560)에서는 교차점 계산이 새로운 범위를 결정하는가 여부에 대해 결정이 이루어진다. 그런 경우, (570)에서는 결정된 교차점 범위가 업데이트되고 처리 과정은 (580)으로 진행된다.
(585)에서는 설명 데이터가 판독되어야 하는 또 다른 디바이스가 있는가 여부에 대해 결정이 이루어진다. 결정이 YES이면, 처리 과정은 (520)으로 진행되어 설명 데이터가 판독된다. 결정이 NO이면, 처리 과정은 결정된 출력 범위 내에 놓이는 비디오 모드가 안전하게 사용될 수 있음을 결정한다.
이와 같이, 시스템 펌웨어 및/또는 운영 시스템은 출력 제어기 및 그 제어기에 부착된 출력 포트에 대해 복귀된 디스플레이 기능 데이터를 교차시킨다. 교차점은 연결된 디바이스에 의해 지원될 수 있는 비디오 모드 범위를 정의한다. 그래서, 교차점에서 식별된 모드는 출력 제어기에 설정되고, 출력 제어기에 부착된 출력 포트의 출력 디바이스에서 디스플레이될 수 있다.
출력 포트 및/또는 제어기에 대해 복귀된 EDID 데이터를 적어도 일부 근거로 하여, 지원되는 교차 비디오 모드 범위는 이용가능한 모드의 분별 또는 인접 세트를 포함할 수 있다. 그래서, 시스템 펌웨어 및/또는 운영 시스템은 교차 범위로부터 모드를 요구할 수 있다. 시스템 펌웨어 및/또는 운영 시스템은 디바이스 문맥, I/O 요구 종류, 및 요구되는 모드 데이터(예를 들면, 수평 해상도, 수직 해상도, 칼라 깊이, 리프레시(refresh) 비율)를 지정하는 출력 제어기에서 UGA 펌웨어 비디오 설정 방법(예를 들면, UgaFwSetVideoMode)을 시동시킬 수 있고, 이러한 정보를 근거로, UGA 펌웨어는 I/O 요구 및 UGA 차일드 디바이스에 대한 I/O 처리 방법을 급송할 수 있다. UGA 펌웨어는 예를 들어, 요구되는 모드를 설정하도록 UGA 하드웨어를 프로그램하기 위해 인접 및/또는 분별 모드 범위에 대해 이산 모드 범위 및/또는 타이밍 공식(예를 들면, VESA GTF)을 분석하는 테이블 구동 알고리즘을 사용할 수 있다.
도 6은 디바이스 열거 방법(600)에 대한 흐름도를 도시한다. (610)에서는 초기 디바이스(예를 들면, UgaDtParentBus)와 연관된 데이터를 획득함으로서 회귀적인 열거 방법이 시작된다. 초기 데이터가 주어지면, (620)에서는 디바이스와의 상호작용을 용이하게 하도록 문맥이 생성될 수 있다. 그래서, (630)에서는 예를 들어 UgaFwStartDevice 호출을 통해 초기 디바이스를 시작하는데 그 문맥을 사용한다. (640)에서는 디바이스가 시작될 수 있는가 여부에 대해 결정이 이루어진다. 그렇지 않으면, (670)에서 문맥은 패어런트 문맥으로 설정된다. 디바이스가 시작될 수 있으면, 처리 과정은 (650)으로 진행되어 기존 디바이스와 연관된 차일드 디바이스와 연관된 데이터를 획득하도록 시도한다. 예를 들면, 차일드 데이터를 회복하도록 UgaFwGetChildDevice 호출이 이루어질 수 있다. (660)에서는 차일드 데이터가 획득되었나 여부에 대해 결정이 이루어진다. (660)의 결정이 NO이면, 처리 과정은 (670)으로 진행되어 문맥이 패어런트 디바이스의 문맥으로 설정된다. 그러나, (660)의 결정이 YES이면, 처리 과정은 (620)으로 복귀되어 차일드 디바이스에 대해 문맥이 생성되고 제1 심 측량(depth first traversal)이 계속하여 차일드 디바이스의 차일드를 찾는다.
(680)에서는 유효한 패어런트 문맥이 있는가 여부에 대해 결정이 이루어진다. 그렇지 않으면, 제1 심 측량이 완료된다. 그런 경우에는 처리 과정이 (690)으로 진행되어 회귀적인 열거의 다음 반복이 시작된다.
이러한 회귀적인 열거 방법은 UGA 펌웨어가 다양한 디바이스를 지원하는 것을 용이하게 한다. UGA 펌웨어 명세서는 열거된 UGA 디바이스에 대해 UGA 펌웨어에서 실시되는 I/O 서비스 세트를 정의할 수 있다. 서비스 종류는 UGA I/O 요구 코드와 연관되고, 이러한 IO 요구 코드는 UGA 펌웨어 명세서에 부가될 수 있다. UGA 펌웨어 I/O 모델은 UGA 클라이언트, UGA 런 타임 환경, 및 UGA 펌웨어 사이에 호환성을 유지하면서 UGA 펌웨어 명세서에 새로운 I/O 요구 코드 및/또는 새로운 디바이스 종류가 부가되는 것을 용이하게 하도록 설계된다.
회귀적인 열거 방법을 사용함으로서, UGA 펌웨어는, 제한되지 않지만, 패어런트 버스, 그래픽 제어기, 출력 제어기, 출력 포트, 및 다른 디바이스 종류를 포함하는 하나 이상의 비디오 차일드 디바이스를 지원한다. 열거된 UGA 디바이스에서는 UGA 펌웨어가 시스템 BIOS 및 IHV 비디오 드라이버, 일반 차일드 디바이스 드라이버를 지원하는 표준화된 PnP 식별자, 및 디바이스 설명 스트링으로 해석될 수있는 추가 디바이스 설명자 데이터를 제공할 수 있다. UGA 디바이스는 유일한 문맥과 연관되거나, 공유되는 문맥이 단일 UGA 어댑터와 연관된 UGA 디바이스에 의해 공유될 수 있다.
UGA 디바이스를 열거하기 위해, 시스템 펌웨어 및/또는 운영 시스템은 예를 들어 제1 심 측량 알고리즘을 사용하여 UGA 디바이스 트리(tree)를 측량한다. UGA 펌웨어 방법 호출(예를 들면, UgaFwStartDevice, UgaFwGetChildDevice)은 디바이스에 대해 시동될 수 있다. 본 방법의 한 예에서, 패어런트 디바이스에 대한 디바이스 문맥 생성 방법 및 시작 방법은 차일드 디바이스가 열거되고 또한/또는 시작되기 이전에 실시된다.
시스템 BIOS 및/또는 운영 시스템은 UGA 펌웨어에 디바이스 문맥 및 I/O 요구 종류를 전달하고, 그 정보를 근거로, UGA 펌웨어는 I/O 요구 및 UGA 차일드 디바이스에 대한 I/O 처리 방법을 급송할 수 있다. 회귀적인 열거 방법을 사용함으로서, UGA 펌웨어는 하나 이상의 출력 제어기 및/또는 출력 포트를 지원할 수 있다. 이와 같이 열거된 포트는 물리적인 출력 디바이스(예를 들면, CRTC 모니터, 평평한 패널, 텔레비전)에 부착될 수 있다. 열거된 출력 포트에서는 시스템 펌웨어 및/또는 운영 시스템이 데이터 획득 방법(예를 들면, UgaFwGetEdidSegment)을 시동시켜, 디바이스 문맥 및 I/O 요구 종류를 지정한다. 이러한 정보를 근거로, UGA 펌웨어는 I/O 요구 및 UGA 차일드 디바이스에 대한 I/O 처리 방법을 급송한다. UGA 펌웨어는 이어서 출력 포트에 부착된 출력 디바이스에 대한 디스플레이 식별 및 구성 데이터를 복귀시킨다. 이러한 정보는 예를 들어 VESA(Video ElectronicsStandards Association) 표준에서 정의된 EDID 포맷으로 복귀될 수 있다. UGA 펌웨어는 예를 들어 DDC(display data channel standard) 및/또는 실시 지정 통신 채널에 의해 출력 디바이스로부터 EDID 정보를 판독한다. UGA 펌웨어는 EDID 데이터가 출력 디바이스로부터 구해질 수 없는 경우 EDID를 생성할 수 있다.
UGA 펌웨어가 실시되지 않거나 출력 포트 디바이스에 대한 데이터 획득 방법(예를 들면, UgaFwGetSegment)을 사용하는 동안 실패하면, UGA 펌웨어는 디바이스 I/O 루틴의 세트(예를 들면, UgaFwDeviceChannelOpen, UgaFwDeviceChannelRead, UgaFwDeviceChannelWrite, UgaFwDeviceChannelClose)를 실시하여, 시스템 펌웨어 및/또는 운영 시스템이 DDC나 다른 실시 지정 통신 채널을 통해 출력 디바이스와 직접적으로 통신할 수 있게 한다.
출력 포트에 대한 처리 과정과 유사하게, 열거된 출력 제어기에서는 시스템 펌웨어 및/또는 운영 시스템이 디바이스 문맥 및 I/O 요구 종류를 지정하는 데이터 획득 방법(예를 들면, UgaFwGetEdidSegment)을 시동시킨다. 이러한 정보를 근거로, UGA 펌웨어는 I/O 요구 및 UGA 차일드 디바이스에 대한 I/O 처리 방법을 급송한다. UGA 펌웨어는 이어서 출력 제어기에 디스플레이 식별 및 구성 데이터를 복귀시킨다. 이러한 정보는 예를 들어, VESA EDID 포맷으로 복귀될 수 있다. 출력 제어기 디바이스에 대한 EDID 데이터는 UGA 디스플레이 어댑터의 하드웨어 기능을 근거로 UGA 펌웨어에 의해 제공된다. 본 발명의 한 예에서, 데이터 획득 방법은 출력 제어기 디바이스에 대해 UGA 펌웨어에서 실시되어야 한다.
본 발명에 의해 용이해지는 전력 관리에 대해, 전력 상승에서는 하향 트리측량법(top-down tree traversal)이 사용될 수 있고, 전력 하강에서는 상향 트리 측량법(botton-up tree traversal)이 사용될 수 있다. 디바이스에서, UGA 펌웨어 방법(예를 들면, UgaFwSetPowerState)은 전력 상태를 증명하여 전력 변화를 일으키도록 시동될 수 있다. 이러한 방법은 금지될 수 있고, 이러한 경우에는 앞서 시동된 전력 상태 설정 상법이 취소될 수 있다. 시스템 펌웨어 및/또는 운영 시스템은 디바이스 문맥, I/O 요구 종류, 전력 요구 종류, 요구 디바이스 상태, 및 요구 전력 상태를 UGA 펌웨어에 전달할 수 있다. 그래서, UGA 디바이스는 다수의 전력 상태를 지원할 수 있고, UGA 펌웨어는 I이러한 전력 상태 관리에 관련된 I/O 요구 및 차일드 디바이스에 대한 I/O 처리 방법을 급송할 수 있다.
본 발명의 한 실시예는 UGA를 EFI(Extensible Firmware Interface) 드라이버로 실시한다. 그래서, EFI-UGA 연결 프로토콜이 본 특허 출원 명세서의 일부인 부록 B로 여기에 첨부된다.
도 7은 디스플레이 디바이스(710) 및 그 차일드 디바이스(712 내지 718)와 상호작용하는 운영 시스템(700)을 설명한다. 종래에, VGA 시스템은 이러한 차일드 디바이스(712 내지 718)와 상호작용할 수 없었다. UGA는 UGA 펌웨어 인터페이스를 통해 이러한 차일드 디바이스(712 내지 718)를 열거하는 것을 용이하게 하고, 차일드 디바이스(712 내지 718)가 UGA 펌웨어 인터페이스를 노출시키면, 운영 시스템(700)은 그와 상호작용할 수 있다. 이와 같이, UGA 펌웨어의 한 예는 다양한 종류의 여러 차일드 디바이스를 지원할 수 있고, 이러한 차일드 디바이스를 열거하고, 이러한 차일드 디바이스에 대한 전력 관리를 실행하고, 이러한 차일드 디바이스의 상태를 문의 및 제어하고, 이러한 차일드 디바이스에 대한 디스플레이 모드를 설정하고, 또한 기본적인 드로잉 동작을 용이하게 하는 방법을 제공할 수 있다.
본 발명의 다양한 특성에 대한 추가 문맥을 제공하기 위해, 도 8과 다음 논의 내용은 본 발명의 다양한 특성이 실시될 수 있는 적절한 컴퓨팅 환경(810)을 간략하고 일반적으로 설명하도록 의도된다. 본 발명은 하나 이상의 컴퓨터에서 운행될 수 있는 컴퓨터-실행가능 구성성분의 일반적인 문맥, 지시 및/또는 동작으로 상기에 설명되었지만, 종래 기술에 숙련된 자는 본 발명이 또한 다른 프로그램 모듈 및/또는 하드웨어와 소프트웨어의 조합과 연관되어 실시될 수 있음을 인식하게 된다. 일반적으로, 프로그램 모듈은 특정한 작업을 실행하거나 특정한 발췌 데이터 종류를 실시하는 루틴, 프로그램, 구성성분, 데이터 구조 등을 포함한다. 또한, 종래 기술에 숙련된 자는 본 발명의 방법이 각각 하나 이상의 연관된 디바이스에 동작되도록 연결될 수 있는 단일-프로세서나 다중프로세서 컴퓨터 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 개인용 컴퓨터, 휴대용 컴퓨팅 디바이스, 마이크로프로세서를 기반으로 하거나 프로그램가능한 소비 전자제품 등을 포함하는 컴퓨터 시스템 구성으로 실시될 수 있음을 인식하게 된다. 본 발명의 설명된 특성은 또한 특정한 작업이 통신 네트워크를 통해 연결된 원격 처리 디바이스에 의해 실행되는 배급 컴퓨팅 환경에서도 실시될 수 있다. 배급 컴퓨팅 환경에서는 프로그램 모듈이 로컬 및 원격 메모리 저장 디바이스 모두에 위치할 수 있다.
도 8을 참고로, 본 발명의 다양한 특성을 실시하는 모범적인 환경(810)은 컴퓨터(812)를 포함하고, 컴퓨터(812)는 처리 유닛(814), 시스템 메모리(816), 및 시스템 버스(818)를 포함한다. 시스템 버스(818)는, 제한되지 않지만, 시스템 메모리(816)를 포함하는 시스템 구성성분을 처리 유닛(814)에 연결시킨다. 처리 유닛(814)은 다양한 프로세서 중 임의의 것이 될 수 있다. 이중 마이크로프로세서 및 다른 멀티프로세서 설계가 또한 처리 유닛(814)으로 사용될 수 있다.
시스템 버스(818)는 메모리 버스나 메모리 제어기, 주변 버스와 다양한 버스 설계를 사용하는 로컬 버스를 포함하는 몇 가지 종류의 버스 구조가 될 수 있다. 시스템 메모리(822)는 판독 전용 메모리(ROM)(820) 및 랜덤 억세스 메모리(RAM)(822)를 포함한다. 시동되는 동안 컴퓨터(812) 내의 소자들 사이에서 정보를 전달하는 것을 돕는 기본 루틴을 포함하는 기본적인 입력/출력 시스템(BIOS)은 ROM(820)에 저장된다.
BIOS는 예를 들어, UGA 펌웨어를 포함할 수 있다.
컴퓨터(812)는 또한 하드 디스크 드라이브(824), 자기 디스크 드라이브(826)(예를 들면, 이동가능한 디스크(828)로 기록하거나 그로부터 판독하기 위한), 및 광학 디스크 드라이브(830)(예를 들면, CD-ROM 디스크(832)를 판독하거나 다른 광학 매체에 기록 또는 판독하기 위한)를 포함한다. 하드 디스크 드라이브(824), 자기 디스크 드라이브(826), 및 광학 디스크 드라이브(830)는 각각 하드 디스크 드라이브 인터페이스(834), 자기 디스크 드라이브 인터페이스(836), 및 광학 드라이브 인터페이스(838)로 시스템 버스(818)에 연겨로딜 수 있다. 드라이브 및 그와 연관된 컴퓨터-판독가능 매체는 컴퓨터(812)에 비휘발성 데이터 저장,데이터 구조, 컴퓨터 구성성분, 컴퓨터-실행가능 지시 등을 제공한다. 비록 상기에 설명된 컴퓨터-판독가능 매체가 하드 디스크, 제거가능한 자기 디스크, 및 CD를 칭하지만, zip 드라이브, 자기 카셋트, 플래시 메모리 카드(flash memory card), 디지털 비디오 디스크, 카트리지, ASIC 등과 같이 컴퓨터에 의해 판독가능한 다른 종류의 매체도 또한 모범적인 동작 환경에서 사용될 수 있고, 또한 이러한 매체가 본 발명의 방법을 실행하기 위한 컴퓨터-실행가능 지시를 포함할 수 있는 것으로 생각되어야 한다.
다수의 프로그램 모듈은 운영 시스템(840), 하나 이상의 응용 프로그램(842), 다른 프로그램 모듈(844), 및 프로그램 데이터(846)를 포함하여 드라이브 및 RAM(822)에 저장될 수 있다. 본 발명은 다양한 운영 시스템이나 운영 시스템의 조합으로 실시될 수 있는 것으로 생각된다.
사용자는 마우스(850)와 같은 지시 디바이스나 키보드(848)를 통해 컴퓨터(812)에 명령 및 정보를 입력할 수 있다. 다른 입력 디바이스(도시되지 않은)는 마이크로폰, IR 원격 제어, 조이스틱, 게임 패드, 위상 접시, 스캐너 등을 포함할 수 있다. 이러한 입력 디바이스 및 다른 입력 디바이스는 때로 시스템 버스(818)에 연결된 직렬 포트 인터페이스(852)를 통해 처리 유닛(814)에 연결되지만, 병렬 포트, 게임 포트, USB(universal serial bus), 및 IR(infrared) 인터페이스 등과 같은 다른 인터페이스로 연결될 수 있다. 모니터(854)나 다른 종류의 디스플레이 디바이스도 또한 비디오 어댑터(856)와 같은 인터페이스를 통해 시스템 버스(818)에 연결된다. 모니터에 부가하여, 컴퓨터는 전형적으로 스피커, 프린터등과 같은 다른 주변 출력 디바이스(도시되지 않은)를 포함한다.
컴퓨터(812)는 원격 컴퓨터(858)와 같은 하나 이상의 원격 컴퓨터에 로컬 연결을 사용하여 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(858)는 워크스테이션, 서버 컴퓨터, 라우터, 개인용 컴퓨터, 마이크로프로세서 기반의 오락기, 피어(peer) 디바이스, 또는 다른 공통 네트워크 노드가 될 수 있고, 전형적으로 컴퓨터(812)에 관련되어 설명된 다수의, 또는 모든 소자를 포함하지만, 간략화하도록 메모리 저장 디바이스(860)만이 설명된다. 도시된 로컬 연결은 LAN(local area network)(862) 및 WAN(wide area network)(864)를 포함한다. 이러한 네트워크 환경은 사무실, 기업 컴퓨터 네트워크, 인트라넷, 및 인터넷에서 일반적이다.
LAN 환경에서 사용될 때, 컴퓨터(812)는 네트워크 인터페이스나 어댑터(866)를 통해 로컬 네트워크(862)에 연결된다. WAN 환경에서 사용될 때, 컴퓨터(812)는 전형적으로 모뎀(868)을 포함하거나, LAN상의 통신 서버에 연결되거나, 인터넷과 같이 WAN(864)을 통해 통신을 설립하는 다른 수단을 갖는다. 내부 또는 외부에 있는 모뎀(868)은 직렬 포트 인터페이스(852)를 통해 시스템 버스(818)에 연결된다. 네트워크 환경에서는 컴퓨터(812)나 그 일부와 관련되어 설명된 프로그램 모듈이 원격 메모리 저장 디바이스(860)에 저장된다. 도시된 네트워크 연결은 한 예이고 컴퓨터 사이에 통신 링크를 설립하는 다른 수단이 사용될 수 있는 것으로 생각된다.
도 9는 다수의 비디오 어댑터 영상이 저장된 옵션 ROM을 설명한다. 예를 들어, 제1 영상은 구식 X86 비디오 BIOS를 지원할 수 있고, 제2 영상은 UGA BIOS를지원할 수 있다. UGA BIOS를 지원하기 위해, 제2 영상은 UGA 펌웨어 바이트 코드가 런 타임 환경과 상호작용하는 것을 용이하게 하는 펌웨어 지정 바인딩(binding)(예를 들면, EFI 대 UGA)을 포함할 수 있다. 제2 영상은 또한 시스템 펌웨어 바인딩의 인터페이스와 UGA 펌웨어 서비스 급송을 용이하게 하는 런 타임 지원 라이브러리 바인딩을 포함할 수 있다. UGA 펌웨어 서비스 급송은 UGA 디바이스에 의도되는 호출을 수신하고, 사용자가 대화하길 원하는 디바이스와 사용자가 실행하길 원하는 서비스를 식별한다. 급송자는 UGA 펌웨어 서비스로 적절한 방법을 호출한다. 이와 같이, 옵션 ROM에 다수의 영상을 저장하는 기능은 구식 시스템과 UGA 시스템의 동시 지원을 용이하게 하여, 종래 시스템을 통한 상호동작성을 개선시킨다.
상기에 설명된 것은 본 발명의 실시예들을 포함한다. 물론, 본 발명의 설명을 위해 생각될 수 있는 구성성분의 조합이나 방법들을 모두 설명하는 것이 가능하지 않지만, 종래 기술에 숙련된 자는 본 발명의 다른 많은 조합 및 수정이 가능함을 인식할 수 있다. 따라서, 본 발명은 첨부된 청구항의 의도 및 범위 내에 포함되는 이러한 변경, 수정, 및 변형을 모두 포함하도록 의도된다. 더욱이, "포함한다"는 말이 청구항이나 상세한 설명 부분에서 사용되는 범위까지, 이러한 용어는 "구비한다"는 말과 유사한 방식으로 포함되도록 의도된다.
본 발명은 펌웨어(firmware)를 통해 표준 방식으로 저레벨 그래픽 하드웨어를 요약하여 발췌하는 하드웨어에 독립적인 설계의 UGA(Universal Graphics Adapter)를 제공한다. 펌웨어-기반의 표준으로, UGA는 개발되는 하드웨어 특성과 새로운 하드웨어 특성을 모두 지원하도록 시스템을 업데이트하는 것을 용이하게 한다.
[부록 A]
UGA
일반 그래픽 어댑터
펌웨어 인터페이스 명세서
Part 1
1.1 UGA 인터페이스 명명 협의
UgaFwXxxx - UGA 펌웨어에 의해 시스템 펌웨어 및 운영 시스템과 UGA IO 요구 처리기에 주어지는 방법.
VmlXxxx - 가상 기계(Virtual Machine, VM)에 의해 UGAVMXXX.LIB I/O 라이브러리를 통해 UGA 펌웨어에 주어지는 방법. 주: 첨자 l은 L의 소문자.
Part 2
UGA 펌웨어 인터페이스
UGA 펌웨어 인터페이스는 UGA 펌웨어로부터 노출된다. 시스템 펌웨어와 UGA HAL 드라이버는 UGA 하드웨어와의 기본적인 동작을 실행하는데 이 인터페이스를 사용한다. 이 층은 구식 비디오 BIOS를 대신한다.
UGA_STATUS 값은 다음과 같은 32 비트 값이다.
30 - 31 16 - 29 0 - 15
Severity Reserved Status code
Severity 비트들은 다음과 같이 정의된다:
00 - Succes
01 - Informational
10 - Warning
11 - Error
UGA_STATUS 값들은 다음과 같이 정의된다:(TBD)
UGA_VERSION_NUMBER 값들은 다음과 같은 32 비트 값이다:
16 - 31 8 - 15 0 - 7
Reserved Version major Version
2.2 UGA 펌웨어 인터페이스 - 데이터 구조
UGA_CHANNEL_TRANSFER는 오픈 디바이스 채널과 메모리 버퍼 사이에서 데이터 전달을 실행하는데 UGA 펌웨어에 의해 요구되는 정보를 포함한다.
멤버
pvBuffer
오픈 디바이스 채널로부터 수신되거나 그에 전달되는 데이터의 소스나 목적지 메모리 버퍼에 대한 가상 포인터.
ui64Size
요구되는 데이터 전달의 바이트 크기.
bEndOfTransfer
UGA 펌웨어가 똑같은 흐름 방향에서 추가 채널 전달 요구를 기대하여야 하는가를 지정한다. FALSE는 추가 전달이 계속 진행 중임을 나타내고, TRUE는 1회분으로 마지막 전달임을 나타낸다.
UGA_DEVICE는 UgaFwGetChildDevice에 의해 열거되는 디바이스와 연관된 디바이스 객체를 지정한다. 시스템 펌웨어/운영 시스템은 열거된 각 디바이스에 대해 UGA_DEVICE를 할당한다. 이 객체에 대한 포인터는 UGA 펌웨어 방법으로 전해진다. 이는 불투명한 객체이다 - UGA 펌웨어는 그 필드를 직접적으로 구분할 수 없다 - 그 배치는 통지 없이 변할 수 있다.
UGA_DEVICE_DATA는 UgaFwGetChildDevice 방법에 의해 복귀되는 디바이스 데이터이다.
멤버
deviceType
디바이스의 종류를 지정한다.
deviceId
비디오 IHV로 정의된 디바이스 Id이다.
ui32DeviceContextSize
열거된 UGA 디바이스에 할당된 문맥 버퍼의 요구되는 바이트 크기. 이 버퍼는 시스템 펌웨어/운영 시스템에 의해 할당된다. UGA 펌웨어는 런 타임 디바이스 지정 정보를 저장하는데 이 버퍼를 사용할 수 있다.
ui32SharedContextSize
UGA 어댑터에 할당된 공유 문맥 버퍼의 요구되는 바이트 크기. 이 버퍼는 시스템 펌웨어/운영 시스템에 의해 할당된다. UGA 펌웨어는 런 타임 디바이스 지정 정보를 저장하는데 이 버퍼를 사용할 수 있다.
UGA_MEMORY_TRANSFER는 메모리 데이터 전달을 실행하는데 UGA 펌웨어에 의해 요구되는 정보를 포함한다.
멤버
transferType
전달 종류를 지정한다: UgaMtSystemToVideo, UgaMtVideoToSystem, 또는 UgaMtVideoToVideo.
pvSource
시스템 메모리에 위치하는 전달 소스에 대한 가상 포인터.
pvDestination
시스템 메모리에 위치하는 전달 목적지에 대한 가상 포인터.
ui64Source
비디오 메모리에 위치하는 전달 소스의 프레임 버퍼 시작부로부터의 오프셋.
ui64Destination
비디오 메모리에 위치하는 전달 목적지의 프레임 버퍼 시작부로부터의 오프셋.
i32Width
전달 영역의 바이트 폭.
i32Height
전달 영역의 라인 높이.
i32SourceDelta
소스 전달 영역 중 인접한 두 라인의 시작점 사이의 바이트수.
i32DestinationDelta
목적지 전달 영역 중 인접한 두 라인의 시작점 사이의 바이트수.
bEndOfTransfer
UGA 펌웨어가 이어지는 UgaFwCopyRectangle에 대한 추가 호출을 기대하여야 하는가를 지정한다. FALSE는 진행 중인 추가 전달을 나타내고, TRUE는 1회분으로 마지막 전달을 나타낸다. UGA 펌웨어는 요구되는 경우 픽셀 캐시 라인을 플러시(flush) 처리하도록 TRUE의 값을 힌트로 해석할 수 있다.
2.3 UGA 펌웨어 인터페이스
UGA 펌웨어는 외부 세계(시스템 펌웨어, 운영 시스템 런 타임)에 단일 입구를 제공한다. 제공된 입구는 UgaFwDispatchService라 칭하여진다. UgaFwDispatchService는 UGA 디바이스 종류 및 IO 요구 종류를 근거로 UGA 펌웨어 내에서 적절한 처리기에 UGA IO 요구를 급송하는 것을 담당한다.
UgaFwDispatchService는 2가지 변수로 호출된다: PUGA_DEVICE pDevice 및 PUGA_IO_REQUEST ploRequest. UgaFwDispatchService는 VM 라이브러리 방법VmlGetDeviceType(pDevice)를 호출하도록 요구가 의도되는 디바이스 종류를 결정할 수 있다. UGA 펌웨어는 UGA_DEVICE 데이터 구조 내에서 임의의 필드를 직접적으로 구분할 수 없다 - 이는 불투명한 객체로, 그 내부 배치가 미래에 통보 없이 변할 수 있다.
UGA 사양 버전 1.0은 다음과 같은 UGA 디바이스 타입을 정의한다:
UGA_IO_REQUEST는 입출력 버퍼에 대한 포인터, 두 버퍼의 길이, 출력 버퍼에서 UGA 펌웨어에 의해 복귀되는 바이트수를 저장하는 필드, 및 UGA_IO_REQUEST.ioRequestCode 필드에서의 IO 요구 코드를 포함한다.
TBD: UGA_IO_REQUEST가 불투명한 객체임을 선언하고 그 필드를 조작하는 방법을 정의하여야 하는가?
각 UGA 디바이스에 대해, UGA 펌웨어는 먼저 UgaloGetChildDevice IO 요구로 이어지는 UgaloStartDevice를 수신하고, UGA 디바이스 트리의 상단에서 하단으로 이동된다. 다른 IO 요구는 디바이스가 열거되어 시작된 이후에 수신된다. UgaDtParentBus는 특별한 경우이다 - UGA 디바이스 열거 처리를 공급하도록 의도되고, UgaloGetVersion 및 UgaloGetChildDevice 이외의 것에 사용되지 않는다.
UgaFwDispatchService는 UGA 펌웨어로부터 주어지는 유일한 입구이고, 메인 UGA 서비스 급송 루틴으로 사용된다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체이다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
복귀값
UGA 펌웨어 상태 코드.
이러한 방법들은 특정 하드웨어 구성에서는 요구되지 않을 수 있다.
UgaFwBtPrivateInterface는 UGA 펌웨어에 OEM/IHV 지정 요구를 전달하고 시스템과 UGA 펌웨어 사이에 자유 포맷 데이터를 교환하는 방법을 제공한다.
이는 선택적인 부트 시간 전용 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
IHV/OEM 정의
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
IHV/OEM 정의
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, VmlBtPrivateInterface를 또한 참고한다.
UgaFwCopyRectangle은 비디오에서 비디오 메모리로, 시스템에서 비디오 메모리로, 또는 비디오에서 시스템 메모리로 데이터를 복사한다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
UGA_MEMORY_TRANSFER 객체를 지시한다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
소스와 목적지 영역 사이의 비트맵(bitmap) 해석이 지원되지 않는다 - 두 영역은 모두 똑같은 포맷을 사용하여야 한다. UGA 1.0은 단지 16bpp를 RGB 565로, 32bpp를 xRGB로 지원한다.
UgaFwGetChildDevice를 또한 참고한다.
UgaFwDeviceChannelClose는 슬래이브(slave) 디바이스로 통신 채널을 폐쇄한다.
이는 외부 PnP 디스플레이 디바이스를 지원하지 않는 내장 비-PnP 디스플레이(예를 들면, 랩탑(laptop))를 갖춘 OEM 시스템을 제외하고 요구되는 방법이다. 이러한 OEM 시스템에서는 UgaFwGetEdidSegment 방법이 실시되어야 한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
사용되지 않는다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwDeviceChannelClose는 주로 디스플레이 디바이스로부터 EDID 데이터를 회복하도록 의도된다(새로운 EDID 포맷에 대해 탄력적인 지원). 부가하여, IHV 드라이버 기록기는 이 방법을 다른 비디오 차일드 디바이스와 통신하는데 사용할 수 있다.
UgaFwGetChildDevice, UgaFwDeviceChannelOpen, UgaFwDeviceChannelRead,UgaFwDeviceChannelWrite, UgaFwGetEdidSegment를 또한 참고한다.
UgaFwDeviceChannelOpen은 슬래이브 디바이스와의 통신을 초기화한다.
이는 외부 PnP 디스플레이 디바이스를 지원하지 않는 내장 비-PnP 디스플레이(예를 들면, 랩탑)를 갖춘 OEM 시스템을 제외하고 요구되는 방법이다. 이러한 OEM 시스템에서는 UgaFwGetEdidSegment 방법이 실시되어야 한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
사용되지 않는다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwDeviceChannelOpen은 주로 디스플레이 디바이스로부터 EDID 데이터를 회복하도록 의도된다(새로운 EDID 포맷에 대해 탄력적인 지원). 부가하여, IHV 드라이버 기록기는 다른 비디오 차일드 디바이스와 통신하는데 이 방법을 사용할 수 있다.
UgaFwGetChildDevice, UgaFwDeviceChannelRead, UgaFwDeviceChannelWrite, UgaFwDeviceChannelClose, UgaFwGetEdidSegment를 또한 참고한다.
UgaFwDeviceChannelRead는 슬래이브 디바이스로부터 데이터 블록을 판독한다.
이는 외부 PnP 디스플레이 디바이스를 지원하지 않는 내장 비-PnP 디스플레이(예를 들면, 랩탑)를 갖춘 OEM 시스템을 제외하고 요구되는 방법이다. 이러한 OEM 시스템에서는 UgaFwGetEdidSegment 방법이 실시되어야 한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
UGA_CHANNEL_TRANSFER 객체를 지시한다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwDeviceChannelRead는 주로 디스플레이 디바이스로부터 EDID 데이터를 회복하도록 의도된다(새로운 EDID 포맷에 대해 탄력적인 지원). 부가하여, IHV 드라이버 기록기는 다른 비디오 차일드 디바이스와 통신하는데 이 방법을 사용할 수 있다.
UgaFwGetChildDevice, UgaFwDeviceChannelOpen, UgaFwDeviceChannelClose, UgaFwDeviceChannelWrite, UgaFwGetEdidSegment를 또한 참고한다.
UgaFwDeviceChannelWrite는 슬래이브 디바이스에 데이터 블록을 기록한다.
이는 외부 PnP 디스플레이 디바이스를 지원하지 않는 내장 비-PnP 디스플레이(예를 들면, 랩탑)를 갖춘 OEM 시스템을 제외하고 요구되는 방법이다. 이러한OEM 시스템에서는 UgaFwGetEdidSegment 방법이 실시되어야 한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
UGA_CHANNEL_TRANSFER 객체를 지시한다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwDeviceChannelWrite는 주로 디스플레이 디바이스로부터 EDID 데이터를 회복하도록 의도된다(새로운 EDID 포맷에 대해 탄력적인 지원). 부가하여, IHV 드라이버 기록기는 다른 비디오 차일드 디바이스와 통신하는데 이 방법을 사용할 수 있다.
UgaFwGetChildDevice, UgaFwDeviceChannelOpen, UgaFwDeviceChannelClose, UgaFwDeviceChannelRead, UgaFwGetEdidSegment를 또한 참고한다.
UgaFwFlushDevice는 하드웨어에 진행 중인 기록을 플러시 처리하여 DMA 동작이 모두 완료되는 것을 확인한다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
사용되지 않는다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UGA 하드웨어는 일부 다른 UGA 방법이 호출될 때까지 이 루틴으로부터 복귀되면 전부 아이들(idle) 상태에 남아있어야 한다 - 시스템 펌웨어/OS는 이 디바이스의 PCI 구성 공간을 다룰 수 있다.
UgaFwGetChildDevice를 또한 참고한다.
UgaFwGetChildDevice는 pDevice 디바이스 객체와 연관된 디바이스의 차일드 디바이스에 대한 정보를 복귀시킨다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
0-기반의 차일드 인덱스(UNIT32 값)를 지시한다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
UGA_DEVICE_DATA 객체를 지시한다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice는 열거시에 이용가능한가 여부에 관계없이 UGA 어댑터에 의해 지원되는 모든 디바이스를 보고하여야 한다. UgaFwGetDeviceState 방법은 필요에 따라 디바이스의 현재 상태를 결정하는데 사용된다.
UGA_DEVICE_DATA.ui32SharedContexSize 특성을 0이 아닌 값으로 설정하면, 이는 소정의 크기의 공유 문맥 버퍼를 할당하도록 런 타임 환경에 알리고, 이를 현재 열거된 디바이스와 연관시키고, 또한 이들 디바이스에 대한 공유 문맥 크기로 0이 복귀될 때까지 똑같은 버퍼에 순차적으로 열거된 디바이스를 모두 지시한다. 일반적으로, 공유 문맥 크기는 루트 디바이스에 대해서만 0이 아닌 값으로 설정되고, 순차적으로 열거된 모든 디바이스에 대해서는 0으로 설정되어야 한다.
UGA 디바이스에 대한 추가 정보는 UgaFwGetDevicePropertySize 및 UgaFwGetDeviceProperty 방법을 사용하여 구해질 수 있다.
UgaFwGetDeviceState, UgaFwGetDevicePropertySize, UgaFwGetDeviceProperty를 또한 참고한다.
UgaFwGetDeviceProperty는 디바이스에 대한 정적 정보를 복귀시킨다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
UGA_DEVICE_PROPERTY 객체를 지시한다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
디바이스 특성 데이터에 대한 저장을 지시한다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, UgaFwGetDevicePropertySize를 또한 참고한다.
UgaFwGetDevicePropertySize는 디바이스에 대한 정적 정보의 크기를 복귀시킨다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
UGA_DEVICE_PROPERTY 객체를 지시한다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
디바이스 특성 크기에 대한 저장을 지시한다(UNIT64).
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, UgaFwGetDeviceProperty를 또한 참고한다.
UgaFwGetDeviceState는 디바이스 객체와 연관된 디바이스의 현재 상태를 복귀시킨다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
사용되지 않는다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
UGA_DEVICE_STATE 객체를 지시한다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, UgaFwSetDeviceState를 또한 참고한다.
UgaFwGetEdidSegment는 디바이스에 대한 EDID 데이터를 복귀시킨다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
EDID 세그먼트수를 지시한다(UNIT32).
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
EDID 세그먼트 데이터에 대한 저장을 지시한다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기(UGA_MAX_EDID_SEGMENT_LENGTH)
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
이 방법은 열거된 UgaDtOutputController 및 UgaDtOutputPort 디바이스에 사용된다.
UgaDtOutputController 디바이스에서는 UgaFwGetEdidSegment가 각 출력 제어기의 기능, 즉 비디오 어댑터 자체의 기능을 복귀시킨다.
이 방법은 UGA 펌웨어가 소정의 UgaDtOutputPort 디바이스에 대한 12C 방법을 제공하고 그 방법에 대한 EDID가 12C 프로토콜을 통해 억세스가능한 경우 실패할 수 있다. 이 방법은 언제나 UgaDtOutputController 디바이스에서 성공되어야 하고, UgaDtOutputPort 디바이스에 대해서는 디폴트로 12C 프로토콜을 지원하지 않는다(예를 들면, TV, 일부 랩탑 평면 패널 디스플레이).
이 방법은 EDID가 없는 구식 모니터에 대해서는 실패할 수 있다.
UgaFwGetChildDevice를 또한 참고한다.
UgaFwGetVideoMemoryConfiguration은 비디오 메모리 구성 데이터를 복귀시킨다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
사용되지 않는다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
UGA_MEMORY_CONFIGURATION 객체를 지시한다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
이 방법은 열거된 UgaDtOutputController 디바이스에 대해 호출된다.
비디오 메모리 구성 데이터는 현재 선택된 비디오 모드를 근거로 변한다. UgaFwGetMemoryConfiguration은 전형적으로 UgaFwSetVideoMode 호출 이후에 호출된다.
UgaFwGetChildDevice, UgaFwSetVideoMode를 또한 참고한다.
UgaFwGetPersistentData는 자유 포맷의 IHV 정의 디바이스 구성 데이터를 복귀시킨다. 이 데이터는 비휘발성 매체에서 시스템 펌웨어에 의해 저장되고 재부트를 통해 지속된다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
판독하는 바이트의 수를 지시한다(UNIT64).
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
판독 데이터의 저장을 지시한다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, UgaFwGetPersistentDataSize, UgaFwSetPersistentData를 또한 참고한다.
UgaFwGetPersistentDataSize는 UGA 디바이스에 이용가능한 지속 저장 영역의 바이트 크기를 복귀시킨다. 디바이스에 대한 지속 저장 영역은 시스템 펌웨어 및 하드웨어에 의해 제공된다.
이는 옵션 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
사용되지 않는다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
지속 데이터 버퍼의 크기를 지시한다(UNIT64).
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, UgaFwGetPersistentData, UgaFwSetPersistentData를 또한 참고한다.
UgaFwGetVersion은 버전 정보를 복귀시킨다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
사용되지 않는다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
UGA_VERSION 객체를 지시한다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice를 또한 참고한다.
UgaFwResetDevice는 디바이스를 초기 상태로 재설정한다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
사용되지 않는다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
이 방법은 UgaDtGraphicsController 및 UgaDtOutputController 디바이스에 대해 실패할 수 없다 - 다른 UGA 방법, 특히 UgaFwSetVideoMode가 사용될 수 있는 경우 이들 디바이스를 초기 상태로 재설정하여야 한다. UgaFwResetDevice는 응급할 때 운영 시스템에 의해 사용된다.
UgaFwGetChildDevice를 또한 참고한다.
UgaFwSetDeviceState는 차일드 디바이스의 현재 상태를 인에이블 또는 디스에이블 상태로 설정한다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
UGA_DEVICE_STATE 객체를 지시한다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
임의의 시간에 디바이스의 실제 상태를 결정하기 위해서는 UgaFwGetDeviceState가 호출되어야 한다. 호출자는 UgaFwSetDeviceState에 전해진디바이스 상태값을 근거로 현재 디바이스 상태에 대해 가정해서는 않된다.
UgaFwSetDeviceState가 UgaDtOutputController 및 UgaDtOutputPort 디바이스에 대해 호출되면, UGA 펌웨어는 UgaFwSetVideoMode 호출이 이어질 것으로 기대한다. 즉, UGA 펌웨어는 상태 설정 요구를 완료하도록 요구될 때라도 그 자체에 비디오 모드를 설정하지 않는다.
UgaFwGetChildDevice, UgaFwGetDeviceState를 또한 참고한다.
UgaFwSetPersistentData는 자유 포맷의 IHV 정의 디바이스 구성 데이터를 기록한다. 이 데이터는 시스템 펌웨어에 의해 비휘발성 매체에 저장되고 재부트를 통해 지속된다.
이는 옵션 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
기록 데이터를 지시한다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기(기록되는 바이트의 수)
ploRequest -> pvOutBuffer
기록된 바이트수를 지시한다(UNIT64).
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, UgaFwGetPersistentDataSize, UgaFwGetPersistentData를 또한 참고한다.
UgaFwSetPowerState는 설정 OK인 경우 프로브(probe) 처리되거나, 프로브를 취소하거나, 디바이스 전력 상태를 설정한다(프로브를 행한다).
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
UGA_POWER_REQUEST 객체를 지시한다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
디바이스는 UgaPrProbe와 UgaPrCommit 또는 UgaPrCancel 요구 사이에서 아이들 상태를 유지하여야 한다. 이 방법은 UgaPrCommit 요구를 실패할 수 없다.
UgaFwGetChildDevice를 또한 참고한다.
UgaFwSetVideoMode는 비디오 모드를 설정한다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
UGA_VIDEO_MODE 객체를 지시한다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
이 방법은 열거된 UgaDtOutputController 디바이스에 사용된다.
요구되는 픽셀 깊이 및 칼라 순서(작은 엔디언(endian))
16bpp-RGB 565
32bpp-xRGB
추가 UGA 어댑터에서는 60Hz의 800x600x32bpp가 지원되어야 한다. 이 모드는 집적된 비디오 실시에 대한 옵션이다.
UgaFwGetChildDevice, UgaFwGetEdidSegment를 또한 참고한다.
UgaFwStartDevice는 전력을 on 상태로 하고 다른 UGA 펌웨어 방법이 그 디바이스와 사용될 수 있을 때 디바이스 객체와 연관된 디바이스를 그 상태로 초기화한다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
사용되지 않는다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwStartDevice 코드는 없앨 수 없다. 이는 부트 처리의 POST/INIT 기간 동안 펌웨어에 의해 사용되지만, 다른 시간에도, 예를 들면 다중-모니터 초기화 동안이나 전력 관리 싸이클 동안에도 사용될 수 있다.
UgaFwGetChildDevice를 또한 참고한다.
UgaFwStopDevice는 UGA 디바이스를 중단시킨다. 이는 pDevice와 연관된 모든 자원을 소거하는 것을 담당한다 - pDevice는 꺼진다.
이는 요구되는 방법이다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
ploRequest -> ioRequestCode
UGA IO 요구 코드
ploRequest -> pvInBuffer
사용되지 않는다.
ploRequest -> ui64InBufferSize
입력 버퍼의 바이트 크기
ploRequest -> pvOutBuffer
사용되지 않는다.
ploRequest -> ui64OutBufferSize
출력 버퍼의 바이트 크기
ploRequest -> ui64BytesReturned
복귀시 출력 버퍼의 바이트수
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice를 또한 참고한다.
Part 3
가상 기계 인터페이스
가상 기계 인터페이스는 시스템 펌웨어(부트 시간) 및 운영 시스템(런 타임)에 의해 노출된다. UGA 펌웨어는 런 타임 환경으로부터 기본 서비스를 요구하는데 이 인터페이스를 사용한다. UGA-VM 스터브는 UGA 펌웨어 코드가 링크되는 UGAVMXXX.LIB 정적 라이브러리의 일부로 포함된다.
3.1 가상 머신 인터페이스 - 상수 및 데이터 타입
VmlBtPrivateInterface는 시스템 펌웨어에 OEM/IHV 특정 요구를 전달하고 UGA와 시스템 펌웨어 사이에서 자유 포맷의 데이터를 교환하는 방법을 제공한다. 이 방법은 부트 시간에만 이용가능하고 OS 런 타임에는 VM으로부터 주어지지 않는다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한디바이스 객체를 갖는다.
ploRequest
UGA IO 요구 패킷을 지시한다.
pvInBuffer
IHV/OEM 정의
ui64InBufferSize
입력 버퍼의 바이트 크기
pvOutBuffer
IHV/OEM 정의
ui64OutBufferSize
출력 버퍼의 바이트 크기
pui64BytesReturned
복귀시 출력 버퍼의 바이트수를 지시한다.
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, UgaFwBtPrivateInterface를 또한 참고한다.
VmlCopySystemMemory는 시스템 메모리의 소스 위치로부터 시스템 메모리의 목적지 위치로 데이터를 복사한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvDestination
시스템 메모리의 목적지 위치를 지시한다.
pvSource
복사되는 데이터의 시스템 메모리 위치를 지시한다.
ui64Length
복사되는 바이트의 수를 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
pvDestination과 pvSource는 시스템 메모리의 어드레스를 지시하여야 한다. 이 기능은 디바이스의 물리적인 메모리를 억세스하는데 사용될 수 없다. Source+Length는 Destination과 오버랩될 수 없다.
UgaFwGetChildDevice, VmlPciAllocateCommonBuffer, VmlPciMapSystemMemory, VmlPciReadDeviceMemory, VmlPciWriteDeviceMemory를 또한 참고한다.
VmlGetDeviceContext는 pDevice에 의해 지시된 디바이스 객체와 연관된 IHV 정의 디바이스 지정 문맥을 복귀시킨다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ppvDeviceContext
디바이스 문맥에 대한 포인터의 저장을 지시한다.
복귀값
UGA 펌웨어 상태 코드
설명
UGA 펌웨어는 패어런트 디바이스의 UgaFwGetChildDevice 처리기에서 열거된 각 UGA 디바이스에 대한 디바이스 문맥의 크기를 지정한다. 차일드 디바이스의 디바이스 문맥 크기는 UGA_DEVICE_DATA.ui32DeviceContextSize 필드로 복귀된다.
UgaFwGetChildDevice, VmlGetSharedContext를 또한 참고한다.
VmlGetDeviceId는 pDevice에 의해 지시된 디바이스 객체와 연관된 IHV 정의 디바이스 지정 디바이스 ID를 복귀시킨다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pDeviceId
디바이스 ID값의 저장을 지시한다.
복귀값
UGA 펌웨어 상태 코드
설명
UGA 펌웨어는 패어런트 디바이스의 UgaFwGetChildDevice 처리기에서 열거된 각 UGA 디바이스에 대한 디바이스 ID를 지정한다. 차일드 디바이스의 디바이스 ID는 UGA_DEVICE_DATA.deviceId 필드로 복귀된다.
UgaFwGetChildDevice, VmlGetDeviceType을 또한 참고한다.
VmlGetDeviceType은 pDevice에 의해 지시된 디바이스 객체와 연관된 디바이스 종류를 복귀시킨다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pDeviceType
디바이스 종류 값의 저장을 지시한다.
복귀값
UGA 펌웨어 상태 코드
설명
UGA 펌웨어는 패어런트 디바이스의 UgaFwGetChildDevice 처리기에서 열거된
각 UGA 디바이스에 대한 디바이스 종류를 지정한다. 차일드 디바이스의 디바이스 종류는 UGA_DEVICE_DATA.deviceType 필드로 복귀된다.
UgaFwGetChildDevice, VmlGetDeviceId를 또한 참고한다.
VmlGetParentDevice는 pDevice에 의해 지시된 디바이스 객체와 연관된 디바이스의 패어런트 디바이스 객체에 대한 포인터를 복귀시킨다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ppParentDevice
패어런트 디바이스 객체에 대한 포인터의 저장을 지시한다.
복귀값
UGA 펌웨어 상태 코드
설명
UGA 런 타임 환경은 패어런트 디바이스에만 링크를 유지한다. UGA 펌웨어자체는 필요한 경우 디바이스 문맥에서 차일드 디바이스에 대한 링크를 유지할 수 있다(예를 들어, UgaFwStartDevice 처리기에서 패어런트 디바이스의 VmlGetParentDevice 및 VmlGetDeviceContext를 사용하여).
UgaFwGetChildDevice, UgaFwStartDevice, VmlGetDeviceContext, VmlGetParentDevice를 또한 참고한다.
VmlGetPersistentData는 자유 포맷의 IHV/OEM 정의 디바이스 구성 데이터를 복귀시킨다. 이 데이터는 시스템 펌웨어에 의해 비휘발성 aocpo에 저장되고, 재부트를 통해 지속된다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvBuffer
복귀시 디바이스의 지속적인 저장 영역으로부터 판독된 데이터를 포함한다.
ui32Offset
디바이스의 지속 저장 영역의 시작부로부터의 오프셋을 바이트로 지정한다.
ui32Length
디바이스의 지속 저장 영역에서 판독되는 데이터의 길이를 바이트로 지정한다.
복귀값
UGA 펌웨어 상태 코드
VmlGetPersistentDataSize, VmlSetPersistentData를 또한 참고한다.
VmlGetPersistentDataSize는 디바이스에 이용가능한 지속 저장 영역의 크기를 바이트로 복귀시킨다. 디바이스의 지속 저장 영역은 시스템 펌웨어와 하드웨어로 제공된다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pui32Size
복귀시 디바이스에 이용가능한 지속 저장 영역의 크기를 바이트로 포함한다.
복귀값
UGA 펌웨어 상태 코드
VmlGetPersistentData, VmlSetPersistentData를 또한 참고한다.
VmlGetSharedContext는 소정의 디스플레이 어댑터에서 UGA 펌웨어에 의해 열거된 모든 디바이스 사이에 공유되는 IHV 정의 문맥에 대한 포인터를 복귀시킨다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ppvSharedContext
공유 문맥에 대한 포인터의 저장을 지시한다.
복귀값
UGA 펌웨어 상태 코드
설명
UGA 펌웨어는 UgaFwGetChildDevice 처리에서 열거된 각 UGA 디바이스에 대해같은 크기의 공유 문맥을 지정하여야 한다. 공유 문맥 크기는 UGA_DEVICE_DATA.ui32SharedContextSize 필드로 복귀된다.
UgaFwGetChildDevice, VmlGetDeviceContext를 또한 참고한다.
VmlGetTimeStamp는 100ns 유닛으로 현재 시간 스탬프값을 복귀시킨다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pui64TimeStamp
시간 스탬프값의 저장을 지시한다.
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice를 또한 참고한다.
VmlGetVersion은 가상 기계 버전 정보를 복귀시킨다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pVmVersion
가상 기계 버전 정보의 저장을 지시한다.
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice를 또한 참고한다.
UgaFwGetEdidSegment는 디바이스의 EDID 데이터를 복귀시킨다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pl2cControl
UGA_I2C_CONTROL 구조에 대한 포인터를 지정한다. 호출자는 I2C 슬래이브 디바이스(모니터)에 의해 요구되는 I2C 지연과 재호출 루틴을 토글 처리하는 SDA(직렬 데이터) 및 SCL(직렬 클럭) 선에 대한 포인터로 이 구조의 필드를 초기화하여야 한다.
ui8Segment
0 기반의 EDID 세그먼트수를 지정한다. EDID 세그먼트는 항상 256 바이트이고, 하나 이상의 128 바이트 EDID, 하나의 256 바이트 EDID, 256 바이트 보다 큰 EDID 일부(기록시 존재하지 않는)를 포함하거나 EDID를 전혀 포함하지 않을 수 있다.
pvBuffer
복귀시 EDID 세그먼트 데이터를 포함한다.
pui32Length
복귀시 pvBuffer에 의해 지시된 버퍼에서 복귀되는 EDID 데이터 바이트의 수를 포함한다.
복귀값
UGA 펌웨어 상태 코드
설명
UGA_I2C_CONTROL, UgaFwGetChildDevice를 또한 참고한다.
VmlI2cRead는 I2C 슬래이브 디바이스로부터 데이터 블록을 판독한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pI2cControl
UGA_I2C_CONTROL 구조에 대한 포인터를 지정한다. 호출자는 I2C 슬래이브 디바이스에 의해 요구되는 I2C 지연 및 재호출 루틴을 토글 처리하는 SDA(직렬 데이터) 및 SCL(직렬 클럭) 선에 대한 포인터로 이 구조의 필드를 초기화하여야 한다.
pvBuffer
복귀시 I2C 슬래이브 디바이스로부터 판독된 데이터를 포함한다.
ui32Length
판독되는 데이터의 길이를 바이트로 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
UGA_I2C_CONTROL, UgaFwGetChildDevice, VmlI2cStart, VmlI2cStop, VmlI2cWrite를 또한 참고한다.
VmlI2cStart는 슬래이브 디바이스와의 I2C 통신을 초기화한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pI2cControl
UGA_I2C_CONTROL 구조에 대한 포인터를 지정한다. 호출자는 I2C 슬래이브디바이스에 의해 요구되는 I2C 지연 및 재호출 루틴을 토글 처리하는 SDA(직렬 데이터) 및 SCL(직렬 클럭) 선에 대한 포인터로 이 구조의 필드를 초기화하여야 한다.
복귀값
UGA 펌웨어 상태 코드
설명
UGA_I2C_CONTROL, UgaFwGetChildDevice, VmlI2cRead, VmlI2cWrite, VmlI2cStop을 또한 참고한다.
VmlI2cStop은 슬래이브 디바이스와의 I2C 통신을 초기화한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pI2cControl
UGA_I2C_CONTROL 구조에 대한 포인터를 지정한다. 호출자는 I2C 슬래이브 디바이스에 의해 요구되는 I2C 지연 및 재호출 루틴을 토글 처리하는 SDA(직렬 데이터) 및 SCL(직렬 클럭) 선에 대한 포인터로 이 구조의 필드를 초기화하여야 한다.
복귀값
UGA 펌웨어 상태 코드
설명
UGA_I2C_CONTROL, UgaFwGetChildDevice, VmlI2cStart, VmlI2cRead, VmlI2cWrite를 또한 참고한다.
VmlI2cWrite는 I2C 슬래이브 디바이스에 데이터 블록을 기록한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pI2cControl
UGA_I2C_CONTROL 구조에 대한 포인터를 지정한다. 호출자는 I2C 슬래이브 디바이스에 의해 요구되는 I2C 지연 및 재호출 루틴을 토글 처리하는 SDA(직렬 데이터) 및 SCL(직렬 클럭) 선에 대한 포인터로 이 구조의 필드를 초기화하여야 한다.
pvBuffer
I2C 슬래이브 디바이스에 기록된 데이터를 포함한다.
ui32Length
기록되는 데이터의 길이를 바이트로 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
UGA_I2C_CONTROL, UgaFwGetChildDevice, VmlI2cStart, VmlI2cStop, VmlI2cRead를 또한 참고한다.
VmlPciAllocateCommonBuffer는 DMA 동작을 위해 프로세서와 디바이스에서 모두 동시에 억세스가능하도록 인접하고 페이지 지정가능하지 않은 시스템 메모리를 할당하여 이를 맵핑시킨다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ui64Length
할당되는 메모리의 바이트수를 지정한다.
cachingType
요구되는 메모리에 허용되는 캐싱 종류를 나타내는 UGA_MEMORY_CACHING_TYPE 값을 지정한다. 펌웨어가 사용할 수 있는 가능한 값은:
UgaMcNonCached
요구되는 메모리가 프로세서에 의해 캐시 처리될 수 없다.
UgaMcCached
프로세서가 요구되는 메모리를 캐시 처리할 수 있다.
UgaMcWriteCombined
요구되는 메모리가 기록-조합 인에이블될 수 있다(프레임 버퍼에 전형적으로).
ppvHostAddress
복귀시 할당 범위의 기본 가상 어드레스를 포함한다.
pDeviceAddress
복귀시 할당 범위의 버스 전이 기본 물리적 어드레스를 포함한다.
복귀값
UGA 펌웨어 상태 코드
설명
VmlPciAllocateCommonBuffer는 프로세서와 디바이스로부터 이를 수 있는 시스템 메모리를 할당한다. 이 메모리는 디바이스에 인접하게 나타난다. 이 방법은 필요한 경우 맵 레지스터의 로딩을 포함하여 디바이스에 대한 전이를 설정한다.
VmlPciAllocateCommonBuffer는 요구되는 ui64Length에 관계없이 메모리 중 적어도 한 페이지를 할당한다. PAGE_SIZE 바이트 보다 적게 요구하는 성공적인 할당 이후에, 호출자는 요구되는 ui64Length만을 억세스할 수 있다. PAGE_SIZE 바이트의 정수배 보다 많게 요구하는 성공적인 할당 이후에, 마지막 할당 페이지에 남아있는 바이트는 호출자에 억세스가능하지 않다.
UGA 펌웨어가 수 개 페이지의 공통 버퍼 공간을 필요로 하지만, 페이지가 인접할 필요가 없으면, 드라이버는 하나의 큰 요구 대신에 VmlPciAllocateCommonBuffer에 수개의 1-페이지 요구를 이루어야 한다. 이 접근법은 인접한 메모리를 보존한다.
UgaFwGetChildDevice, VmlPciFreeCommonBuffer를 또한 참고한다.
VmlPciCopyDeviceMemory는 디바이스 메모리 블록의 내용을 한 위치에서 또 다른 위치로 복사한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ui8BarIndex
메모리나 IO 개구율(aperture)에 대해 PCI 구성 헤더의 BAR(Base Address Register)의 0 기반 인덱스를 지정한다. 모든 UGA MMIO 및 IO 동작은 BAR의 상대적인 어드레싱을 사용한다. 이 값에 대해 유효한 범위는 0-5이다.
ui64DestinationOffset
복사 동작의 목적지에 BAR 상대 오프셋을 지정한다.
ui64SourceOffset
복사 동작의 소스에 BAR 상대 오프셋을 지정한다.
ui64Count
실행되는 메모리 동작의 수를 지정한다.
dataWidth
메모리 동작의 폭을 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
소스 및 목적지 영역이 오버랩될 수 없다.
UgaFwGetChildDevice를 또한 참고한다.
VmlPciFlush는 디바이스에 알려진 모든 데이터를 플러시 처리한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice를 또한 참고한다.
VmlPciFreeCommonBuffer는 버퍼가 사용하는 모든 자원과 함께 VmlPciAllocateCommonBuffer에 의해 할당된 공통 버퍼를 자유롭게 한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvHostAddress
할당된 범위의 기본 가상 어드레스를 지정한다.
ui64Length
할당 해제되는 메모리의 바이트수를 지정한다.
cachingType
UGA_MEMORY_CACHING_TYPE 값을 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
VmlPciFreeCommonBuffer에 전해지는 매개변수는 VmlPciAllocateCommonBuffer로부터 복귀되어 그에 전해진 것들과 정확하게 정합되어야 한다. UGA 펌웨어는 할당된 공통 버퍼 부분을 자유롭게 할 수 없다.
UgaFwGetChildDevice, VmlPciAllocateCommonBuffer를 또한 참고한다.
VmlPciGetRomImage는 시스템 메모리에서 PCI 옵션 ROM의 복사에 억세스를 제공한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvOutputBuffer
복귀시 옵션 ROM 영상으로부터 판독된 데이터를 포함한다.
ui32Offset
옵션 ROM 영상의 시작부로부터의 오프셋을 바이트로 지정한다.
ui32Length
판독되는 옵션 ROM 영상의 길이를 바이트로 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice를 또한 참고한다.
VmlPciLockSystemMemory는 가상 어드레스 범위에 의해 맵핑된 물리적 페이지가 메모리에 위치하여 고정되게 한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvHostAddress
고정되는 메모리 블록의 가상 어드레스를 지정한다.
pui64Length
고정되는 메모리 블록의 길이를 바이트로 지정한다.
복귀시 이 동작에 의해 고정된 인접 물리적 메모리 블록의 길이를 포함한다. 복귀 길이는 pvAddress가 물리적 메모리에서 인접하지 않은 가상 어드레스 범위를 지시하는 경우 요구되는 것 보다 더 작아진다.
transferType
고정된 시스템 메모리 버퍼를 사용하여 실행되는 DMA 전달 종류를 지정한다. 유효한 값은 UgaMtSystemToVideo 및 UgaMtVideoToSystem이다.
pDeviceAddress
복귀시 고정된 메모리 범위의 버스 중계 기본 물리적 어드레스를 포함한다.
ppvMapping
복귀시 시스템 메모리 맵핑 정보를 지시한다. 이는 정합하는 VmlPciUnlockSystemMemory 호출과만 정합되어 사용되는 불투명한 데이터이다.
복귀값
UGA 펌웨어 상태 코드
설명
VmlPciLockSystemMemory는 PCI 디바이스에 볼 수 있는 일시적인 전달 버퍼를 할당한다. 이 경우, VmlPciLockSystemMemory는 UgaMtSystemToVideo 전달 동작을위해 pvHostAddress에 의해 지시된 버퍼의 내용을 그 일시적인 전달 버퍼에 복사하고, VmlPciUnlockSystemMemory는 일시 전달 버퍼의 내용을 UgaMtVideoToSystem 동작에 복사한다. 이중 버퍼링의 가능성 때문에, CPU가 소정의 전달 동작에 대해 정합하는 VmlPciLockSystemMemory와 VmlPciUnlockSystemMemory 사이에서 pvHostAddress에 의해 지시된 버퍼를 직접적으로 억세스하는 것은 불법이 된다.
pui64Length에서 복귀되는 길이가 초기값 보다 더 작으면, pvAddress는 복귀된 길이 만큼 진보될 수 있고, VmlPciLockSystemMemory는 다시 나머지 길이 동안 호출될 수 있다. 이 동작은 전체 메모리 영역이 성공적으로 고정될 때까지 반복될 수 있다. VmlPciLockSystemMemory에 대한 다수의 호출이 전체 메모리 영역을 고정시키는데 사용되어야 하면, 이는 가상 인접 메모리 영역이 다수의 분리된 인접 물리적 메모리 블록으로 맵핑됨을 의미한다. 이 경우, 다수의 맵핑값은 또한 ppvMapping 변수로 복귀된다. 호출자는 VmlPciUnlockSystemMemory에 대한 정합 호출로 이를 사용하기 위해 복귀된 모든 맵핑값을 저장하여야 한다.
UgaFwGetChildDevice, VmlPciUnlockSystemMemory를 또한 참고한다.
VmlPciMapDeviceloSpace는 디바이스 지정 물리적 IO 어드레스 범위를 페이지 표시되지 않은 시스템 공간에 맵핑한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ui8BarIndex
메모리나 IO 개구율에 대해 PCI 구성 헤더의 BAR(Base Address Register)의 0 기반 인덱스를 지정한다. 모든 UGA MMIO 및 IO 동작은 BAR의 상대적인 어드레싱을 사용한다. 이 값에 대해 유효한 범위는 0-5이다.
ui64Offset
맵핑되는 IO 범위에 대한 BAR 상대 기본 오프셋을 지정한다.
ui64Length
맵핑되는 IO 범위의 길이를 바이트로 지정한다.
cachingType
요구되는 메모리에 허용된 캐싱 종류를 나타내는 UGA_MEMORY_CACHING_TYPE 값을 지정한다. UGA 펌웨어가 사용할 수 있는 가능한 값은:
UgaMcNoncached
요구되는 메모리가 프로세서에 의해 캐시 처리될 수 없다.
UgaMcCached
프로세서는 요구되는 메모리를 캐시 처리할 수 있다.
UgaMcWriteCombined
요구되는 메모리는 기록-조합 인에이블될 수 있다(프레임 버퍼에 대해 전형적인).
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, VmlPciUnmapDeviceloSpace를 또한 참고한다.
VmlPciMapDeviceMemory는 페이지가 정해지지 않은 시스템 공간에 디바이스 특정 물리적 메모리 어드레스를 맵핑한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ui8BarIndex
메모리나 IO 개구율에 대해 PCI 구성 헤더의 BAR(Base Address Register)의0 기반 인덱스를 지정한다. 모든 UGA MMIO 및 IO 동작은 BAR의 상대적인 어드레싱을 사용한다. 이 값에 대해 유효한 범위는 0-5이다.
ui64Offset
맵핑되는 디바이스 메모리 범위에 대해 BAR 상대 기본 오프셋을 지정한다.
ui64Length
맵핑되는 디바이스 메모리 범위의 길이를 바이트로 지정한다.
cachingType
요구되는 메모리에 허용된 캐싱 종류를 나타내는 UGA_MEMORY_CACHING_TYPE 값을 지정한다. UGA 펌웨어가 사용할 수 있는 가능한 값은:
UgaMcNoncached
요구되는 메모리가 프로세서에 의해 캐시 처리될 수 없다.
UgaMcCached
프로세서는 요구되는 메모리를 캐시 처리할 수 있다.
UgaMcWriteCombined
요구되는 메모리는 기록-조합 인에이블될 수 있다(프레임 버퍼에 대해 전형적인).
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, VmlPciUnmapDeviceloMemory를 또한 참고한다.
VmlPciPollDeviceIoPort는 지정된 비트 패턴에 대해 디바이스 IO 포트를 선택한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvData
복귀시 선택된 IO 포트로부터 판독되는 마스크 처리되지 않은 최종값을 포함한다.
ui8BarIndex
메모리나 IO 개구율에 대해 PCI 구성 헤더의 BAR(Base Address Register)의 0 기반 인덱스를 지정한다. 모든 UGA MMIO 및 IO 동작은 BAR의 상대적인 어드레싱을 사용한다. 이 값에 대해 유효한 범위는 0-5이다.
ui64Offset
선택된 IO 포트의 BAR 상대 기본 오프셋을 바이트로 지정한다.
pvMask
선택된 IO 포트로부터 판독된 값과 AND 처리되는 마스크를 지시한다.
pvValue
선택된 IO 포트로부터 판독되는 값과 비교되고 pvMask에 의해 지시된 마스크와 AND 처리되는 값을 지시한다.
dataWidth
pvMask, pvValue, 및 pvData에 저장된 값과 선택된 IO 포트로부터 판독되는 값의 데이터폭을 지정한다.
ui64TimeOut
선택 동작에서 100ns 단위로 타임아웃값을 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
VmlPciPollDeviceIoPort는 타임아웃에 이르기 이전에 정합이 없을 때 UGA_STATUS_TIMEOUT을 복귀시킨다. 그렇지 않은 경우, VmlPciPollDeviceIoPort는 정합 패턴이 준비된 직후에 UGA_STATUS_SUCCESS를 복귀시킨다.
UgaFwGetChildDevice, VmlPciPollDeviceMemory를 또한 참고한다.
VmlPciPollDeviceMemory는 지정된 비트 패턴에 대해 디바이스 메모리 위치를 선택한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvData
복귀시 선택된 디바이스 메모리 위치로부터 판독되는 마스크 처리되지 않은 최종값을 포함한다.
ui8BarIndex
메모리나 IO 개구율에 대해 PCI 구성 헤더의 BAR(Base Address Register)의 0 기반 인덱스를 지정한다. 모든 UGA MMIO 및 IO 동작은 BAR의 상대적인 어드레싱을 사용한다. 이 값에 대해 유효한 범위는 0-5이다.
ui64Offset
선택된 메모리 디바이스의 BAR 상대 기본 오프셋을 바이트로 지정한다.
pvMask
선택된 디바이스 메모리 위치로부터 판독된 값과 AND 처리되는 마스크를 지시한다.
pvValue
선택된 디바이스 메모리 위치로부터 판독되는 값과 비교되고 pvMask에 의해 지시된 마스크와 AND 처리되는 값을 지시한다.
dataWidth
pvMask, pvValue, 및 pvData에 저장된 값과 선택된 디바이스 메모리 위치로부터 판독되는 값의 데이터폭을 지정한다.
ui64TimeOut
선택 동작에서 100ns 단위로 타임아웃값을 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
VmlPciPollDeviceMemory는 타임아웃에 이르기 이전에 정합이 없을 때 UGA_STATUS_TIMEOUT을 복귀시킨다. 그렇지 않은 경우, VmlPciPollDeviceMemory는 정합 패턴이 준비된 직후에 UGA_STATUS_SUCCESS를 복귀시킨다.
UgaFwGetChildDevice, VmlPciPollDeviceIoPort를 또한 참고한다.
VmlPciReadConfigurationSpace는 UGA 디바이스의 PCI 구성 헤더로부터 데이터를 판독한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvBuffer
복귀시 UGA 디바이스의 PCI 구성 헤더로부터 판독된 데이터를 포함한다.
ui32Offset
디바이스 구성 데이터의 시작부로부터의 오프셋을 바이트로 지정한다.
ui32Count
구성 공간 판독수를 지정한다.
dataWidth
구성 공간으로부터 판독되는 값의 데이터폭을 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, VmlPciWriteConfigurationSpace를 또한 참고한다.
VmlPciReadDeviceIoPort는 디바이스 IO 포트로부터 값을 판독한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvData
복귀시 IO 포트로부터 판독되는 값을 포함한다.
ui8BarIndex
메모리나 IO 개구율에 대해 PCI 구성 헤더의 BAR(Base Address Register)의 0 기반 인덱스를 지정한다. 모든 UGA MMIO 및 IO 동작은 BAR의 상대적인 어드레싱을 사용한다. 이 값에 대해 유효한 범위는 0-5이다.
ui64Offset
판독되는 IO 포트의 BAR 상대 오프셋을 바이트로 지정한다.
dataWidth
IO 포트로부터 판독되는 값의 데이터폭을 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, VmlPciReadDeviceMemory, VmlPciWriteDeviceIoPort, VmlPciWriteDeviceMemory를 또한 참고한다.
VmlPciReadDeviceMemory는 디바이스 메모리로부터 값을 판독한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvData
복귀시 디바이스 메모리로부터 판독된 데이터 블록을 포함한다. pvData에 의해 지시된 버퍼는 적어도 (dataWidth*ui64Count) 바이트 길이가 되어야 한다.
ui8BarIndex
메모리나 IO 개구율에 대해 PCI 구성 헤더의 BAR(Base Address Register)의 0 기반 인덱스를 지정한다. 모든 UGA MMIO 및 IO 동작은 BAR의 상대적인 어드레싱을 사용한다. 이 값에 대해 유효한 범위는 0-5이다.
ui64Offset
판독되는 디바이스 메모리의 BAR 상대 오프셋을 바이트로 지정한다.
dataWidth
디바이스 메모리로부터 판독되는 값의 데이터폭을 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, VmlPciReadDeviceIoPort, VmlPciWriteDeviceIoPort, VmlPciWriteDeviceMemory를 또한 참고한다.
VmlPciUnlockSystemMemory는 VmlPciLockSystemMemory에 의해 고정된 물리적 페이지를 해제시킨다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvHostAddress
해제되는 메모리 블록의 가상 어드레스를 지정한다.
ui64Length
해제되는 메모리 블록의 길이를 바이트로 지정한다.
pvMapping
VmlPciLockSystemMemroy에 의해 복귀되는 시스템 메모리 맵핑 정보를 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
VmlPciLockSystemMemory는 PCI 디바이스에 가시적인 임시 전달 버퍼를 할당할 수 있다. 이 경우 VmlPciLockSystemMemory는 UgaMtSystemToVideo 동작을 위해 pvHostAddress에 의해 지시되는 버퍼의 내용을 그 임시 전달 버퍼에 복사하고,VmlPciUnlockSystemMemory는 임시 전달 버퍼의 내용을 UgaMtVideoToSystem 동작에 복사한다. 이중 버퍼링의 가능성 때문에, 소정의 전달 동작 동안 정합되는 VmlPciLockSystemMemory와 VmlPciUnlockSystemMemory 사이에서 CPU가 pvHostAddress에 의해 지시된 버퍼를 직접적으로 억세스하는 것은 불법이다.
UGA 펌웨어는 고정된 인접 물리적 메모리 블록의 일부를 해제시킬 수 없다. 다수의 불연속 인접 물리적 메모리 블록에 맵핑된 인접한 가상 메모리 블록을 고정시키는데 다수의 호출이 사용되어야 하면, 호출자는 각 물리적 메모리 블록에 대응하는 pvHostAddress, ui64Length, 및 pvMapping을 통과하는 다중 블록의 물리적 메모리를 해제하는데 VmlPciUnlockSystemMemory에 대한 다수의 정합 호출을 사용하여야 한다.
UgaFwGetChildDevice, VmlPciLockSystemMemory를 또한 참고한다.
VmlPciUnmapDeviceIoSpace는 VmlPciMapDeviceIoSpace에 의해 맵핑된 디바이스 지정 물리적 IO 어드레스 범위를 맵핑 해제한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ui8BarIndex
메모리나 IO 개구율에 대해 PCI 구성 헤더의 BAR(Base Address Register)의 0 기반 인덱스를 지정한다. 모든 UGA MMIO 및 IO 동작은 BAR의 상대적인 어드레싱을 사용한다. 이 값에 대해 유효한 범위는 0-5이다.
ui64Offset
맵핑 해제되는 IO 범위의 BAR 상대 기본 오프셋을 지정한다.
ui64Length
맵핑 해제되는 IO 범위의 길이를 바이트로 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
VmlPciUnmapDeviceIoSpace에 전해진 매개변수는 VmlPciMapDeviceIoSpace로부터 복귀되어 전해진 것과 정확하게 정합되어야 한다. UGA 펌웨어는 맵핑된 디바이스 물리적 IO 범위의 일부를 맵핑 해제할 수 없다.
UgaFwGetChildDevice, VmlPciMapDeviceIoSpace를 또한 참고한다.
VmlPciUnmapDeviceMemory는 VmlPciMapDeviceMemory에 의해 맵핑된 디바이스 지정 물리적 메모리 어드레스 범위를 맵핑 해제한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ui8BarIndex
메모리나 IO 개구율에 대해 PCI 구성 헤더의 BAR(Base Address Register)의 0 기반 인덱스를 지정한다. 모든 UGA MMIO 및 IO 동작은 BAR의 상대적인 어드레싱을 사용한다. 이 값에 대해 유효한 범위는 0-5이다.
ui64Offset
맵핑 해제되는 디바이스 메모리 범위의 BAR 상대 기본 오프셋을 지정한다.
ui64Length
맵핑 해제되는 디바이스 메모리 범위의 길이를 바이트로 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
VmlPciUnmapDeviceMemory에 전해진 매개변수는 VmlPciMapDeviceMemory로부터 복귀되어 전해진 것과 정확하게 정합되어야 한다. UGA 펌웨어는 맵핑된 디바이스 물리적 IO 범위의 일부를 맵핑 해제할 수 없다.
UgaFwGetChildDevice, VmlPciMapDeviceMemory를 또한 참고한다.
VmlPciWriteConfigurationSpace는 UGA 디바이스의 PCI 구성 헤더에 데이터를 기록한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvBuffer
UGA 디바이스의 PCI 구성 헤더에 기록된 데이터를 지시한다.
ui32Offset
디바이스 구성 데이터의 시작부로부터의 오프셋을 바이트로 지정한다. VmlPciWriteConfigurationSpace는 이 오프셋으로부터 시작하여 디바이스 구성 데이터를 기록한다.
ui32Count
구성 공간 기록 회수를 지정한다.
dataWidth
구성 공간 기록 회수를 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, VmlPciReadConfigurationSpace를 또한 참고한다.
VmlPciWriteDeviceIoPort는 디바이스 IO 포트에 값을 기록한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvData
IO 포트에 기록되는 값을 지시한다.
ui8BarIndex
메모리나 IO 개구율에 대해 PCI 구성 헤더의 BAR(Base Address Register)의 0 기반 인덱스를 지정한다. 모든 UGA MMIO 및 IO 동작은 BAR의 상대적인 어드레싱을 사용한다. 이 값에 대해 유효한 범위는 0-5이다.
ui64Offset
기록되는 IO 포트의 BAR 상대 오프셋을 바이트로 지정한다.
dataWidth
IO 포트에 기록되는 값의 데이터폭을 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, VmlPciReadDeviceIoPort, VmlPciReadDeviceMemory,VmlPciWriteDeviceMemory를 또한 참고한다.
VmlPciWriteDeviceMemory는 디바이스 메모리에 데이터 블록을 기록한다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvData
디바이스 메모리에 기록되는 데이터 블록을 지시한다. pvData에 의해 지시된 버퍼는 적어도 (dataWidth*ui64Count) 바이트 길이가 되어야 한다.
ui8BarIndex
메모리나 IO 개구율에 대해 PCI 구성 헤더의 BAR(Base Address Register)의 0 기반 인덱스를 지정한다. 모든 UGA MMIO 및 IO 동작은 BAR의 상대적인 어드레싱을 사용한다. 이 값에 대해 유효한 범위는 0-5이다.
ui64Offset
기록되는 디바이스 메모리의 BAR 상대 기본 오프셋을 바이트로 지정한다.
ui64Count
ui64Offset에서 시작하여 실행되는 dataWidth 기록의 수를 지정한다.
dataWidth
디바이스 메모리에 기록되는 값의 데이터폭을 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
UgaFwGetChildDevice, VmlPciReadDeviceIoPort, VmlPciReadDeviceMemory, VmlPciWriteDeviceIoPort를 또한 참고한다.
VmlSetPersistentData는 자유 포맷의 IHV/OEM 정의 디바이스 구성 데이터를 기록한다. 이 데이터는 시스템 펌웨어에 의해 비휘발성 매체에 저장되고 재부트를 통해 지속된다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
pvBuffer
디바이스의 지속 저장 영역에 기록되는 데이터를 지시한다.
u32Offset
디바이스의 지속 저장 영역의 시작부로부터의 오프셋을 바이트로 지정한다.
ui32Length
디바이스의 지속 저장 영역에 기록되는 데이터의 길이를 바이트로 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
VmlGetPersistentDataSize, VmlGetPersistentData를 또한 참고한다.
VmlSleep은 지정된 수의 100ns 단위 동안 UGA 펌웨어 실행을 저지시킨다.
매개변수
pDevice
UgaFwGetChildDevice에 의해 열거된 디바이스와 연관된 디바이스 객체를 지정한다. UgaFwGetChildDevice에 의해 열거된 각 디바이스는 그와 연관된 유일한 디바이스 객체를 갖는다.
ui64Duration
100ns 단위의 수를 지정한다.
복귀값
UGA 펌웨어 상태 코드
설명
기존에 설정가능한 최소값은 10으로, 이는 10 보다 작거나 같은 기간 동안에 지연이 적어도 10*100ms = 1μs이 됨을 의미한다.
UgaFwGetChildDevice를 또한 참고한다.
[부록 B]
EFI-UGA 바인딩
EFI_UGA_IO_PROTOCOL
Part 1
EFI_UGA_IO_PROTOCOL
EFI_UGA_IO_PROTOCOL은 디스플레이 어댑터 펌웨어에 EFI 인터페이스를 제공하고, 이는 UGA 펌웨어 인터페이스 명세서와 호환가능하다. EFI 클라이언트 코드 실시를 간략화하기 위해, EFI_UGA_IO_PROTOCOL은 단일 UGA 펌웨어 급송 입구에 부가하여 CreateDevice 및 DeleteDevice 방법을 제공한다.
본 문서에 도시된 EFI_UGA_IO_PROTOCOL 실시 및 EFI_UGA 드라이버 바인딩 코드 샘플은 완전하게 일반적인 것으로, 디스플레이 하드웨어 설계에 무관하다. 이는 EFI 드라이버 라이브러리의 일부로 제공될 수 있다.
비디오 ROM은 EFI 1.1과 호환가능하도록 EFI_IO_PROTOCOL을 제공하여야 한다.
1.1 EFI_UGA_IO_PROTOCOL 방법
이 섹션은 EFI_UGA_IO_PROTOCOL 방법을 나열한다. 이 방법들은 UGA 디바이스 객체를 생성 및 초기화하고, UGA 디바이스 객체를 삭제하고, 또한 UGA 디바이스 객체에 I/O 요구 패킷을 전달하는데 사용된다.
EFI_UGA_IO_CREATE_DEVICE
EFI_UGA_IO_DELETE_DEVICE
EFI_UGA_IO_DISPATCH_SERVICE
EFI_UGA_IO_CREATE_DEVICE
EFI_UGA_IO_CREATE_DEVICE 방법은 UGA 디바이스 객체를 생성 및 초기화한다.
typedef
EFI_STATUS
(*EFI_UGA_IO_CREATE_DEVICE)(
IN EFI_UGA_IO_PROTOCOL *This,
IN UGA_DEVICE *ParentDevice
IN UGA_DEVICE_DATA *DeviceData
IN VOID *RunTimeContext,
OUT UGA_DEVICE **Device
);
매개변수
This
EFI_UGA_IO_PROTOCOL 구조를 지시한다.
ParentDevice
생성되는 디바이스의 패어런트에 대한 UGA_DEVICE 구조를 지시한다. NULL의 값은 생성된 디바이스 객체가 열거 근원임을 나타낸다; 즉, UgaDtParentBus 종류의 UGA 디바이스 객체(UGA_DEVICE_TYPE 열거를 참고)가 생성되어야 한다.
DeviceData
생성되는 디바이스에 대한 UGA 디바이스 데이터를 포함하는 UGA_DEVICE_DATA 구조를 지시한다.
RunTimeContext
생성되는 디바이스에 대한 런 타임 환경 지정 문맥을 포함하는 메모리 위치를 지시한다.
Device
생성되는 디바이스에 대해 UGA_DEVICE 구조의 어드레스를 수신하는 메모리 위치를 지시한다.
복귀값
이 방법은 표준 EFI 상태 코드를 복귀시킨다.
헤더
efiuga.h에서 선언된 것은 efiuga.h 및 uga.h를 포함한다.
설명
비디오 IHV는 이 방법을 실시하는데 필요하지 않다. 이는 EFI VML 정적 라이브러리에 포함된다. 더 상세한 실시 내용에 대해서는 섹션 2.1, EFI_UGA 바인딩 및 EFI_UGA_IO_PROTOCOL 실시 샘플을 참고한다.
EFI_UGA_IO_DELETE_DEVICE
EFI_UGA_IO_DELETE_DEVICE 방법은 EFI_UGA_IO_CREATE_DEVICE 방법에 이전 호출에서 생성된 UGA 디바이스 객체를 삭제한다.
typedef
EFI_STATUS
(*EFI_UGA_IO_DELETE_DEVICE)(
IN EFI_UGA_IO_PROTOCOL *This,
IN UGA_DEVICE *Device
);
매개변수
This
EFI_UGA_IO_PROTOCOL 구조를 지시한다.
Device
삭제되는 디바이스에 대해 UGA_DEVICE 구조를 지시한다.
복귀값
이 방법은 표준 EFI 상태 코드를 복귀시킨다.
헤더
efiuga.h에서 선언된 것은 efiuga.h 및 uga.h를 포함한다.
설명
비디오 IHV는 이 방법을 실시하는데 필요하지 않다. 이는 EFI VML 정적 라이브러리에 포함된다. 더 상세한 실시 내용에 대해서는 섹션 2.1, EFI_UGA 바인딩 및 EFI_UGA_IO_PROTOCOL 실시 샘플의 샘플 코드를 참고한다.
EFI_UGA_IO_DISPATCH_SERVICE
EFI_UGA_IO_DISPATCH_SERVICE 방법은 UGA 디바이스 객체에 UGA I/O 요구 패킷을 전달한다.
typedef
UGA_STATUS
UGA_FW_CALL_TYPE_API
(*EFI_UGA_IO_DISPATCH_SERVICE)(
IN UGA_DEVICE *Device,
IN UGA_IO_REQUEST IoRequest
);
매개변수
Device
열거된 UGA 디바이스와 연관된 디바이스 객체의 UGA_DEVICE 구조를 지시한다.
IoRequest
UGA I/O 요구 패킷을 포함하는 UGA_IO_REQUEST 구조를 지정한다.
복귀값
이 방법은 표준 UGA 상태 코드를 복귀시킨다.
헤더
efiuga.h에서 선언된 것은 efiuga.h 및 uga.h를 포함한다.
설명
비디오 IHV는 이 방법을 실시하여야 한다. 샘플 실시에 대해서는 섹션 2.2, UGA 펌웨어 인터페이스 실시 샘플을 참고한다.
이 방법은 메인 UGA 펌웨어 서비스 급송 루틴이다. 이 방법을 실시하는 것에 부가하여, 비디오 IHV는 IoRequest.ioRequestCode에 지정된 임의의 기능을 실시하여야 한다 (이 방법이 호출할 수 있는 기능들의 명칭 리스트에 대해서는 UGA_IO_REQUEST_CODE 열거를 참고한다).
1.2 EFI_UGA_IO_PROTOCOL 구조
이 섹션에 열거된 구조는 특정한 UGA 디바이스 객체에 대한 정보를 유지하도록 EFI_UGA_IO_PROTOCOL 방법에 의해 사용된다.
EFI_UGA_IO_PROTOCOL
EFI_UGA_IO_PROTOCOL_CONTEXT
EFI_UGA_IO_PROTOCOL
EFI_UGA_IO_PROTOCOL 구조는 UGA 디바이스를 생성하고, UGA 디바이스를 삭제하고, 또한 UGA 디바이스에 메시지를 전달하는데 사용되는 기능의 어드레스를 포함한다.
typedef struct_EFI_UGA_IO_PROTOCOL{
EFI_UGA_IO_CREATE_DEVICE CreateDevice;
EFI_UGA_IO_DELETE_DEVICE DeleteDevice;
EFI_UGA_IO_DISPATCH_SERVICE DispatchService;
}EFI_UGA_IO_PROTOCOL;
멤버
CreateDevice
UGA 디바이스 객체를 생성하는데 사용되는 기능을 지시한다.
DeleteDevice
UGA 디바이스 객체를 삭제하는데 사용되는 기능을 지시한다.
DispatchDevice
UGA 디바이스 객체에 메시지를 전달하는데 사용되는 기능을 지시한다.
헤더
efiuga.h에서 선언된 것은 efiuga.h를 포함한다.
EFI_UGA_IO_PROTOCOL_CONTEXT
EFI_UGA_IO_PROTOCOL_CONTEXT 구조는 PCI 비디오 어댑터와 연관된 처리와 함께, EFI_UGA_IO_PROTOCOL 구조의 정보를 포함한다.
typedef struct_EFI_UGA_IO_PROTOCOL_CONTEXT{
EFI_UGA_IO_PROTOCOL Protocol;
EFI_HANDLE Controller;
}EFI_UGA_IO_PROTOCOL_CONTEXT;
멤버
Protocol
EFI_UGA_IO_PROTOCOL 구조를 지정한다.
Controller
PCI 비디오 어댑터에 대한 처리이다. EFI 런 타임 환경이 이 값을 공급한다.
헤더
efiuga.h에서 선언된 것은 efiuga.h를 포함한다.
1.3 EFI_UGA_IO_PROTOCOL 상수
이 섹션은 EFI_UGA_IO_PROTOCOL 상수를 열거한다.
EFI_UGA_IO_PROTOCOL_GUID
EFI_UGA_IO_PROTOCOL_GUID
EFI_UGA_IO_PROTOCOL_GUID는 EFI_UGA_I/O 프로토콜에 대한 GUID이다.
#define EFI_UGA_IO_PROTOCOL_GUID\
{0x61a4d49e, 0x6f68, 0x4f1b, 0xb9, 0x22, 0xa8, 0x6e, 0xed, 0xb, 0x7,0xa2}
헤더
efiuga.h에서 선언된 것은 efiuga.h를 포함한다.
Part 2
실시 샘플
이 섹션은 EFI_UGA 바인딩 및 EFI_UGA_IO_PROTOCOL을 실시하는 방법을 설명하는 샘플 코드를 제공한다. 이 섹션은 또한 UGA 펌웨어 인터페이스 실시에 대한 샘플 코드를 제공한다.

Claims (30)

  1. UGA 하드웨어와 인터페이스 연결되는 UGA 가상 기계; 및
    상기 UGA 가상 기계를 통해 상기 UGA 하드웨어에 관련된 정보를 수신하는 UGA 하드웨어 발췌층(UGA hardware abstraction layer, UGA HAL) - 상기 UGA HAL은 상기 UGA 하드웨어의 상세 내용을 인터페이스로 발췌함 -
    을 포함하는 UGA(universal graphics adaptor) 시스템.
  2. 제1항에 있어서,
    상기 UGA 가상 기계는 펌웨어(firmware)로 실시되는 UGA 시스템.
  3. 제1항에 있어서,
    상기 UGA 가상 기계는 상기 UGA 하드웨어와 연관된 칩 상에 저장되는 UGA 시스템.
  4. 제1항에 있어서,
    상기 UGA HAL은 레지스터 인터페이스를 통해 VGA 하드웨어와 상호작용하도록 발췌된 방법을 실시하는 UGA 시스템.
  5. 제1항에 있어서,
    디바이스가 실행하는 서비스의 세트를 정의하는 UGA 펌웨어 인터페이스를 더 포함하는 UGA 시스템.
  6. 제5항에 있어서,
    상기 서비스의 세트는 전력 관리를 포함하는 UGA 시스템.
  7. 제5항에 있어서,
    상기 서비스의 세트는 디바이스 설명을 포함하는 UGA 시스템.
  8. 제5항에 있어서,
    상기 서비스의 세트는 데이터 통신을 포함하는 UGA 시스템.
  9. 제1항에 있어서,
    상기 UGA HAL과 상호작용하는 UGA 핵심 서비스를 더 포함하는 UGA 시스템.
  10. I/O 서비스 요구를 급송(dispatch)하는 방법에 있어서:
    UGA 클라이언트로부터 발췌된 문맥(context)을 수신하는 단계; 및
    UGA 펌웨어 인터페이스를 통해 상기 발췌된 문맥을 급송하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    상기 문맥이 유효한가 여부를 결정하는 단계를 더 포함하는 방법.
  12. 제10항에 있어서,
    상기 I/O 서비스 요구가 유효한가 여부를 결정하는 단계를 더 포함하는 방법.
  13. 제11항에 있어서,
    상기 문맥이 유효하지 않으면, 상태 코드를 발생하는 단계를 더 포함하는 방법.
  14. 제12항에 있어서,
    상기 I/O 서비스 요구가 유효하지 않으면, 상태 코드를 발생하는 단계를 더 포함하는 방법.
  15. 제10항에 있어서,
    UGA 하드웨어가 발췌된 UGA 서비스에 이용가능한가를 결정하는 단계를 더 포함하는 방법.
  16. 제15항에 있어서,
    이용가능한 VGA(video graphics adaptor) 하드웨어와 상호작용하도록 에뮬레이션(emulation)을 통해 상기 발췌된 UGA 서비스를 처리하는 단계를 더 포함하는 방법.
  17. 제15항에 있어서,
    상기 UGA 펌웨어 인터페이스 내에서 다음으로 낮은 레벨로 상기 서비스를 급송하는 단계를 더 포함하는 방법.
  18. 제17항에 있어서,
    서비스 루틴이 시동될 때까지 상기 UGA 펌웨어 인터페이스의 다음으로 낮은 레벨을 통해 반복되는 단계를 더 포함하는 방법.
  19. 출력 범위들을 협의하는 방법에 있어서:
    초기값들을 정하는 단계;
    디바이스의 판독을 통해 디바이스의 초기 범위들을 결정하는 단계;
    상기 디바이스가 처음 판독된 디바이스인가를 결정하고, 그런 경우, 판독된 데이터가 계승되는가 여부를 결정하고, 그런 경우, 판독된 초기 범위들을 출력 범위로 설정하는 단계
    를 포함하는 방법.
  20. 제19항에 있어서,
    판독된 데이터가 성공적이지 못하면, 치명적인 에러를 전하는 단계를 더 포함하는 방법.
  21. 제19항에 있어서,
    상기 디바이스의 판독이 성공적이지 못하면, 잠재적인 다음 디바이스를 식별하는 단계를 더 포함하는 방법.
  22. 제21항에 있어서,
    다음 디바이스로부터 설명 데이터를 판독하는 것을 용이하게 하도록 문맥을 정하는 단계를 더 포함하는 방법.
  23. 제19항에 있어서,
    상기 디바이스가 처음 판독된 디바이스가 아니지만 성공적으로 판독되었으면, 앞서 결정된 범위와 현재 판독되는 범위 사이에서 교차점을 찾는 단계를 더 포함하는 방법.
  24. 제19항에 있어서,
    설명 데이터가 판독되어야 하는 또 다른 디바이스가 있는가를 결정하는 단계를 더 포함하는 방법.
  25. 디바이스를 열거하는 방법에 있어서:
    초기 디바이스와 연관된 데이터를 획득하고 상기 디바이스와의 상호작용을 용이하게 하도록 문맥을 생성하는 단계;
    상기 초기 디바이스를 시작하는데 상기 문맥을 사용하는 단계;
    상기 디바이스가 시작될 수 있는가 여부를 결정하고, 그렇지 않은 경우, 상기 문맥을 패어런트(parent) 문맥으로 설정하는 단계; 및
    상기 초기 디바이스가 시작될 수 있으면, 차일드(child) 디바이스와 연관된 데이터를 획득하는 단계
    를 포함하는 방법.
  26. 제25항에 있어서,
    다수의 디바이스를 열거하도록 반복적으로 인가되는 단계를 더 포함하는 방법.
  27. 제25항의 방법을 사용하여 다수의 비디오 차일드 디바이스를 지원하는 UGA 펌웨어.
  28. 하드웨어와 인터페이스 연결되는 수단; 및
    펌웨어를 통해 표준 방식으로 상기 하드웨어의 상세 내용을 요약하여 발췌하는 수단
    을 포함하는 UGA 시스템.
  29. 제28항에 있어서,
    새로운 하드웨어를 지원하도록 상기 시스템을 업데이트하는 수단을 더 포함하는 UGA 시스템.
  30. 제28항에 있어서,
    VGA 하드웨어와 인터페이스 연결되는 수단을 더 포함하는 UGA 시스템.
KR1020020070099A 2001-12-13 2002-11-12 Uga 시스템, 펌웨어 및 시스템과, 입출력 서비스 요구 디스패치 방법, 출력 범위 협의 방법 및 디바이스 열거 방법 KR100973401B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US34114001P 2001-12-13 2001-12-13
US60/341,140 2001-12-13
US10/157,067 US6907482B2 (en) 2001-12-13 2002-05-29 Universal graphic adapter for interfacing with hardware and means for encapsulating and abstracting details of the hardware
US10/157,067 2002-05-29

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020090080648A Division KR100970821B1 (ko) 2001-12-13 2009-08-28 범용 그래픽 어댑터

Publications (2)

Publication Number Publication Date
KR20030051217A true KR20030051217A (ko) 2003-06-25
KR100973401B1 KR100973401B1 (ko) 2010-07-30

Family

ID=26853792

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020020070099A KR100973401B1 (ko) 2001-12-13 2002-11-12 Uga 시스템, 펌웨어 및 시스템과, 입출력 서비스 요구 디스패치 방법, 출력 범위 협의 방법 및 디바이스 열거 방법
KR1020090080648A KR100970821B1 (ko) 2001-12-13 2009-08-28 범용 그래픽 어댑터

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020090080648A KR100970821B1 (ko) 2001-12-13 2009-08-28 범용 그래픽 어댑터

Country Status (5)

Country Link
US (5) US6907482B2 (ko)
EP (1) EP1320067B1 (ko)
JP (1) JP4416390B2 (ko)
KR (2) KR100973401B1 (ko)
TW (1) TW583596B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100746025B1 (ko) * 2006-01-12 2007-08-06 삼성전자주식회사 운영체제 스위칭 장치 및 방법

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7143276B2 (en) * 2001-12-28 2006-11-28 Hewlett-Packard Development Company, L.P. Entrypoint discovery techniques in a bios entity
KR100524066B1 (ko) * 2003-02-08 2005-10-26 삼성전자주식회사 디바이스 대화창 표시방법 및 장치
US20040226025A1 (en) * 2003-05-09 2004-11-11 Beaudoin Denis R. Communications processor hardware abstraction layer
US20040243385A1 (en) * 2003-05-29 2004-12-02 Rothman Michael A. Emulation of hardware devices in a pre-boot environment
US7478141B2 (en) * 2003-06-26 2009-01-13 Intel Corporation Accessing firmware of a remote computer system using a remote firmware interface
US7188331B2 (en) * 2003-06-30 2007-03-06 Hewlett-Packard Development Company, L.P. Firmware development within a framework from different design centers depositing component(s) with related contextual and genealogy information in an accessible repository
US7356621B1 (en) * 2003-07-24 2008-04-08 Nvidia Corporation Method and system for transferring data between a requesting program and a hardware device
TWI238349B (en) * 2003-08-07 2005-08-21 Tatung Co Ltd Method for reading and modifying configuration parameters of display
US7825915B2 (en) 2004-02-03 2010-11-02 Intel Corporation Codec control
US7383137B2 (en) * 2004-02-27 2008-06-03 Intel Corporation Method and apparatus for measuring absolute and net power consumption for computer systems
US7898533B2 (en) 2004-04-30 2011-03-01 Microsoft Corporation Video presenting network configuration solution space traversal
US7903045B2 (en) 2004-04-30 2011-03-08 Microsoft Corporation Video presenting network supporting separately-configurable resources
US8581803B2 (en) * 2004-04-30 2013-11-12 Microsoft Corporation Video presenting network management
US7679612B2 (en) * 2004-04-30 2010-03-16 Microsoft Corporation Configuration goals via video presenting network
CN101031882B (zh) * 2004-06-08 2010-09-08 达尔特设备互操作有限公司 用于通用设备互操作性平台的设备组招募和内容再现的体系结构、装置和方法
TW200614066A (en) * 2004-10-29 2006-05-01 Hon Hai Prec Ind Co Ltd Method for automatically modifying the refresh rate
US7549154B2 (en) * 2004-11-23 2009-06-16 Microsoft Corporation Extensible architecture for auxiliary displays
US7567565B2 (en) 2005-02-01 2009-07-28 Time Warner Cable Inc. Method and apparatus for network bandwidth conservation
US7784065B2 (en) * 2005-02-07 2010-08-24 Microsoft Corporation Interface for consistent program interaction with auxiliary computing devices
TWI284812B (en) * 2005-03-24 2007-08-01 Via Tech Inc Mode support system and method
US8170065B2 (en) 2006-02-27 2012-05-01 Time Warner Cable Inc. Methods and apparatus for selecting digital access technology for programming and data delivery
US8718100B2 (en) 2006-02-27 2014-05-06 Time Warner Cable Enterprises Llc Methods and apparatus for selecting digital interface technology for programming and data delivery
US8458753B2 (en) 2006-02-27 2013-06-04 Time Warner Cable Enterprises Llc Methods and apparatus for device capabilities discovery and utilization within a content-based network
US7916755B2 (en) * 2006-02-27 2011-03-29 Time Warner Cable Inc. Methods and apparatus for selecting digital coding/decoding technology for programming and data delivery
US7721080B2 (en) * 2006-06-30 2010-05-18 Intel Corporation Management of option ROM
US20080209031A1 (en) * 2007-02-22 2008-08-28 Inventec Corporation Method of collecting and managing computer device information
US20080229046A1 (en) * 2007-03-13 2008-09-18 Microsoft Corporation Unified support for solid state storage
US20080235746A1 (en) 2007-03-20 2008-09-25 Michael James Peters Methods and apparatus for content delivery and replacement in a network
US7761701B2 (en) * 2007-03-26 2010-07-20 Intel Corporation Component firmware integration in distributed systems
US20090033668A1 (en) * 2007-07-31 2009-02-05 Pederson Douglas A Display EDID emulator system and method
US20090079687A1 (en) * 2007-09-21 2009-03-26 Herz Williams S Load sensing forced mode lock
US9110624B2 (en) * 2007-09-21 2015-08-18 Nvdia Corporation Output restoration with input selection
US9071859B2 (en) 2007-09-26 2015-06-30 Time Warner Cable Enterprises Llc Methods and apparatus for user-based targeted content delivery
US8561116B2 (en) 2007-09-26 2013-10-15 Charles A. Hasek Methods and apparatus for content caching in a video network
US20090144046A1 (en) * 2007-09-28 2009-06-04 Rothman Michael A Method to encapsulate an option rom for operation in multiple firmware and platform architectures
US8099757B2 (en) 2007-10-15 2012-01-17 Time Warner Cable Inc. Methods and apparatus for revenue-optimized delivery of content in a network
US9489209B2 (en) * 2008-01-23 2016-11-08 Hewlett-Packard Development Company, L.P. Bios graphical setup engine
US7934030B1 (en) 2008-02-14 2011-04-26 Western Digital Technologies, Inc. Disk drive comprising code segments for interfacing with a component such as a read channel
JP4605231B2 (ja) * 2008-02-15 2011-01-05 ソニー株式会社 電子機器、表示システム、送信方法及び表示方法
US8813143B2 (en) 2008-02-26 2014-08-19 Time Warner Enterprises LLC Methods and apparatus for business-based network resource allocation
WO2010002396A1 (en) * 2008-07-01 2010-01-07 Hewlett-Packard Development Company, L.P. Virtualizing a video controller
US8248421B2 (en) * 2008-09-30 2012-08-21 Apple Inc. DisplayPort control and data registers
US9866609B2 (en) 2009-06-08 2018-01-09 Time Warner Cable Enterprises Llc Methods and apparatus for premises content distribution
US20100321395A1 (en) * 2009-06-18 2010-12-23 Apple Inc. Display simulation system and method
US20120017072A1 (en) * 2009-07-14 2012-01-19 Kurt David Gillespie Modifying a video resolution of video data in a pre-operating system environment
US11277598B2 (en) * 2009-07-14 2022-03-15 Cable Television Laboratories, Inc. Systems and methods for network-based media processing
US9104252B2 (en) * 2010-02-12 2015-08-11 Microsoft Technology Licensing, Llc Assignment of control of peripherals of a computing device
US8370550B2 (en) 2010-02-12 2013-02-05 Microsoft Corporation Rule-based assignment of control of peripherals of a computing device
US20110298816A1 (en) * 2010-06-03 2011-12-08 Microsoft Corporation Updating graphical display content
US8410994B1 (en) 2010-08-23 2013-04-02 Matrox Graphics Inc. System and method for remote graphics display
US8490116B2 (en) * 2010-12-17 2013-07-16 Phoenix Technologies Ltd. Emulating legacy video using UEFI
US9348618B2 (en) * 2012-03-14 2016-05-24 Aclara Meters Llc Systems and methods for enhancing firmware
US9854280B2 (en) 2012-07-10 2017-12-26 Time Warner Cable Enterprises Llc Apparatus and methods for selective enforcement of secondary content viewing
US9131283B2 (en) 2012-12-14 2015-09-08 Time Warner Cable Enterprises Llc Apparatus and methods for multimedia coordination
US9495723B2 (en) * 2013-08-09 2016-11-15 Nvidia Corporation Scale-up techniques for multi-GPU passthrough
US20150145875A1 (en) 2013-11-27 2015-05-28 Aashish Pangam Command scheduler for a display device
US10062147B1 (en) * 2014-09-16 2018-08-28 American Megatrends, Inc. Scaling a fixed font used by a firmware interface
CN104469547B (zh) * 2014-12-10 2017-06-06 西安理工大学 一种基于树状运动目标轨迹的视频摘要生成方法
US9940688B2 (en) * 2015-06-04 2018-04-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Video adapter alignment
DE102016106557A1 (de) 2016-04-11 2017-10-12 Festool Gmbh Hand-Werkzeugmaschine mit einem Antriebsmotor
US10687115B2 (en) 2016-06-01 2020-06-16 Time Warner Cable Enterprises Llc Cloud-based digital content recorder apparatus and methods
US10911794B2 (en) 2016-11-09 2021-02-02 Charter Communications Operating, Llc Apparatus and methods for selective secondary content insertion in a digital network
US11109290B2 (en) 2017-08-04 2021-08-31 Charter Communications Operating, Llc Switching connections over frequency bands of a wireless network
GB201718259D0 (en) * 2017-11-03 2017-12-20 Densitron Tech Limited Hardware independent peripheral control system and method
US10939142B2 (en) 2018-02-27 2021-03-02 Charter Communications Operating, Llc Apparatus and methods for content storage, distribution and security within a content distribution network
CN110275716A (zh) * 2019-06-27 2019-09-24 深圳开立生物医疗科技股份有限公司 设备部署方法及装置、设备运行方法及电子设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109504A (en) * 1989-12-29 1992-04-28 Texas Instruments Incorporated Graphics program adaptor
JPH05173753A (ja) * 1991-12-26 1993-07-13 Toshiba Corp 表示制御方式
JP2760731B2 (ja) * 1992-04-30 1998-06-04 株式会社東芝 グラフィックス互換性を可能にする高性能グラフィックスアダプタ用外部インターフェース回路
KR100265934B1 (ko) * 1997-04-18 2000-09-15 윤종용 컴퓨터의 비디오 바이오스 체크 장치 및 체크방법
US6049316A (en) * 1997-06-12 2000-04-11 Neomagic Corp. PC with multiple video-display refresh-rate configurations using active and default registers
US6282646B1 (en) * 1998-05-08 2001-08-28 Apple Computer, Inc. System for real-time adaptation to changes in display configuration
JP3582382B2 (ja) * 1998-11-13 2004-10-27 株式会社日立製作所 マルチディスプレイ装置の表示制御装置、表示装置及びマルチディスプレイ装置
US6697033B1 (en) * 2000-11-28 2004-02-24 Ati International Srl Method and system for changing a display device on a computer system during operation thereof

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100746025B1 (ko) * 2006-01-12 2007-08-06 삼성전자주식회사 운영체제 스위칭 장치 및 방법

Also Published As

Publication number Publication date
EP1320067B1 (en) 2015-03-25
US20090313392A1 (en) 2009-12-17
US20050160191A1 (en) 2005-07-21
KR100973401B1 (ko) 2010-07-30
KR100970821B1 (ko) 2010-07-16
TW200303484A (en) 2003-09-01
US7562161B2 (en) 2009-07-14
JP2003196223A (ja) 2003-07-11
US20040249989A1 (en) 2004-12-09
US7552244B2 (en) 2009-06-23
JP4416390B2 (ja) 2010-02-17
KR20090097144A (ko) 2009-09-15
US6907482B2 (en) 2005-06-14
EP1320067A1 (en) 2003-06-18
US20070276967A1 (en) 2007-11-29
US7257650B2 (en) 2007-08-14
US20040230705A1 (en) 2004-11-18
TW583596B (en) 2004-04-11
US7917662B2 (en) 2011-03-29

Similar Documents

Publication Publication Date Title
KR100970821B1 (ko) 범용 그래픽 어댑터
US6185677B1 (en) Automatic generation of ACPI source language for peripheral resource configuration
US6487656B1 (en) System and method for providing functionalities to system BIOS
US20020099863A1 (en) Software support layer for processors executing interpreted language applications
US20040230963A1 (en) Method for updating firmware in an operating system agnostic manner
US6272627B1 (en) Method and apparatus for booting up a computing system with enhanced graphics
EP1879107A2 (en) System, method and computer readable medium for virtual machine instantiation
US20100275205A1 (en) Computer machine and access control method
JP2003527654A (ja) 自動的デバイスドライバコンフィギュレーション用方法、システム及びコンピュータ読取可能格納媒体
US20090265708A1 (en) Information Processing Apparatus and Method of Controlling Information Processing Apparatus
JP2002502515A (ja) Guiウインドウに含まれるデータを捕捉し、処理し、ルーティングする装置および方法
BRPI0617793A2 (pt) atualizações de controlador de vìdeo que dispensam reinicialização
US8429678B1 (en) Redirecting video to a remote client using a service processor
US7757012B2 (en) Configurable mapping of devices to bus functions
US7124226B2 (en) Method or apparatus for establishing a plug and play (PnP) communication channel via an abstraction layer interface
US6389591B1 (en) Method and apparatus for determining preferred controls for an upgradable operating system
US7228263B2 (en) Method for representing root busses using object oriented abstractions
US20050273525A1 (en) Dynamic I/O disabling systems and methods
Kim et al. Development of a Frame Buffer Driver for Embedded Linux Graphic System
JP2010039644A (ja) 周辺デバイスの動作検証方法、デバイスドライバ・プログラム及びアプリケーション・プログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
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: 20130628

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140627

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee