KR20080053289A - 원격 시스템을 위한 플러그 앤드 플레이 장치 재지정 - Google Patents

원격 시스템을 위한 플러그 앤드 플레이 장치 재지정 Download PDF

Info

Publication number
KR20080053289A
KR20080053289A KR1020087005658A KR20087005658A KR20080053289A KR 20080053289 A KR20080053289 A KR 20080053289A KR 1020087005658 A KR1020087005658 A KR 1020087005658A KR 20087005658 A KR20087005658 A KR 20087005658A KR 20080053289 A KR20080053289 A KR 20080053289A
Authority
KR
South Korea
Prior art keywords
driver
client computer
server computer
computer
client
Prior art date
Application number
KR1020087005658A
Other languages
English (en)
Other versions
KR101292936B1 (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 KR20080053289A publication Critical patent/KR20080053289A/ko
Application granted granted Critical
Publication of KR101292936B1 publication Critical patent/KR101292936B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • G06F9/4413Plug-and-play [PnP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/2807Exchanging configuration information on appliance services in a home automation network
    • H04L12/2814Exchanging control software or macros for controlling appliance services in a home automation network

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Automation & Control Theory (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Abstract

원격 액세스 시스템은 서버 컴퓨터와 하나 이상의 클라이언트 컴퓨터를 연결하는데, 여기서 장치는 클라이언트 컴퓨터에 연결된다. 장치는 클라이언트 컴퓨터에 의해 인식되고 장치 드라이버는 각각의 연결되고 인식된 장치를 지원한다. 서버 컴퓨터에서 가상 드라이버는 장치에 특정한 정보로부터 생성되어, 서버 컴퓨터상의 애플리케이션에서 가상 드라이버가 실제 드라이버처럼 동작하게 된다. 애플리케이션은 가상 드라이버를 통하여 연결된 장치를 인식하고 연결된 장치에 명령을 전달할 수 있다.
재지정, 재지정기, 플러그 앤드 플레이 장치, 원격 시스템, 가상 드라이버

Description

원격 시스템을 위한 플러그 앤드 플레이 장치 재지정{PLUG AND PLAY DEVICE REDIRECTION FOR REMOTE SYSTEMS}
본 특허 문서는 35 U.S.C 119(e) 조항에 의한 미국 가출원 특허 제 60/716,025호 (2005년 9월 9일자)의 출원일의 우선권을 주장하며, 그 전체가 참조로서 본 명세서에 포함되어 있다.
마이크로소프트 코포레이션(Microsoft Corporation)이 제공하는 터미널 서비스TM(Terminal ServiceTM) 시스템과 같은 원격 클라이언트 액세스 플랫폼 및 시스템은 애플리케이션 서버 또는 서버(서버 컴퓨터)에 상주하고 애플리케이션 서버 또는 서버(서버 컴퓨터)에 의해 호스팅되는 애플리케이션 프로그램을 컴퓨터(사용자)가 원격으로 액세스하는 것을 가능하게 해준다. 원격 클라이언트 액세스 시스템에서, 클라이언트 컴퓨터는 통상적으로 서버 컴퓨터에 의존하여 상주 애플리케이션 프로그램을 통해 기능성 컴퓨팅을 제공한다. 애플리케이션 프로그램의 예시는 워드 프로세싱, 멀티미디어 및 데이터 관리 프로그램을 포함한다.
서버 컴퓨터는 호스트 컴퓨터 또는 터미널 서버로 지칭될 수 있다. 일정한 경우, 다수의 서버 컴퓨터가 존재할 수 있다. 클라이언트 컴퓨터는 원격 터미널, 원격 클라이언트, 또는 씬 클라이언트(thin client)로 지칭될 수 있다. 클라이언트 컴퓨터는 주로 사용자와 장치 입/출력 간의 상호 작용인 사용자 인터페이스로 사용되지만, 많은 경우 로컬 장치(들)가 클라이언트 컴퓨터에 부착되고 서버 컴퓨터에 의해 액세스된다.
클라이언트 컴퓨터상의 소프트웨어는 통상적으로 범용적이거나 애플리케이션에 특화되어 있지 않으며, 일반적으로 운영 시스템 및 원격 클라이언트 액세스 환경을 지원하는 소프트웨어를 포함하는 범용 소프트웨어로 구성된다. 서버 컴퓨터의 소프트웨어는 통상적으로 멀티미디어, 이미징, 데이터베이스 액세스, 워드 프로세싱 및 기타 유형의 애플리케이션과 같은 특별한 기능성을 제공하는 특수 목적 소프트웨어를 포함한다. 클라이언트 컴퓨터와 서버 컴퓨터 간에 전달되는 데이터는 대개 클라이언트 컴퓨터에 위치한 하드웨어 장치와 관련된 명령 및 데이터뿐만 아니라 그래픽 데이터, 키스트로크, 마우스 이동 등과 같은 사용자 인터페이스와 관련된 데이터 및 명령들도 포함한다.
서버 컴퓨터 및 클라이언트 컴퓨터는 통상적으로 마이크로소프트 코포레이션에 의해 정의된 원격 데스크톱 프로토콜(remote desktop protocol; RDP)과 같은 사전 정의된 통신 프로토콜을 사용하여 상호 간에 정보를 전달하거나 넘겨준다. 인터넷 프로토콜 (TCP/IP)상의 전송 제어 프로토콜과 같은 하위 레벨 네트워크 또한 포함된다.
원격 클라이언트 액세스 시스템의 장점은 대부분의 기능 및 연산이 서버 컴퓨터에서 수행되기 때문에 클라이언트 컴퓨터가 상대적으로 적은 전력을 소모할 수 있다는 것이다. 비록 서버 컴퓨터는 보통 통상적인 데스크톱 컴퓨터보다 고가이지만, 하나의 애플리케이션 서버는 다수의 저가의 클라이언트 컴퓨터를 지원(service)할 수 있다.
몇몇 원격 클라이언트 액세스 시스템의 또 다른 장점은 데이터가 서버 컴퓨터의 물리적 기억 장소에 상주할 수 있고, 상대적으로 느린 클라이언트 컴퓨터로의 통신 링크를 통해 전송될 필요 없이 그 기억 장소에서 애플리케이션 프로그램에 의해 처리될 수 있다는 것이다 - 클라이언트의 물리적 기억 장소에는 오직 사용자 인터페이스만이 구현된다.
클라이언트 컴퓨터는 유니버설 시리얼 버스(USB) 또는 파이어 와이어(IEEE 1394) 포트와 같은 하나 이상의 로컬 또는 주변 하드웨어 장치가 부착될 포트를 포함한다. 이러한 장치는 USB 키보드의 경우와 같은 사용자 인터페이스와 관련될 수 있다. 서버 컴퓨터에서 실행되는 애플리케이션은 이러한 로컬 클라이언트 장치와 상호 작용하고 로컬 클라이언트 장치를 액세스할 필요가 있는 경우가 많다. 로컬 또는 주변 장치의 예에는 오디오 레코더, 디지털 카메라, 문서 스캐너, 외부 디스크 드라이브 및 매체 판독기가 있다. 이런 장치는 포트에 연결되기만 하면 사용가능하게 되기 때문에 때때로 플러그 앤드 플레이(plug and play) 또는 PNP 장치로 지칭된다.
통상적인 윈도우즈®(Windows®) 기반의 데스크톱 환경에서 로컬 애플리케이션은 드라이버 스택(driver stack)으로 지칭되는 일련의 드라이버들을 통해 로컬 장치와 통신한다. 드라이버 스택은 특히 장치의 PNP 성능을 촉진하는데 사용된다. 조직화하고 재사용 가능하게 하기 위하여 드라이버 스택의 구성 요소간에 서로 다른 책임을 분배할 수 있다. 예를 들어, 어떤 드라이버들은 모든 로컬 장치 또는 로컬 장치의 어떤 일반적인 부류에 범용적이어서 다수의 서로 다른 장치와 통신하는데 사용되거나 재사용될 수 있다. 다른 드라이버들은 일정한 장치에 특화된 기능을 구현하고, 보통 이러한 일정 장치를 동반하도록 설계된다. 통상적으로, 이러한 문제는 개개의 사례에 따라 처리된다. 예를 들어 해당 소프트웨어 드라이버는 로컬 장치를 지원하기 위하여 로컬 머신 또는 클라이언트 컴퓨터 상에 설치된다. 서로 다른 복수의 장치에 있어서 서로 다른 하드웨어 장치에 서로 다른 소프트웨어를 정확하게 제공하는 데에 문제가 발생한다.
일정한 경우에 사용자는 특정한 장치가 연결되어 있는 클라이언트 컴퓨터와 동일한 컴퓨터를 사용하지 않고 있으나 그 장치를 액세스하거나 사용하길 원할 수 있다. 사용자가 또 다른 클라이언트 컴퓨터로부터 원격으로 작업할 때가 이러한 경우일 수 있다. 나아가, 서버 컴퓨터가 하나 이상의 클라이언트 컴퓨터 또는 사용자에 로컬 장치로의 액세스를 제공하는 것이 바람직할 수도 있다. 따라서, 원격 클라이언트 액세스 시스템에서 특정 원격 클라이언트 컴퓨터의 장치는 다른 원격 클라이언트 컴퓨터가 그 장치를 액세스할 수 있도록 서버 컴퓨터에 로컬로 연결된 것처럼 보이는 것이 바람직하다.
장치는 클라이언트 컴퓨터에 로컬로 연결되고 인식되며, 장치 드라이버는 드라이버 스택의 일부분으로서 클라이언트 컴퓨터에 설치되어 클라이언트 컴퓨터에 연결되는 각각의 장치를 지원한다. 장치의 연결은 서버 컴퓨터에서 가상 드라이버(virtual driver)를 생성하는데 쓰일 정보와 함께 서버 컴퓨터에 전달된다. 가상 드라이버는 서버 컴퓨터에 상주하는 애플리케이션에 의해 인식된다. 그러면 서버 컴퓨터로부터의 명령은 가상 드라이버를 통해 장치로 전달되고 장치 드라이버로 되전송될 수 있어 서버 컴퓨터가 장치를 제어하는 것이 가능하게 된다.
이 설명은 이하의 실시예에서 상세히 기술될 개념의 선택을 단순화한 형태로 소개하기 위하여 제공된다. 이 설명은 본 발명의 기본적인 특징 또는 필수불가결한 특징을 파악하고자 하는 것이 아니고, 본 발명의 권리 범위를 결정하는 보조 수단으로 사용되고자 하는 것도 아니다.
상세한 설명은 첨부된 도면을 참조하여 기술된다. 도면에서 참조 번호의 가장 좌측 숫자는 참조 번호가 최초로 나타난 도면을 나타낸다. 동일한 참조 번호를 서로 다른 도면에 사용하는 것은 유사하거나 동일한 항목임을 나타낸다.
도 1은 원격 클라이언트 컴퓨터에 연결된 플러그 앤드 플레이 장치를 지원하는 가상 드라이버를 구비한 서버 컴퓨터를 포함하는 원격 클라이언트 액세스 시스템을 도시하는 도면이다.
도 2는 서버 컴퓨터 및 클라이언트 컴퓨터를 도시하고 서버 컴퓨터 및 클라이언트 컴퓨터의 드라이버 스택을 도시하는 도면이다.
도 3은 서버 컴퓨터상에서 가상 드라이버를 생성하는 과정을 도시하는 흐름 도이다.
도 4는 클라이언트 컴퓨터 장치가 서버 컴퓨터에 재지정(redirection)하는 과정을 도시하는 흐름도이다.
도 1은 원격 클라이언트 액세스 시스템 또는 원격 시스템(100)을 나타낸다. 원격 시스템(100)은 서버 컴퓨터(102) 및 하나 이상의 클라이언트 컴퓨터(104)를 포함한다. 특히 서버 컴퓨터(102)는 플러그 앤드 플레이(PNP) 장치 또는 PNP 재지정기(redirector) 및 클라이언트 컴퓨터에 로컬로 연결된 장치를 지원하고 촉진하는 가상 장치 드라이버를 포함한다.
이 예시에서는 단일 클라이언트 컴퓨터(104)가 도시되어 있지만, 다른 구현에서 복수의 클라이언트 컴퓨터가 포함될 수도 있다. 서버 컴퓨터(102)는 클라이언트 컴퓨터(104)에 연결된 로컬 장치(108)의 제어 및 액세스를 서버 컴퓨터(102)로 지정하거나 재지정하여 서버 컴퓨터(102)가 로컬 장치(108)를 액세스하고 제어할 수 있다. 원격 시스템(100)은 복수의 클라이언트 컴퓨터(예: 클라이언트 컴퓨터(104))가 기능을 제공하는 모든 또는 일정 애플리케이션 프로그램에 대하여 서버 컴퓨터(102)에 의존하는 마이크로소프트 코포레이션이 제공하고 정의한 터미널 서비스TM시스템일 수 있다.
네트워크(110)는 서버 컴퓨터(102) 및 클라이언트 컴퓨터(104)를 연결한다. 네트워크(110)는 유선 기반 기술 및 무선 기술을 모두 포함하는 네트워크 환경을 지원하는 다양한 방법으로 구현될 수 있다. 본 발명의 특징은 하나의 특정한 네트워크 아키텍쳐 또는 네트워크 기술에 제한되지 않는다. 원격 시스템(100)은 모뎀을 통한 직통 다이얼업(direct dialup), 기업용 LAN(local area network; 구내 정보 통신망), WAN(wide area network; 광역 통신망) 및 인터넷을 포함하는 서로 다른 아키텍쳐를 나타낸다. 네트워크(110)는 서버 컴퓨터(102)를 하나 이상의 클라이언트 컴퓨터(예: 클라이언트 컴퓨터(104))에 연결한다. 나아가, 서버 컴퓨터(102)와 클라이언트 컴퓨터(104) 간의 네트워크(108) 연결은 인터넷 프로토콜(TCP/IP) 상의 전송 제어 프로토콜과 같은 전송 프로토콜을 구현할 수 있다.
서버 컴퓨터(102)는 마이크로 소프트 코포레이션이 제공하는 윈도우즈® 서버 2003(Windows® Server 2003) 운영 체제와 같은 운영 체제를 탑재한 형태로 구현될 수 있다. 서버 컴퓨터(102) 및 클라이언트 컴퓨터(104)는 상호간에 데이터 또는 정보를 전달하기 위하여(즉, 통신하기 위하여) 마이크로소프트 코포레이션에 의해 정의된 원격 데이터 프로토콜(RDP)과 같은 통신 프로토콜을 실행할 수 있다. 이러한 통신 프로토콜, 특히 RDP의 사용은 터미널 서비스TM시스템과 같은 원격 클라이언트 액세스 시스템 환경 내에서 실행될 수 있다.
게다가 서버 컴퓨터(102) 및 클라이언트 컴퓨터(104)로의 통신은 RDP 상에서 전달되는 입출력 요청 패킷(I/O request packet; IRP), 특히 입출력 제어 코드(I/O control code; IOCTL code)로 일컬어지는 IRP의 특정 그룹을 사용할 수 있다. 특히 서버 컴퓨터(102)에 상주하는 애플리케이션 프로그램은 IRP를 실행하여 로컬 장 치(108)와 통신할 수 있다. IRP는 하나 이상의 로컬 장치(108)에 대한 요청을 포함하는 애플리케이션 프로그램으로부터 생성된 통신 데이터일 수 있다. 애플리케이션 프로그램은 IOCTL 코드 내의 물리적 장치 객체(physical device object ; PDO)로써 로컬 장치를 식별할 수 있는데, 여기서 각각의 특정 장치(108)는 특정 PDO에 의해 식별된다. 이하에 기술된 바와 같이 실제 장치 드라이버는 로컬 장치(108)에 대한 PDO를 생성할 수 있다.
클라이언트 컴퓨터(104)는 범용 PC(personal compuer; 개인용 컴퓨터), 랩톱 PC, 태블릿 PC 등일 수 있고 마이크로소프트 코포레이션에서 나온 윈도우즈® 상표(brand)의 운영 체제와 같은 운영 체제를 실행할 수 있다. 클라이언트 컴퓨터(104)는 서버 컴퓨터(102)와 주로 인터페이스로 접속하여 클라이언트 컴퓨터(104)에 로컬로 저장되지 않는 파일 또는 기타 정보(예: 애플리케이션 서버 컴퓨터(102)에 상주하는 애플리케이션 프로그램)를 액세스하는 자립형 컴퓨터(standalone computer)이다.
클라이언트 컴퓨터(104)는 로컬 장치(108)와 같은 PNP 장치와 연결되는 하나 이상의 장치 포트를 탑재한다. 장치 포트는 현존하는 (즉, 유산과 같은) 표준 및 향후의 표준을 지원하는 USB 1.0, 1.1 및 2.0 그리고 파이어 와이어(IEEE1394) 포트를 포함한다. 특히, 장치 포트는 로컬 장치(108)의 클라이언트 컴퓨터(104)로의 연결을 가능하게 해준다. 로컬 장치(108)는 디지털 카메라, 비디오 카메라, 하드 디스크 저장 장치, 디지털 매체 레코더, 프린터, 스캐너 등을 포함하지만 이에 제 한되지는 않는다. 서버 컴퓨터(102)는 PNP 재지정기 및 가상 장치 드라이버(106)를 포함한다. 특히, 이하에 상세히 설명된 바와 같이 PNP 재지정기는 클라이언트 컴퓨터에 의해 하나 이상의 로컬 장치(108)의 연결에 대하여 통지받거나 감지하도록 구성된다. 가상 장치 드라이버는 서버 컴퓨터(102)에서 생성되어 클라이언트 컴퓨터(104)에서 발견된 실제 장치 드라이버의 기능을 수행한다.
도 2는 서버 컴퓨터(102) 및 클라이언트 컴퓨터(104)의 예시적인 드라이버 스택을 나타낸다. 드라이버 스택은 서버 컴퓨터(102)에 상주하는 애플리케이션(202)에 로컬 장치(108)의 명령 및 제어를 수행할 것을 지시하는데 사용될 수 있는 예시적인 구성이다. 특히, 특정 로컬 장치(108)에 특화된 원격 서비스 드라이버 또는 가상 드라이버(204)는 컴퓨터(102)의 드라이버 스택의 일부분으로서 생성되거나 제공된다.
서버 컴퓨터(102)는 처리 장치(processing unit) 또는 프로세서(206) 및 기억 장치 시스템 또는 메모리(208)를 포함한다. 프로세서(206)는 메모리(208) 및 서버 컴퓨터(102) 드라이버 스택의 구성 요소와 같은 서버 컴퓨터(102)의 구성 요소를 제어하거나 액세스하도록 구성된다. 비록 본 예시는 메모리(208)가 서버 컴퓨터(102) 드라이버 스택으로부터 분리된 것으로 설명하고 있지만, 다른 구현에서는 이하에 상세히 설명된 바와 같이 서버 컴퓨터(102) 드라이버 스택의 구성 요소가 메모리(208)에 포함될 수 있음을 예상할 수 있다.
서버 컴퓨터(102)의 드라이버 스택은 다음의 구성 요소 또는 계층을 포함하는 것으로 생각될 수 있으며, 서버 컴퓨터에서 애플리케이션(202)은 드라이버 스택 의 최상위 레벨의 구성요소 또는 계층으로 간주된다. 애플리케이션(202)은 다양한 멀티미디어, 이미징, 데이터베이스 액세스, 워드 프로세싱 및 기타 유형의 애플리케이션을 포함한다. 애플리케이션(202)은 애플리케이션 서비스(210)의 일부분이거나 애플리케이션 서비스에 연결될 수 있다. 애플리케이션 서비스(210)는 호환 계층(compatibility layer; 212)을 포함하거나 호환 계층에 연결된다. 호환 계층(212)은 윈도우즈® 휴대 장치(Windows® portability device; WPD) 형식과 같은 형식을 구현한 특정 로컬 장치를 지원할 때 구현될 수 있다.
애플리케이션 서비스(210) 또는 호환 계층(212)은 상위 레벨 필터 드라이버 또는 재지정기(214)와 통신한다. 재지정기(214)는 운영 체제(OS) 또는 커널, OS 명령을 애플리케이션 서비스(210) 또는 호환 계층(212)으로 반사하거나 재지정하는 기반 구성 요소(즉, 드라이버)일 수 있다. 나아가 본 구현에서 재지정기(214)는 가상 드라이버(204)와 통신하는데 사용된다.
가상 드라이버(204)는 특히 로컬 장치(108)를 지원하고 클라이언트 컴퓨터(104)의 드라이버 스택과 통신하기 위하여 생성된다. 가상 드라이버(204)는 호스트 프로세스(216) 내에 포함될 수도 있지만, 본 예시에서는 가상 드라이버(204)는 서버 컴퓨터(102)의 드라이버 스택의 일부분으로서 호스트 프로세스(216)로부터 분리되어 있고 호스트 프로세스와 통신한다. 호스트 프로세스(216)는 PNP 재지정기(218)와 통신한다.
PNP 재지정기(218)는 특히 가상 드라이버(204)가 처음 생성되었을 때 클라이 언트 컴퓨터(104)로부터의 통신을 지원한다. 특히 PNP 재지정기(218)는 클라이언트 컴퓨터(104)에 연결되고 클라이언트 컴퓨터로부터 재지정될 장치(즉, 로컬 장치(108))들을 열거하거나 파악한다. PNP 재지정기(218)는 서버 컴퓨터(102) 및 클라이언트 컴퓨터(104) 간의 IRP 기반 통신을 지원하는 재지정 라이브러리를 포함하거나 액세스할 수 있다. IRP 기반 통신에서는 가상 채널이 사용될 수 있다. PNP 재지정기(218)는 장치를 표시하는 특정한 PDO를 생성할 수 있다. 특히 PDO는 통신에 서버 컴퓨터(102)와 클라이언트 컴퓨터(104)간의 IRP 전달이 수반될 때 생성된다. 장치가 클라이언트 컴퓨터(104)로부터 분리될때 마다, PNP 재지정기는 특정 PDO를 소멸시킬 수 있다.
애플리케이션(202)과 로컬 장치(108)간의 통신에서, 가상 드라이버(204)는 원격 서비스 클라이언트 애플리케이션(220)과 직접적으로 통신한다. 원격 서비스 클라이언트 애플리케이션(220)은 클라이언트 컴퓨터(104)와 같은 클라이언트 컴퓨터에서 터미널 서비스TM에 의해 구현된 프로세스와 같은 원격 프로세스일 수 있다. 원격 서비스 클라이언트 애플리케이션(220)은 주로 클라이언트 컴퓨터(104)와 서버 컴퓨터(102)간의 통신을 제공하는데 사용된다.
클라이언트 컴퓨터(104)는 서버 컴퓨터(102)와 유사하게 처리 장치 또는 프로세서(222) 및 기억 장치 시스템 또는 메모리(224)를 포함한다. 프로세서(222)는 메모리(224) 및 클라이언트 컴퓨터(104)의 드라이버 스택의 구성요소 및 메모리(224)와 같은 클라이언트 컴퓨터(104) 구성 요소를 제어하거나 액세스하도록 구 성된다. 본 예시는 메모리(208)가 구성요소 또는 클라이언트 컴퓨터(104)의 드라이버 스택으로부터 분리된 것으로 설명하고 있지만, 다른 구현에서는 클라이언트 컴퓨터(104)의 드라이버 스택의 구성 요소는 이하에서 상세하게 설명된 바와 같이 메모리(224)에 포함될 수 있음을 예상할 수 있다.
원격 서비스 클라이언트 애플리케이션(220)은 클라이언트 컴퓨터(104)의 드라이버 스택의 최상위 계층 또는 구성 요소로 간주될 수 있다. 호스트 프로세스(226)는 드라이버 스택 내의 원격 서비스 클라이언트 애플리케이션(222)의 하부에 있다. 호스트 프로세스(226)는 로컬 장치(108)를 촉진하는 드라이버와 제공하거나 생성하고 그 드라이버와 통신하는 클라이언트 컴퓨터(104)내의 상주 애플리케이션일 수 있다. 본 예시에서 로컬 장치(106)에 특화된 실제 장치 드라이버(228)는 호스트 프로세스(226)에 의해 생성되거나 제공된다.
PNP 장치를 지원하는 통상적인 드라이버 스택에서, 로컬 장치(108)는 실제 장치 드라이버(228)와 같은 장치 드라이버에 배타적으로 의존하여 드라이버 스택을 따라 데이터를 전달하고 넘겨준다. 본 구현에서 실제 장치 드라이버(228) 또한 로컬 장치(108)에 통신을 제공하지만, 실제 장치 드라이버(228)처럼 동작하는 가상 드라이버(204)가 서버 컴퓨터(102), 특히 애플리케이션(202)에 로컬 장치(108)를 제어하거나 액세스하는 능력을 제공한다.
상위 레벨 필터 드라이버 또는 재지정기(230)는 클라이언트 컴퓨터(104)의 드라이버 스택에 포함된다. 재지정기(230)는 (원격 클라이언트 애플리케이션(220)을 통하여) 가상 드라이버(204)로부터 로컬 장치(108)로의 통신을 가능하게 해준 다. 클라이언트 컴퓨터(104)의 드라이버 스택은 버스 드라이버(234)와 통신하는 OS 레벨 또는 커널 드라이버(232)를 포함한다. 버스 드라이버(234)는 호스트 컨트롤러 드라이버(236)와 통신한다. 로컬 장치(108) 및 기타 PNP 장치들은 호스트 컨트롤러(238)와 연결된 포트를 통해 클라이언트 컴퓨터(104)와 연결된다. 그 다음, 호스트 컨트롤러(238)는 호스트 컨트롤러 드라이버(236)를 통하여 클라이언트 컴퓨터(104)의 드라이버 스택을 거쳐 통신한다.
로컬 장치(108)와 같은 새로운 장치가 클라이언트 컴퓨터(104)에 꽂히거나 연결될 때마다 실제 장치 드라이버(228)와 같은 장치 드라이버가 설치된다. 실제 장치 드라이버(228)는 새롭게 발견된 장치 또는 로컬 장치(108)에 결부된 것이다. 이제 드라이버 스택 내의 애플리케이션은 장치(즉, 로컬 장치)를 액세스하거나 사용할 수 있다. 이러한 애플리케이션은 호스트 프로세스(226)를 포함할 수 있다. 실제 장치 드라이버(228)가 생성될 때, 가상 드라이버(204) 또한 생성된다. 가상 드라이버(204)의 생성은 애플리케이션(202)이 로컬 장치(108)를 인식하는 것을 가능하게 해준다.
서버 컴퓨터(102)로부터 클라이언트 머신(104)으로의 애플리케이션(202)과 실제 장치 드라이버(202) 간의 통신은, 가상 드라이버(204)가 실제 장치 드라이버(228)를 대신하여 동작하도록 재지정된다. 한 번 가상 드라이버(204)와 애플리케이션(202)간의 관계가 성립되면, 가상 드라이버(204)와 애플리케이션(202) 간의 통신은 실제 장치 드라이버(228)로 전달된다. 전달된 실제 장치 드라이버(228)로의 통신은 로컬 장치가 예상된 방식으로 동작하는 것을 가능하게 한다. 바꾸어 말 하면, 클라이언트 컴퓨터(104)의 장치 스택이 생성될 때 일정한 호스트 프로세스(226)로의 명령 또는 통신과 같은 명령 또는 통신이 실제 장치 드라이버(228)를 통과할 것을 예상할 수 있다.
로컬 장치(108)가 서버 컴퓨터(102)로, 특히 애플리케이션(202)으로 재지정될 때 다음의 일련의 이벤트가 발생할 수 있다. 로컬 장치(108)가 클라이언트 컴퓨터(104)상에 꽂힌다; 장치 드라이버(즉, 커널 드라이버(232), 재지정기(230) 및 실제 장치 드라이버(228))가 로딩된다; 애플리케이션(202)에 통지가 전송된다. 클라이언트 컴퓨터(104)는 로컬 장치(108)를 인식하고 PNP 재지정기(218)에 정보를 전송하는데, PNP 재지정기(218)에서 정보는 가상 장치 드라이버(204)를 생성하는데 사용된다. 가상 드라이버(204)가 생성되고 원격 서비스 클라이언트 애플리케이션(220)에 의해 통신 링크가 성립된다. 애플리케이션(202)에 새롭게 발견된 로컬 장치(108) 및 생성되고 설치된 실제 장치 드라이버(228)가 통지된다. 그리고 나서 애플리케이션(220)은 가상 드라이버(204)에 입/출력을 전송하고 가상 드라이버는 이를 원격 서비스 클라이언트 애플리케이션에 전달하고 원격 서비스 클라이언트 애플리케이션은 이를 실제 장치 드라이버(228)에 전달한다. 만일 클라이언트 하드웨어(예를 들어, 장치(108))가 뽑히거나 클라이언트 컴퓨터(104)와 서버 컴퓨터 간의 연결이 끊어지면 가상 드라이버(204)는 서버로부터 언로딩되고 모든 통신이 중단된다.
도 3은 서버 컴퓨터상의 가상 드라이버의 생성을 지원하는 과정(300)을 나타낸다. 과정(300)은 클라이언트 컴퓨터 및 서버 컴퓨터에 의해 프로토콜로서 구현 된다. 과정(300)은 하드웨어, 소프트웨어, 펌웨어 또는 그들의 조합 내에서 구현될 수 있는 일련의 동작을 나타내는 논리 흐름도 내의 블록의 집합으로서 도시된다. 소프트웨어적 맥락에서 이 블록들은 하나 이상의 프로세서에 의해 실행되었을 때 열거된 동작을 수행하는 컴퓨터 명령어를 나타낸다. 비록 흐름도로 기술되었지만, 어떤 블록은 동시에 수행되거나 다른 순서로 수행될 수도 있다. 과정(300)이 다른 아키텍쳐에 의해 구현될 수 있다고 할지라도 과정(300)은, 예를 들어, 도 2에 설명된 것처럼 도 1의 시스템(100) 및/또는 컴퓨터들(102 및 104)에 의해 구현될 수 있다.
블록(302)에서 새로운 하드웨어 장치(302)가 발견된다. 하드웨어 장치는 클라이언트 컴퓨터(104)에 연결된 로컬 장치(108)와 같은 클라이언트 컴퓨터에 연결된 플러그 앤드 플레이(PNP) 장치일 수 있다. 특정 장치는 클라이언트 컴퓨터(104)상에 상주하는 호스트 프로세스(226)와 같은 애플리케이션에 의해 발견되고 식별될 수 있다. 나아가, 로컬 장치(108)의 발견은 PNP 과정의 일부분일 수 있다.
블록(304)에서 클라이언트 컴퓨터(104)는 감지된 장치를 지원하기 위한 필요한 드라이버 또는 드라이버 스택을 로딩하거나 설치할 수 있다. 설치는 호스트 프로세스(226)에 의해 수행되거나 클라이언트 컴퓨터(104)에 상주하는 또 다른 애플리케이션에 의해 수행될 수 있다. 설치는 장치가 클라이언트 컴퓨터(104)에 연결될 때의 통상적인 PNP 장치 동작의 일부분일 수 있다. 드라이버는 장치 드라이버(예: 실제 장치 드라이버(228)), 상위 레벨 필터 드라이버(예: 재지정기(230)), 커널 드라이버(예: 커널 드라이버(232)) 및 버스 드라이버(예: 버스 드라이버(232)를 포함한다.
블록(306)에서 장치에 관련된 정보가 식별된다. 식별은 서버 컴퓨터와 클라이언트 컴퓨터 간의 통신을 지원하는 애플리케이션에 의해 수행된다. 원격 서비스 클라이언트 애플리케이션(220)은 이런 통신 애플리케이션의 예시이다. 통신은 RDP 상에서 전달되는 입출력 요청 패킷(I/O request packet; IRP), 특히 입출력 제어 코드(I/O control code; IOCTL code)로 일컬어지는 IRP의 특정 그룹과 같은 패킷을 사용할 수 있다. 장치는 또한 IOCTL 코드 내의 물리적 장치 객체(PDO)로써 식별될 수 있다.
블록(308)에서 장치 관련 정보가 서버 컴퓨터(102)로 전달된다. 정보는 서버 컴퓨터(102) 와 클라이언트 컴퓨터(104) 간의 통신을 제공하는 애플리케이션(예: 원격 서비스 클라이언트 애플리케이션(220))에 의해 전달될 수도 있다. 전달된 정보는 특히 서버 컴퓨터(102)에서 가상 드라이버(예: 가상 드라이버(204))를 생성하는데 사용되는데, 서버 컴퓨터(102)에서 가상 드라이버는 발견된 장치(예: 로컬 장치(108))에 특정되어 있다. 가상 드라이버는 애플리케이션(202)과 같은 애플리케이션 또는 애플리케이션 서비스(210)와 같은 서비스에 의해 생성될 수 있다.
도 4는 클라이언트 컴퓨터 장치의 서버 컴퓨터로의 재지정를 제공하는 과정(400)을 보여준다. 과정(400)은 클라이언트 컴퓨터 및 서버 컴퓨터에 의해 프로토콜로서 구현된다. 과정(400)은 하드웨어, 소프트웨어, 펌웨어 또는 그들의 조합 내에서 구현될 수 있는 일련의 동작을 나타내는 논리 흐름도 내의 블록의 집합으로서 도시된다. 소프트웨어적 맥락에서 이 블록들은 하나 이상의 프로세스에 의해 실행되었을 때 열거된 동작을 수행하는 컴퓨터 명령어를 나타낸다. 비록 흐름도로 기술되었지만, 어떤 블록은 동시에 수행되거나 다른 순서로 수행될 수도 있다. 과정(400)이 다른 아키텍쳐에 의해 구현될 수 있다고 할지라도 과정(400)은, 예를 들어, 도 2에 설명된 것처럼 도 1의 시스템(100) 및/또는 컴퓨터들(102 및 104)에 의해 구현될 수 있다.
블록(402)에서 가상 드라이버(예: 가상 드라이버(204))는 서버 컴퓨터(104)에서 생성된다. 가상 드라이버(204)는 서버 컴퓨터(102)에 의해 클라이언트 컴퓨터(예: 클라이언트 컴퓨터(104))로부터 수신되고 연결된 장치(예: 로컬 장치(108))를 기술하는 정보에 기초하여 생성된다. 가상 드라이버(204)는 서버 컴퓨터에서 애플리케이션(예: 애플리케이션(202))에 의해 인식되며, 애플리케이션에게 새로운 하드웨어 또는 새로운 장치가 부착되고 사용가능하게 되었음을 알려준다.
블록(404)에서 서버 컴퓨터(102)와 클라이언트 컴퓨터(104) 간의 통신이 성립한다. 통신은 가상 채널과 같은 통신 링크를 통하여 이루어질 수 있다. 특히, 서버 컴퓨터(102)로부터 클라이언트 컴퓨터(104)로의 통신은 클라이언트 컴퓨터에 상주하는 애플리케이션을 사용할 수 있는데, 여기서 애플리케이션은 가상 드라이버와 함께 입/출력 명령을 전달한다. 이러한 애플리케이션의 예시는 원격 서비스 클라이언트 애플리케이션(220)이다.
블록(406)에서 새롭게 생성된 장치 드라이버(예: 실제 장치 드라이버(228) 및 가상 장치 드라이버(204))를 인식함으로써 애플리케이션(202) 및 원격 서비스 클라이언트 애플리케이션(220)에 연결된 장치(108)의 사용 가능성이 통지된다.
블록(408)에서 애플리케이션(202)은 명령을 원격 서비스 클라이언트 애플리케이션(220)과 같은 애플리케이션에 전달하는 가상 장치 드라이버(204)를 통하여 입/출력 명령을 전달한다. 명령은 로컬 장치(108)가 클라이언트 컴퓨터(104)의 로컬 드라이버 스택을 통하여 예상대로 통신하는 것을 가능하게 해주는 실제 장치 드라이버(228)로 전달된다.
결론
상기에 기술된 방법 및 시스템은 가상 드라이버의 사용을 통한 서버 컴퓨터, 원격 클라이언트 컴퓨터 장치 장치에서의 지원을 기술하였다. 본 발명이 구조적인 특징 및/또는 방법론적인 동작에 있어서 특정한 언어로 기술되었지만, 첨부된 청구항에 정의된 본 발명의 권리 범위는 상기에 기술된 특정 특징과 동작에 한정되지 않는 것으로 이해될 것이다. 오히려, 상기에 기술된 특정 특징과 동작은 청구항을 구현하는 예시적인 형태로서 개시된 것이다.

Claims (20)

  1. 서버 컴퓨터에서 가상 드라이버를 생성하는 방법으로서,
    상기 가상 드라이버는 상기 서버 컴퓨터와 통신하는 클라이언트 컴퓨터에 연결된 장치에 특화된 것이고,
    상기 장치가 상기 클라이언트에 연결될 때 상기 장치를 발견하는 단계;
    상기 장치에 특화된 장치 드라이버를 설치하는 단계;
    상기 장치 드라이버 및 상기 장치에 연관된 정보를 식별하는 단계; 및
    상기 가상 드라이버를 생성하기 위해 상기 서버 컴퓨터에 상기 정보를 전달하는 단계
    를 포함하는 방법.
  2. 제 1항에 있어서,
    상기 발견 단계는 상기 클라이언트 컴퓨터에 상주하는 원격 액세스 애플리케이션에 의해 수행되는 방법.
  3. 제 1항에 있어서,
    상기 장치 드라이버를 설치하는 상기 단계는 상기 장치가 상기 클라이언트 컴퓨터에 연결되었을 때의 플러그 앤드 플레이(PNP) 장치 동작의 일부인 방법.
  4. 제 1항에 있어서,
    상기 장치 드라이버를 설치하는 상기 단계는 상기 장치를 지원하는 기타 드라이버를 설치하는 단계를 더 포함하는 방법.
  5. 제 1항에 있어서,
    정보를 식별하는 상기 단계는 상기 클라이언트 컴퓨터에 상주하는 원격 액세스 애플리케이션에 의해 수행되는 방법.
  6. 제 1항에 있어서,
    상기 식별 단계는 요청 패킷을 사용하고 상기 장치는 특정한 물리적 장치 객체에 의해 식별되는 방법.
  7. 제 1항에 있어서,
    상기 정보를 전달하는 상기 단계는 상기 서버 컴퓨터와 상기 클라이언트 컴퓨터 간의 전용 가상 채널을 사용하는 방법.
  8. 클라이언트 컴퓨터에서의 장치 제어를 서버 컴퓨터로 재지정(redirection)하는 방법으로서,
    상기 서버 컴퓨터에서 상기 장치에 특화된 가상 드라이버를 생성하는 단계;
    상기 가상 드라이버를 통하여 상기 클라이언트 컴퓨터와 서버 컴퓨터 간의 통신을 성립시키는 단계;
    상기 클라이언트 컴퓨터 및 상기 서버 컴퓨터 간의 상기 통신을 통해 상기 장치의 사용 가능성을 통지하는 단계; 및
    상기 장치의 상기 사용 가능성이 결정될 때, 상기 서버 컴퓨터로부터 상기 장치로 명령을 전달하는 단계
    를 포함하는 방법.
  9. 제 8항에 있어서,
    상기 가상 드라이버를 생성하는 상기 단계는, 상기 클라이언트 컴퓨터로부터 상기 서버 컴퓨터에 의해 수신된 상기 장치를 기술하는 정보에 기초하는 방법.
  10. 제 8항에 있어서,
    통신을 성립시키는 상기 단계는 전용 가상 채널을 통하여 이루어지는 방법.
  11. 제 8항에 있어서,
    상기 성립 단계는 상기 클라이언트 컴퓨터에 상주하는 원격 액세스 애플리케이션을 통하여 이루어지는 방법.
  12. 제 8항에 있어서,
    상기 장치의 상기 사용 가능성을 통지하는 상기 단계는 상기 클라이언트 컴 퓨터에 상주하는 원격 액세스 애플리케이션 및 상기 서버 컴퓨터에 상주하는 애플리케이션에 제공되는 방법.
  13. 제 8항에 있어서,
    명령을 전달하는 상기 단계는 상기 클라이언트 컴퓨터에 상주하는 실제 장치 드라이버에 상기 명령을 넘겨주는 단계를 포함하는 방법.
  14. 원격 액세스 시스템으로서,
    서버 컴퓨터;
    상기 서버 컴퓨터에 의해 지원받는 클라이언트 컴퓨터;
    상기 클라이언트 컴퓨터에 연결된 장치;
    상기 장치에 특화되고 상기 클라이언트 컴퓨터 내에 설치되는 장치 드라이버; 및
    상기 서버 컴퓨터 내의 애플리케이션과의 통신에 있어서 상기 장치 드라이버를 대신하여 동작하고 상기 장치에 기초하여 생성된 상기 서버 컴퓨터 내의 가상 드라이버를 포함하고, 상기 애플리케이션은 상기 가상 드라이버 및 상기 장치 드라이버에 명령을 제공하여 상기 장치를 제어하는 시스템.
  15. 제 14항에 있어서,
    상기 서버 컴퓨터는 상기 장치를 식별하는 재지정기를 포함하는 시스템.
  16. 제 15항에 있어서,
    상기 재지정기는 상기 서버 컴퓨터와 클라이언트 컴퓨터 간의 통신을 지원하는 재지정 라이브러리를 포함하는 시스템.
  17. 제 15항에 있어서,
    상기 클라이언트 컴퓨터는 상기 서버 컴퓨터와 클라이언트 컴퓨터 간의 통신을 지원하는 원격 서비스 애플리케이션을 포함하는 시스템.
  18. 제 15항에 있어서,
    상기 장치는 플러그 앤드 플레이(PNP) 장치인 시스템.
  19. 제 15항에 있어서,
    상기 장치가 상기 클라이언트 컴퓨터에 연결될 때 장치 드라이버가 기타 드라이버들과 함께 설치되는 시스템.
  20. 제 20항에 있어서,
    상기 서버 컴퓨터로부터의 상기 명령은 상기 클라이언트 컴퓨터 내에 설치된 상기 드라이버 스택을 통하여 전달되는 시스템.
KR1020087005658A 2005-09-09 2006-08-15 원격 시스템을 위한 플러그 앤드 플레이 장치 재지정 KR101292936B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US71602505P 2005-09-09 2005-09-09
US60/716,025 2005-09-09
US11/278,529 US8918530B2 (en) 2005-09-09 2006-04-03 Plug and play device redirection for remote systems
US11/278,529 2006-04-03
PCT/US2006/031708 WO2007032847A1 (en) 2005-09-09 2006-08-15 Plug and play device redirection for remote systems

Publications (2)

Publication Number Publication Date
KR20080053289A true KR20080053289A (ko) 2008-06-12
KR101292936B1 KR101292936B1 (ko) 2013-08-05

Family

ID=37856627

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087005658A KR101292936B1 (ko) 2005-09-09 2006-08-15 원격 시스템을 위한 플러그 앤드 플레이 장치 재지정

Country Status (6)

Country Link
US (2) US8918530B2 (ko)
EP (1) EP1941381A4 (ko)
JP (2) JP5133886B2 (ko)
KR (1) KR101292936B1 (ko)
CN (1) CN102819427B (ko)
WO (1) WO2007032847A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100137922A (ko) * 2009-06-23 2010-12-31 삼성전자주식회사 원격 컴퓨팅을 위한 중개 장치, 시스템, 및 가상 인터페이스 제공 방법
KR101428962B1 (ko) * 2014-01-29 2014-08-12 (주) 퓨전데이타 호환성이 강화된 프린터 리다이렉션 제어시스템 및 방법
US8843631B2 (en) 2009-12-08 2014-09-23 Samsung Electronics Co., Ltd. Dynamic local function binding apparatus and method

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8918530B2 (en) 2005-09-09 2014-12-23 Microsoft Corporation Plug and play device redirection for remote systems
US7600024B2 (en) * 2006-03-31 2009-10-06 Microsoft Corporation Restricting device access per session
US7788392B2 (en) * 2006-06-30 2010-08-31 Intel Corporation Mechanism for universal media redirection control
TWI421690B (zh) 2007-11-21 2014-01-01 Ind Tech Res Inst 智慧型遠端介面裝置、系統及其使用方法
US8789070B2 (en) 2007-12-06 2014-07-22 Wyse Technology L.L.C. Local device virtualization
US8010630B2 (en) * 2007-12-06 2011-08-30 Wyse Technology Inc. Local device redirection
US8793331B2 (en) * 2008-05-16 2014-07-29 Wyse Technology L.L.C. Multimedia redirection
US8645579B2 (en) * 2008-05-29 2014-02-04 Microsoft Corporation Virtual media device
JP5166307B2 (ja) * 2009-01-30 2013-03-21 株式会社立花エレテック 接続機器利用システムおよびその方法
WO2010138124A1 (en) * 2009-05-29 2010-12-02 Displaylink Corporation Loopback proxy
JP5369945B2 (ja) * 2009-07-08 2013-12-18 富士通株式会社 構成情報設定方法及び情報処理装置
US9104452B2 (en) * 2009-07-27 2015-08-11 Microsoft Technology Licensing, Llc Hybrid remote sessions
US8881140B1 (en) * 2009-09-04 2014-11-04 Symantec Corporation Systems and methods for virtualizing software associated with external computer hardware devices
US8554956B1 (en) 2010-02-24 2013-10-08 Open Invention Network Llc Method for creation of a device driver for a peripheral device
US8935434B1 (en) * 2010-02-24 2015-01-13 Open Invention Network, Llc Interconnection of peripheral devices on different electronic devices
US8554957B1 (en) 2010-02-24 2013-10-08 Open Invention Network, Llc Method for creation of device drivers and device objects for peripheral devices
US20110289282A1 (en) * 2010-05-18 2011-11-24 Microsoft Corporation Sessions for Direct Attached Storage Devices
US9183560B2 (en) 2010-05-28 2015-11-10 Daniel H. Abelow Reality alternate
US8484641B2 (en) 2010-07-12 2013-07-09 International Business Machines Corporation Implementing a versioned virtualized application runtime environment
US9858126B2 (en) 2010-12-16 2018-01-02 Microsoft Technology Licensing, Llc Device redirection for remote systems
KR101251250B1 (ko) * 2011-07-01 2013-04-08 알서포트 주식회사 원격 디바이스 드라이버를 이용한 원격 제어 시스템 및 원격 디바이스 드라이버를 이용한 원격 제어 방법
KR101958902B1 (ko) * 2011-09-30 2019-07-03 삼성전자주식회사 전자기기들의 그룹 제어 방법 및 그를 위한 전자기기 관리 시스템
US8555409B2 (en) * 2011-11-02 2013-10-08 Wyse Technolgoy Inc. System and method for providing private session-based access to a redirected USB device or local device
US20130139184A1 (en) * 2011-11-30 2013-05-30 Lsi Corporation Method for embedding a host driver within a device
US20150334184A1 (en) * 2011-12-22 2015-11-19 Hew-Lett-Pack Development Company, L.P. Enabling execution of remotely-hosted applications using application metadata and client updates
US9183663B1 (en) 2011-12-30 2015-11-10 Graphon Corporation System for and method of classifying and translating graphics commands in client-server computing systems
US9064292B1 (en) 2011-12-30 2015-06-23 hopTo, Inc. System for and method of classifying and translating graphics commands in client-server computing systems
US8922569B1 (en) * 2011-12-30 2014-12-30 hopTo Inc. Cloud based system for and method of translating between disparate 3D graphics languages in client-server computing environments
JP6281369B2 (ja) * 2013-11-12 2018-02-21 沖電気工業株式会社 通信システム及び通信プログラム
CN103809921B (zh) * 2014-02-19 2017-01-25 福建升腾资讯有限公司 Usb存储设备在进行usb映射时的加速方法
CN105100006A (zh) * 2014-05-07 2015-11-25 杭州迪普科技有限公司 一种代理服务、远程控制装置及方法
KR101996896B1 (ko) * 2014-12-29 2019-07-05 삼성전자주식회사 가상 디바이스 드라이버를 이용한 리소스 공유 방법 및 그 전자 디바이스
US9986040B2 (en) 2015-07-21 2018-05-29 Amadeus S.A.S. Communications management system with a separate peripherals server
US10097534B2 (en) * 2015-08-28 2018-10-09 Dell Products L.P. System and method to redirect hardware secure USB storage devices in high latency VDI environments
US9760730B2 (en) * 2015-08-28 2017-09-12 Dell Products L.P. System and method to redirect and unlock software secure disk devices in a high latency environment
US10114779B2 (en) * 2016-04-22 2018-10-30 Dell Products L.P. Isolating a redirected USB device to a set of applications
US10142425B2 (en) * 2016-05-23 2018-11-27 Wyse Technology L.L.C. Session reliability for a redirected USB device
US10223178B2 (en) * 2017-01-23 2019-03-05 Wyse Technology L.L.C. Enabling WPD devices to be managed at the capability level
US10530881B2 (en) * 2017-02-15 2020-01-07 Wyse Technology L.L.C. Redirecting scanners and printers over a WAN
US10657245B2 (en) * 2017-03-14 2020-05-19 Wyse Technology L.L.C. Dynamically controlling access to devices
CN107613020B (zh) 2017-10-16 2020-04-24 北京东土科技股份有限公司 一种设备管理方法及装置
US11119968B2 (en) * 2018-08-07 2021-09-14 Dell Products L.P. Increasing cache hits for USB request blocks that target a redirected USB device
US10798201B2 (en) * 2019-02-04 2020-10-06 Dell Products L.P. Redirecting USB devices via a browser-based virtual desktop infrastructure application
CN110032414B (zh) * 2019-03-06 2023-06-06 联想企业解决方案(新加坡)有限公司 远程控制台模式下安全的用户认证的装置和方法

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5315698A (en) 1991-08-21 1994-05-24 Digital Equipment Corporation Method and apparatus for varying command length in a computer graphics system
FR2701475B1 (fr) * 1993-02-11 1995-03-31 Saint Gobain Vitrage Int Substrats en verre revêtus d'un empilement de couches minces, application à des vitrages à propriétés de réflexion dans l'infra-rouge et/ou à propriétés dans le domaine du rayonnement solaire.
US5748980A (en) * 1994-05-27 1998-05-05 Microsoft Corporation System for configuring a computer system
US5710941A (en) * 1995-02-28 1998-01-20 Microsoft Corporation System for substituting protected mode hard disk driver for real mode driver by trapping test transfers to verify matching geometric translation
US5761411A (en) * 1995-03-13 1998-06-02 Compaq Computer Corporation Method for performing disk fault prediction operations
US5732282A (en) 1995-06-30 1998-03-24 Sun Microsystems, Inc. Virtual device driver registry having a globally unique identifier supplying virtual driver call information to the requesting program
US6247067B1 (en) * 1996-03-29 2001-06-12 Sun Microsystems, Inc. Transparently converting program calls between interfaces
US5978912A (en) 1997-03-20 1999-11-02 Phoenix Technologies Limited Network enhanced BIOS enabling remote management of a computer without a functioning operating system
US5938738A (en) 1997-11-03 1999-08-17 Mustek Systems Inc. Peripheral control system
US6157965A (en) * 1998-02-27 2000-12-05 Intel Corporation System and method for binding a virtual device driver to a network driver interface
US6384931B1 (en) 1998-07-20 2002-05-07 Pitney Bowes Inc. Method and system for capturing destination addresses from label data
US6321279B1 (en) * 1998-09-14 2001-11-20 Compaq Computer Corporation System for implementing intelligent I/O processing in a multi-processor system by redirecting I/O messages to a target central processor selected from the multi-processor system
US6388679B1 (en) 1998-12-29 2002-05-14 Intel Corporation Multi-resolution computer display system
US6549934B1 (en) * 1999-03-01 2003-04-15 Microsoft Corporation Method and system for remote access to computer devices via client managed server buffers exclusively allocated to the client
US7349391B2 (en) 1999-03-19 2008-03-25 F5 Networks, Inc. Tunneling between a bus and a network
US7505455B1 (en) * 1999-03-19 2009-03-17 F5 Networks, Inc. Optimizations for tunneling between a bus and a network
US6466982B1 (en) * 1999-04-09 2002-10-15 Sun Microsystems, Inc. Exclusive use of peripheral devices
US6388687B1 (en) 1999-04-28 2002-05-14 General Electric Company Operator-interactive display menu showing status of image transfer to remotely located devices
US6874147B1 (en) * 1999-11-18 2005-03-29 Intel Corporation Apparatus and method for networking driver protocol enhancement
US6720983B1 (en) * 2000-01-05 2004-04-13 Hewlett-Packard Development Company, L.P. Digital feedback display panel for communicating computer status information
CN1169067C (zh) 2000-02-03 2004-09-29 英华达(上海)电子有限公司 支持用户终端设备的服务器结构
US7047534B2 (en) * 2000-03-17 2006-05-16 Microsoft Corporation Simplified device drivers for hardware devices of a computer system
US6810412B1 (en) * 2000-03-30 2004-10-26 Matsushita Electric Industrial Co., Ltd. Method for increasing network bandwidth across multiple network interfaces with single internet protocol address
US6788429B1 (en) 2000-04-14 2004-09-07 Hewlett-Packard Development Company, Lp. Remote print queue management
US6779185B1 (en) * 2000-04-24 2004-08-17 Microsoft Corporation Bluetooth miniport driver model
US6968307B1 (en) * 2000-04-28 2005-11-22 Microsoft Corporation Creation and use of virtual device drivers on a serial bus
DE60136247D1 (de) 2000-06-16 2008-12-04 Microsoft Corp System und Verfahren zur interaktiven Kommunikation zwischen Objekten in einer verteilten Rechnerumgebung
US6925528B2 (en) * 2000-06-20 2005-08-02 Storage Technology Corporation Floating virtualization layers
JP2002024154A (ja) 2000-07-07 2002-01-25 Toshiba Corp プログラム実行方法およびプログラム実行装置
CA2315270A1 (en) 2000-08-04 2002-02-04 Charon Systems Inc. Printer driver system for remote printing
US7792923B2 (en) * 2000-10-13 2010-09-07 Zhe Khi Pak Disk system adapted to be directly attached to network
US6978299B1 (en) 2000-10-16 2005-12-20 Electronics For Imaging, Inc. Print driver apparatus and methods for forwarding a print job over a network
AU2002258358A1 (en) * 2000-10-27 2002-09-04 Softconnex Technologies Automatic embedded host configuration system and method
KR100372915B1 (ko) 2001-01-02 2003-02-19 김한규 네트워크에 직접 부착 가능한 디스크 시스템
US7461144B1 (en) * 2001-02-16 2008-12-02 Swsoft Holdings, Ltd. Virtual private server with enhanced security
US7058788B2 (en) * 2001-02-23 2006-06-06 Falconstor Software, Inc. Dynamic allocation of computer memory
JP2002373144A (ja) 2001-06-14 2002-12-26 Nec Corp デバイスドライバの組込み方式および方法
US20020196941A1 (en) * 2001-06-21 2002-12-26 Isaacson Shawn Ray Method and system for providing secure digital sound recording
US7207041B2 (en) * 2001-06-28 2007-04-17 Tranzeo Wireless Technologies, Inc. Open platform architecture for shared resource access management
US6993642B2 (en) * 2001-07-24 2006-01-31 Microsoft Corporation Method and system for creating and employing an operating system having selected functionality
US20030023770A1 (en) 2001-07-26 2003-01-30 Barmettler James W. Automated software driver installation
US7222359B2 (en) * 2001-07-27 2007-05-22 Check Point Software Technologies, Inc. System methodology for automatic local network discovery and firewall reconfiguration for mobile computing devices
US7213044B2 (en) 2001-08-31 2007-05-01 Microsoft Corporation Point-to-point data communication implemented with multipoint network data communication components
US7720045B2 (en) * 2003-05-02 2010-05-18 Microsoft Corporation Method to enable simultaneous connections to multiple wireless networks using a single radio
US6904489B2 (en) 2001-10-23 2005-06-07 Digi International Inc. Methods and systems for remotely accessing universal serial bus devices
US20030088642A1 (en) 2001-11-02 2003-05-08 International Business Machines Corporation Device operator panel operated as a web browser
US6943905B2 (en) 2001-12-20 2005-09-13 Sharp Laboratories Of America, Inc. Virtual print driver system and method
US7233669B2 (en) 2002-01-02 2007-06-19 Sony Corporation Selective encryption to enable multiple decryption keys
US7689673B2 (en) 2002-04-23 2010-03-30 Canon Kabushiki Kaisha Remote creation of printer instances on a workstation
US7006467B2 (en) * 2002-04-29 2006-02-28 Hereuare Communications, Inc. Method and system for simulating multiple independent client devices in a wired or wireless network
WO2003107221A1 (en) * 2002-06-12 2003-12-24 Fslogic, Inc. Layered computing systems and methods
WO2004006579A1 (en) 2002-07-09 2004-01-15 Kaleidescape, Inc. Content and key distribution system for digital content representing media streams
US7844577B2 (en) * 2002-07-15 2010-11-30 Symantec Corporation System and method for maintaining a backup storage system for a computer system
US6934711B2 (en) * 2002-10-01 2005-08-23 Hewlett-Packard Development Company, L.P. Method and arrangement for communicating with SCSI devices
US7562393B2 (en) * 2002-10-21 2009-07-14 Alcatel-Lucent Usa Inc. Mobility access gateway
US7698550B2 (en) * 2002-11-27 2010-04-13 Microsoft Corporation Native wi-fi architecture for 802.11 networks
US7222348B1 (en) * 2002-12-16 2007-05-22 Unisys Corporation Universal multi-path driver for storage systems
US6993649B2 (en) * 2002-12-17 2006-01-31 John Alan Hensley Method of altering a computer operating system to boot and run from protected media
US20040128412A1 (en) 2002-12-27 2004-07-01 Harrison Edward R. Remoting peripheral devices
US20040190042A1 (en) 2003-03-27 2004-09-30 Ferlitsch Andrew Rodney Providing enhanced utilization of printing devices in a cluster printing environment
GB2400928A (en) 2003-04-22 2004-10-27 Sharp Kk Distributed periperal device control system
US7181382B2 (en) * 2003-05-08 2007-02-20 Microsoft Corporation System and method for testing, simulating, and controlling computer software and hardware
US7483532B2 (en) 2003-07-03 2009-01-27 Microsoft Corporation RTP payload format
US7404193B2 (en) * 2003-09-03 2008-07-22 Intel Corporation Method, system, and program for accessing device driver functions
US7117353B2 (en) * 2003-09-04 2006-10-03 Intel Corporation Methods and apparatus to enable console redirection in a multiple execution environment
US20050057519A1 (en) * 2003-09-12 2005-03-17 Coe Christopher D. Control board system to indicate hardware events
JP4334953B2 (ja) 2003-09-16 2009-09-30 株式会社日立製作所 パワーステアリング装置
US7913226B2 (en) * 2003-10-01 2011-03-22 Hewlett-Packard Development Company, L.P. Interposing a virtual machine monitor and devirtualizing computer hardware at runtime
US7421710B2 (en) * 2003-10-08 2008-09-02 Lsi Corporation System and method of creating virtual data paths using a multiple-path driver
US7146435B2 (en) 2003-11-07 2006-12-05 Hewlett-Packard Development Company, L.P. Distribution of hardware device installation and configuration software
US20050114870A1 (en) * 2003-11-21 2005-05-26 Song Dong H. System and method for executing an application on a secured run-time environment
US20050198221A1 (en) 2004-01-07 2005-09-08 Microsoft Corporation Configuring an ad hoc wireless network using a portable media device
US20050198233A1 (en) 2004-01-07 2005-09-08 Microsoft Corporation Configuring network settings of thin client devices using portable storage media
TW200534108A (en) * 2004-04-02 2005-10-16 Uli Electronics Inc Control method and device of a remote USB host
KR100706747B1 (ko) 2004-05-06 2007-04-11 (주)링크제니시스 무선통신 단말기의 원격제어 방법 및 시스템
US7506343B2 (en) * 2004-08-19 2009-03-17 International Business Machines Corporation System and method for passing information from one device driver to another
US7660910B2 (en) * 2004-08-30 2010-02-09 Lantronix, Inc. Secure communication port redirector
US7317914B2 (en) * 2004-09-24 2008-01-08 Microsoft Corporation Collaboratively locating disconnected clients and rogue access points in a wireless network
US7702750B2 (en) 2004-09-29 2010-04-20 Citrix Systems, Inc. System and method for event detection and re-direction over a network using a presentation level protocol
US9753754B2 (en) * 2004-12-22 2017-09-05 Microsoft Technology Licensing, Llc Enforcing deterministic execution of threads of guest operating systems running in a virtual machine hosted on a multiprocessor machine
US7810089B2 (en) * 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US7730157B2 (en) * 2005-02-03 2010-06-01 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for displaying information on a thin-client in communication with a network
KR100631620B1 (ko) 2005-05-06 2006-10-09 삼성전자주식회사 저장 수단에 대한 접근을 허용하는 장치 및 방법
US7378002B2 (en) * 2005-08-23 2008-05-27 Applied Materials, Inc. Aluminum sputtering while biasing wafer
US8918530B2 (en) * 2005-09-09 2014-12-23 Microsoft Corporation Plug and play device redirection for remote systems
US7865910B2 (en) * 2006-07-28 2011-01-04 Microsoft Corporation Bypassing class drivers through virtual driver enablement

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100137922A (ko) * 2009-06-23 2010-12-31 삼성전자주식회사 원격 컴퓨팅을 위한 중개 장치, 시스템, 및 가상 인터페이스 제공 방법
US8843631B2 (en) 2009-12-08 2014-09-23 Samsung Electronics Co., Ltd. Dynamic local function binding apparatus and method
US10165058B2 (en) 2009-12-08 2018-12-25 Samsung Electronics Co., Ltd. Dynamic local function binding apparatus and method
KR101428962B1 (ko) * 2014-01-29 2014-08-12 (주) 퓨전데이타 호환성이 강화된 프린터 리다이렉션 제어시스템 및 방법

Also Published As

Publication number Publication date
KR101292936B1 (ko) 2013-08-05
JP5133886B2 (ja) 2013-01-30
CN102819427A (zh) 2012-12-12
EP1941381A1 (en) 2008-07-09
JP2012155750A (ja) 2012-08-16
JP5335962B2 (ja) 2013-11-06
US20070061477A1 (en) 2007-03-15
JP2009508212A (ja) 2009-02-26
US8892758B2 (en) 2014-11-18
WO2007032847A1 (en) 2007-03-22
US20110035758A1 (en) 2011-02-10
CN102819427B (zh) 2015-11-18
EP1941381A4 (en) 2009-12-09
US8918530B2 (en) 2014-12-23

Similar Documents

Publication Publication Date Title
KR101292936B1 (ko) 원격 시스템을 위한 플러그 앤드 플레이 장치 재지정
US7912987B2 (en) USB devices in application server environments
US20100241772A1 (en) Thin client server system and method of managing a driver of a usb device
US9934049B1 (en) Method for creation of device drivers and device objects for peripheral devices
JP4286798B2 (ja) ハードドライブにドライバファイルをインストールする方法、コンピュータ及びコンピュータ読取可能な記憶媒体
US20050162688A1 (en) Printing terminal, printing data outputting device, and computer and peripheral device using therefor
EP1482703B1 (en) Computer system and method for supporting network-enabled devices
US20070174033A1 (en) Remote control device and method for accessing peripheral device remotely
KR20080106908A (ko) 하드웨어 장치와 같은 자원을 소유하는 가상 컴퓨터를 이동시키기 위해 이용될 수 있는 컴퓨팅 시스템 및 방법
JP2008210115A (ja) リモートコンピュータ上でローカル端末のusbデバイスを操作するシステム、その方法及びそのプログラム
US20120131179A1 (en) Method and system for remote os installation capable of monitoring an installation procedure
CN1725142A (zh) 用于安全系统的框架
KR20030024772A (ko) 컴퓨터의 인터페이스 드라이버 프로그램 및 그 기록매체
US10824486B1 (en) Two-way clipboard exchange in virtual console
US20100146000A1 (en) Administering Blade Servers In A Blade Center
US9141321B1 (en) Configurable printer server device
CN101253489A (zh) 远程系统的即插即用设备重定向
JP2005063128A (ja) 印刷ターミナルおよび印刷データ出力装置
US20150277888A1 (en) Systems and methods to create a clean install of an application
KR100509753B1 (ko) 데스크탑컴퓨터와휴대용단말기의인터페이스방법
JP2009032235A (ja) 単一の識別コードでインターネットおよび磁気記憶装置アクセスサービスを提供するハードディスクレス型コンピュータシステム、およびそのデータ送受信方法
JP2005055961A (ja) タスク間通信プログラム及びタスク間通信方法
JP2009140072A (ja) サーバシステム
JP2006048148A (ja) 電子機器、制御プログラム及びホストコンピュータ

Legal Events

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

Payment date: 20160630

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 6