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

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

Info

Publication number
KR101292936B1
KR101292936B1 KR1020087005658A KR20087005658A KR101292936B1 KR 101292936 B1 KR101292936 B1 KR 101292936B1 KR 1020087005658 A KR1020087005658 A KR 1020087005658A KR 20087005658 A KR20087005658 A KR 20087005658A KR 101292936 B1 KR101292936 B1 KR 101292936B1
Authority
KR
South Korea
Prior art keywords
driver
server computer
client computer
computer
application
Prior art date
Application number
KR1020087005658A
Other languages
English (en)
Other versions
KR20080053289A (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

    • 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
    • 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
    • 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)
  • Automation & Control Theory (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (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 computer; 개인용 컴퓨터), 랩톱 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 명령을 애플리케이션 서비스(210) 또는 호환 계층(212)으로 반사하거나 재지정하는 운영 체제(OS) 또는 커널 기반 구성 요소(즉, 드라이버)일 수 있다. 나아가 본 구현에서 재지정기(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. 클라이언트 장치를 지원하는 방법으로서,
    서버 컴퓨터에서, 장치가 클라이언트 컴퓨터에 연결됨을 나타내는 장치 통지를 수신하는 단계 - 상기 장치는 상기 클라이언트 컴퓨터에 위치한 실제 장치 드라이버와 연관됨 -;
    상기 장치에 관련된 정보를 수신하는 단계;
    상기 정보에 기초하여 상기 서버 컴퓨터에서 가상 드라이버를 생성하는 단계; 및
    상기 서버 컴퓨터의 애플리케이션에서 장치로 인해 생성되는 이벤트 통지를 감지하면, 입출력 제어(IOCTL) 코드를 사용하는 입출력 요청 패킷(IRP) 명령을, 상위 레벨 필터 드라이버에 의해, 상기 서버 컴퓨터의 상기 애플리케이션으로부터 상기 상위 레벨 필터 드라이버를 거쳐 상기 서버 컴퓨터의 상기 가상 드라이버를 통해 상기 클라이언트 컴퓨터 상의 상기 실제 장치 드라이버로 재지정(redirecting)하는 단계 - 상기 상위 레벨 필터 드라이버는 상기 서버 컴퓨터의 상기 애플리케이션으로부터 분리되어 위치함 - 를 포함하는,
    방법.
  2. 제 1항에 있어서,
    상기 클라이언트 컴퓨터 및 상기 서버 컴퓨터의 애플리케이션 모두로부터 상기 실제 장치 드라이버로의 동시 액세스를 제공하는 단계를 더 포함하는, 방법.
  3. 삭제
  4. 제 1항에 있어서,
    상기 클라이언트 컴퓨터에 상기 실제 장치 드라이버가 설치되는, 방법.
  5. 삭제
  6. 삭제
  7. 제 1항에 있어서,
    상기 장치는 오디오 레코더, 디지털 카메라, 문서 스캐너, 외부 디스크 드라이브 또는 매체 판독기 중 적어도 하나인, 방법.
  8. 클라이언트 컴퓨터에서의 장치의 제어를 서버 컴퓨터로 재지정(redirecting)하는 방법으로서,
    상기 클라이언트 컴퓨터에 있는 원격 액세스 애플리케이션을 통해 상기 클라이언트 컴퓨터 및 상기 서버 컴퓨터 간 통신을 수립하는 단계;
    상기 장치가 상기 클라이언트 컴퓨터에 연결됨에 응답하여 상기 서버 컴퓨터에서 상기 장치에 특정된 가상 드라이버를 생성하는 단계 - 상기 장치는 상기 클라이언트 컴퓨터에 있는 실제 장치 드라이버와 연관됨 -;
    입출력 제어(IOCTL) 코드를 사용하는 입출력 요청 패킷(IRP) 명령을 상기 서버 컴퓨터에 있는 애플리케이션으로부터 상기 서버 컴퓨터에 있는 상위 레벨 필터 드라이버를 통해 상기 실제 장치 드라이버로 재지정하는 단계를 포함하는,
    방법.
  9. 제 8항에 있어서,
    상기 가상 드라이버를 생성하는 단계는, 상기 클라이언트 컴퓨터로부터 상기 서버 컴퓨터에 의해 수신되며 상기 장치를 기술하는 정보에 기초하여 상기 가상 드라이버를 생성하는 단계를 포함하는, 방법.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 제 8항에 있어서,
    상기 장치가 상기 클라이언트 컴퓨터로부터 연결해제된 경우 상기 서버 컴퓨터로부터 상기 가상 드라이버를 언로딩하는 단계를 더 포함하는, 방법.
  14. 원격 액세스 시스템으로서,
    서버 컴퓨터;
    상기 서버 컴퓨터에 의해 지원되는 로컬 클라이언트 컴퓨터;
    상기 로컬 클라이언트 컴퓨터에 존재하는 장치;
    상기 장치에 특정되고 상기 로컬 클라이언트 컴퓨터 내에 설치되는 실제 장치 드라이버;
    상기 장치를 지원하기 위해 상기 서버 컴퓨터의 커널 영역에 위치하는 가상 드라이버; 및
    상기 서버 컴퓨터의 애플리케이션으로부터 분리된 상위 레벨 필터 드라이버 - 상기 상위 레벨 필터 드라이버는 입출력 제어(IOCTL) 코드를 사용하는 입출력 요청 패킷(IRP) 명령을 감지하고 IRP 명령의 감지 시에 상기 IRP 명령을 상기 서버 컴퓨터의 상기 애플리케이션으로부터 상기 상위 레벨 필터 드라이버를 거쳐 상기 가상 드라이버를 통해 상기 실제 장치 드라이버로 재지정(redirecting)함 - 를 포함하는,
    시스템.
  15. 제 14항에 있어서,
    상기 서버 컴퓨터는 상기 장치를 식별하는 재지정기(redirector)를 포함하는, 시스템.
  16. 제 15항에 있어서,
    상기 재지정기는 상기 서버 컴퓨터와 상기 로컬 클라이언트 컴퓨터 간의 통신을 지원하는 재지정 라이브러리를 포함하는, 시스템.
  17. 제 15항에 있어서,
    상기 로컬 클라이언트 컴퓨터는 상기 서버 컴퓨터와 상기 로컬 클라이언트 컴퓨터 간의 통신을 지원하는 원격 서비스 애플리케이션을 포함하는, 시스템.
  18. 제 15항에 있어서,
    상기 장치는 플러그 앤드 플레이(PNP) 장치인, 시스템.
  19. 제 15항에 있어서,
    상기 장치가 상기 로컬 클라이언트 컴퓨터에 연결될 때 장치 드라이버가 다른 드라이버들과 함께 설치되는, 시스템.
  20. 제 15항에 있어서,
    상기 명령은 상기 로컬 클라이언트 컴퓨터의 드라이버 스택(driver stack)을 통하여 전달되는, 시스템.
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 2006-04-03
US11/278,529 US8918530B2 (en) 2005-09-09 2006-04-03 Plug and play device redirection for remote systems
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 KR20080053289A (ko) 2008-06-12
KR101292936B1 true 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)

Families Citing this family (47)

* 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 智慧型遠端介面裝置、系統及其使用方法
US8010630B2 (en) * 2007-12-06 2011-08-30 Wyse Technology Inc. Local device redirection
US8789070B2 (en) 2007-12-06 2014-07-22 Wyse Technology L.L.C. Local device virtualization
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
KR101645002B1 (ko) * 2009-06-23 2016-08-02 삼성전자주식회사 원격 컴퓨팅을 위한 중개 장치, 시스템, 및 가상 인터페이스 제공 방법
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
KR20110064674A (ko) * 2009-12-08 2011-06-15 삼성전자주식회사 동적 로컬 기능 결합 장치 및 방법
US8554957B1 (en) 2010-02-24 2013-10-08 Open Invention Network, Llc Method for creation of device drivers and device objects for peripheral 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
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
CN104040522A (zh) * 2011-12-22 2014-09-10 惠普发展公司,有限责任合伙企业 使用应用元数据和客户端更新使能远程受管应用的执行
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
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
JP6281369B2 (ja) * 2013-11-12 2018-02-21 沖電気工業株式会社 通信システム及び通信プログラム
KR101428962B1 (ko) * 2014-01-29 2014-08-12 (주) 퓨전데이타 호환성이 강화된 프린터 리다이렉션 제어시스템 및 방법
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
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
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
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 联想企业解决方案(新加坡)有限公司 远程控制台模式下安全的用户认证的装置和方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050037537A (ko) * 2004-05-06 2005-04-22 (주)링크제니시스 무선통신 단말기의 원격제어 방법 및 시스템
KR100631620B1 (ko) 2005-05-06 2006-10-09 삼성전자주식회사 저장 수단에 대한 접근을 허용하는 장치 및 방법
JP2008515083A (ja) 2004-09-29 2008-05-08 サイトリックス システムズ, インコーポレイテッド プレゼンテーションレベルプロトコルを使用しネットワークを介するイベント検出およびリダイレクションのためのシステムおよび方法

Family Cites Families (83)

* 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
EP1164482B1 (en) 2000-06-16 2008-10-22 Microsoft Corporation System and method for interactive communication between objects in a distributed computing environment
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
AU2003251504A1 (en) * 2002-06-12 2003-12-31 Fslogic Inc. Systems and methods for the creation of software packages using layered systems
US7702101B2 (en) * 2002-07-09 2010-04-20 Kaleidescape, Inc. Secure presentation of media streams in response to encrypted digital content
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
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
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
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050037537A (ko) * 2004-05-06 2005-04-22 (주)링크제니시스 무선통신 단말기의 원격제어 방법 및 시스템
KR100706747B1 (ko) 2004-05-06 2007-04-11 (주)링크제니시스 무선통신 단말기의 원격제어 방법 및 시스템
JP2008515083A (ja) 2004-09-29 2008-05-08 サイトリックス システムズ, インコーポレイテッド プレゼンテーションレベルプロトコルを使用しネットワークを介するイベント検出およびリダイレクションのためのシステムおよび方法
KR100631620B1 (ko) 2005-05-06 2006-10-09 삼성전자주식회사 저장 수단에 대한 접근을 허용하는 장치 및 방법

Also Published As

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

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
US8868628B2 (en) Sharing computer data among computers
US7389516B2 (en) System and method for facilitating interaction between a computer and a network scanner
US20070174033A1 (en) Remote control device and method for accessing peripheral device remotely
US9122623B1 (en) Method for creation of device drivers and device objects for peripheral devices
US20050162688A1 (en) Printing terminal, printing data outputting device, and computer and peripheral device using therefor
KR100554115B1 (ko) 컴퓨터용 인터페이스 드라이버 프로그램을 내재한 컴퓨터와 디바이스 드라이버 장치 및 프로그램을 기록한 기록매체
US7568053B2 (en) USB composite device, USB communication system, and USB communication method
KR20080106908A (ko) 하드웨어 장치와 같은 자원을 소유하는 가상 컴퓨터를 이동시키기 위해 이용될 수 있는 컴퓨팅 시스템 및 방법
CN1725142A (zh) 用于安全系统的框架
US20120131179A1 (en) Method and system for remote os installation capable of monitoring an installation procedure
CN112399025A (zh) 扫描设备通信方法及装置
KR100654675B1 (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) 远程系统的即插即用设备重定向
US6915524B2 (en) Method for controlling multiple storage devices from a single software entity
CN112470443B (zh) 将复位向的生物辨识装置隔离到远程会话
JP2005063128A (ja) 印刷ターミナルおよび印刷データ出力装置
JP2009032235A (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