KR101150065B1 - 개발자가 시스템 상의 기지의 위치를 용이하게 찾아내거나확장할 수 있게 해주는 기능 - Google Patents

개발자가 시스템 상의 기지의 위치를 용이하게 찾아내거나확장할 수 있게 해주는 기능 Download PDF

Info

Publication number
KR101150065B1
KR101150065B1 KR1020077020997A KR20077020997A KR101150065B1 KR 101150065 B1 KR101150065 B1 KR 101150065B1 KR 1020077020997 A KR1020077020997 A KR 1020077020997A KR 20077020997 A KR20077020997 A KR 20077020997A KR 101150065 B1 KR101150065 B1 KR 101150065B1
Authority
KR
South Korea
Prior art keywords
folder
location
new
interface
application
Prior art date
Application number
KR1020077020997A
Other languages
English (en)
Other versions
KR20070118081A (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 KR20070118081A publication Critical patent/KR20070118081A/ko
Application granted granted Critical
Publication of KR101150065B1 publication Critical patent/KR101150065B1/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/168Details of user interfaces specifically adapted to file systems, e.g. browsing and visualisation, 2d or 3d GUIs
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

기지의 위치에 저장되는 폴더를 생성하고 액세스하는 방법 및 데이터 구조체가 제공된다. 이 데이터 구조체 및 방법은 시스템 상에서 기지 폴더를 생성 및 관리하고 및/또는 특정의 기지 폴더를 찾아내기 위해 일련의 API를 이용한다. 본 발명은 기지 폴더를 생성하고, 찾아내며, 확장하고 열거하는 인터페이스를 제공한다. 게다가, 본 발명은 개발자 및/또는 사용자가 기지 폴더의 특성을 커스터마이즈할 수 있게 해준다.
폴더, 응용 프로그래밍 인터페이스, CSIDL, 기지 폴더, 레지스트리

Description

개발자가 시스템 상의 기지의 위치를 용이하게 찾아내거나 확장할 수 있게 해주는 기능{ABILITY FOR DEVELOPERS TO EASILY FIND OR EXTEND WELL KNOWN LOCATIONS ON A SYSTEM}
본 발명은 일반적으로 일련의 응용 프로그래밍 인터페이스(application programming interface)를 사용하여 기지의 위치에 저장되는 폴더를 생성 및 관리하는 것에 관한 것이다.
현재, 개발자 및 사용자는 일반적으로 여러가지 응용 프로그램으로부터의 데이터를, 내 문서(My Documents) 폴더 또는 내 그림(My Pictures) 폴더 등의 어떤 기지 폴더에 저장한다. 이들 기지 폴더는 개발자 및 사용자가 정보에 액세스하기 위해 다수의 응용 프로그램 및 컴퓨터 네트워크 환경에 걸쳐 용이한 액세스를 제공한다. 이들 기지 폴더는 Windows
Figure 112007066489419-pct00001
상표의 운영 체제 등의 운영 체제에서 이용된다.
예를 들어, 많은 응용 프로그램은 설치되어 있는 특정의 응용 프로그램에 적용가능한 데이터를 저장하기 위해 내 문서(My Documents) 폴더 등의 특정의 기지 폴더를 이용한다. 내 문서 폴더의 사용은 다른 응용 프로그램이 저장된 정보에 액세스할 수 있게 해준다. 예를 들어, jpeg 파일은 몇개의 포토 퍼블리싱(photo publishing) 응용 프로그램에 의해 사용될 수 있다. 특정의 포토 퍼블리싱 응용 프로그램은, 다른 포토 퍼블리싱 응용 프로그램이 jpeg 파일에 액세스할 수 있도록, 내 문서 폴더 등의 기지 폴더에 jpeg 파일을 저장할 수 있다. 그렇지만, 내 문서 폴더 아래에 수많은 응용 프로그램 파일 및 폴더를 배치하는 것은 조직화되지 않은(unorganized) 폴더 리스트를 생성하며, 특정의 폴더 및 데이터를 검색하는 일이 번거롭고 시간이 많이 걸리게 된다.
Microsoft
Figure 112007066489419-pct00002
Windows
Figure 112007066489419-pct00003
등의 기존의 운영 체제는 사용자 인터페이스 또는 응용 프로그램을 통해 폴더 및 파일 등의 데이터 객체를 계층적 이름공간 구조(hierarchical namespace structure)로 조직화하기 위해 쉘(Shell)을 이용한다. 이 쉘은 그의 위치 및 존재가 시스템에 알려져 있을 수 있고 그에의 액세스가 시작(Start) 메뉴 등의 쉘 내의 수많은 곳으로부터 제공되는 특수 폴더를 포함할 수 있다. 이 쉘은 이들 기지 폴더를 관리하는 일련의 SHFolderPath API를 개발자 및 사용자에게 제공할 수 있다. SHFolderPath API는 고정된 일련의 CSIDL을 이용할 수 있다. CSIDL은 폴더를 식별하는 데 또한 응용 프로그램에 의해 빈번하게 사용되는 특수 폴더를 식별하는 고유의 시스템-독립적인 방식을 제공하는 데 사용되는 서수값(ordinal value)을 포함한다. 디스크 또는 드라이브 상에서 기지 폴더의 위치로 CSIDL을 매핑하기 위해 표가 이용된다. Microsoft
Figure 112007066489419-pct00004
Windows
Figure 112007066489419-pct00005
XP 등의 현재 버전의 기존의 운영 체제에서, 기지 폴더는 확장가능하지 않은데, 그 이유는 CSIDL가 확장가능하지 않기 때문이다. 게다가, 기존의 운영 체제에서 기존의 기지 폴더에 새로운 특성을 부가하는 것도 가능하지 않다.
따라서, 개발자 및 사용자가 여러가지 응용 프로그램에서 사용하기 위한 그 자신의 기지 폴더를 생성할 수 있는 방법 및 데이터 구조체를 제공하는 것이 기술의 진보일 것이다. 게다가, 개발자 또는 사용자에 의해 이용될 수 있는 기존의 기지 폴더는 물론 새로운 기지 폴더에 새로운 또는 사용자 지정 속성을 추가하는 것이 진보일 것이다. 이들 사용자 지정 속성은, 예를 들어, 개발자 또는 사용자에게 기지 폴더의 의도된 용도를 알려줄 수 있다. 게다가, 본 방법 및 데이터 구조체는 사용자로 하여금 최소한의 노력으로 동일한 컴퓨터 상에 또는 네트워크 상에 있을 수 있는 여러가지 응용 프로그램에 의해 생성된 다른 기지 폴더를 발견 및 이용할 수 있게 해준다.
본 발명의 방법 및 데이터 구조체는 시스템 상의 기지의 위치들을 열거하고 및/또는 특정의 기지의 위치를 찾아내는 일련의 API를 제공함으로써 종래 기술의 문제점을 극복한다. 상세하게는, 본 발명은 기지 폴더를 찾아내고 확장하며 열거하는 기능을 제공한다. 게다가, 본 발명은 개발자 및/또는 사용자로 하여금 기지 폴더의 속성을 사용자 지정(customize)할 수 있게 해준다.
도 1은 본 발명이 구현될 수 있는 적당한 컴퓨터 시스템 환경의 일례를 나타낸 도면.
도 2는 제1 및 제2 코드 세그먼트가 통신을 하는 통로인 인터페이스를 나타낸 도면.
도 3은 인터페이스 객체를 포함하는 것으로 인터페이스를 나타낸 도면.
도 4는 인터페이스에 의해 제공되는 기능이 인터페이스의 통신을 다수의 인터페이스로 변환하기 위해 세분될 수 있음을 나타낸 도면.
도 5는 인터페이스에 의해 제공되는 기능이 다수의 인터페이스로 세분될 수 있음을 나타낸 도면.
도 6은 여전히 동일한 결과를 달성하면서 프로그래밍 인터페이스의 측면들을 무시하거나, 추가하거나 재정의하는 예를 나타낸 도면.
도 7은 여전히 동일한 결과를 달성하면서 프로그래밍 인터페이스의 측면들을 무시하거나, 추가하거나 재정의하는 다른 예를 나타낸 도면.
도 8은 도 2에 도시되어 있는 예와 관련하여 코드 세그먼트를 병합하는 것을 나타낸 도면.
도 9는 도 3에 도시되어 있는 예와 관련하여 인터페이스를 병합하는 것을 나타낸 도면.
도 10은 다른 인터페이스에 부합하도록 통신을 변환하는 미들웨어를 나타낸 도면.
도 11은 분리 인터페이스(divorce interface)와 연관되어 있는 코드 세그먼트를 나타낸 도면.
도 12는 설치된 베이스 응용 프로그램이 인터페이스 프로토콜에 따라 운영 체제와 통신하도록 구성되어 있는 예를 나타낸 도면으로서, 이 운영 체제는 다른 인터페이스를 사용하도록 변경되어 있음.
도 13은 인터페이스를 동적으로 인수분해(factor)하거나 다른 방식으로 변경하기 위해 인터페이스를 재작성하는 것을 나타낸 도면.
도 14는 본 발명의 한 측면에 따른, 지정된 KnownFolderID에 대한 기지 폴더 PIDL을 검색하는 등의 기능을 제공할 수 있는 확장 API를 나타낸 도면.
도 15는 본 발명의 한 측면에 따른, 호출자(caller)에게 기지 폴더의 실제 파일 시스템 경로를 제공하는 등의 기능을 제공할 수 있는 부가적인 확장 API를 나타낸 도면.
도 16은 본 발명의 한 측면에 따른, 호출자로 하여금 주어진 기지 폴더에 대한 경로를 설정할 수 있게 해주는 등의 기능을 제공할 수 있는 제3 확장 API를 나타낸 도면.
도 17은 본 발명의 한 측면에 따른, 정의된 기지 폴더에 대한 GUID 값 및/또는 PIDL 값을 얻는 기능을 응용 프로그램에 부여하는 등의 기능을 제공할 수 있는 IKnownFolder API를 나타낸 도면.
도 18은 본 발명의 한 측면에 따른, 기지 폴더를 생성 또는 삭제하는 기능을 제공할 수 있는 IKnownFolderManager API를 나타낸 도면.
도 19는 본 발명의 한 측면에 따른, KnownFolder_Definition 구조체를 나타낸 도면.
도 20은 본 발명의 한 측면에 따른, 기지 폴더를 열거하는 기능을 제공할 수 있는 IEnumKnownFolder() API를 나타낸 도면.
도 21은 본 발명의 한 측면에 따른, 다른 컴포넌트들이 기지 폴더의 생성 및 /또는 삭제를 위한 특수 코드를 추가하는 기능을 제공할 수 있는 IKnownFolderHandler() API를 나타낸 도면.
도 22는 본 발명의 한 측면에 따른, 요청측 컴포넌트가 운영 체제에 대한 프로그램 인터페이스 호출을 이용하는 것을 나타낸 도면.
도 22a는 본 발명의 한 측면에 따른, 응용 프로그램이 기지 폴더의 위치를 구하기 위해 기지 폴더의 ID(identification)와 함께 요청을 전송하는 본 발명의 다른 측면을 나타낸 도면.
도 23은 본 발명의 한 측면에 따른, 새로운 기지 폴더를 생성하는 방법을 나타낸 도면.
유사한 참조 번호가 유사한 특징을 나타내고 있는 첨부 도면을 고려하여 이하의 설명을 참조하면, 본 발명 및 그의 이점에 대한 보다 완전한 이해가 이루어질 것이다.
본 발명의 개시 내용을 명백하게 하기 위해, 본 명세서에 몇가지 관련 용어의 정의가 제공되어 있다.
프로필: 사용자 관련 데이터 및 설정을 저장할 사용자별 장소(per-user location)를 운영 체제 및 응용 프로그램에 제공한다.
기지 폴더(Known Folder/KnownFolder): Windows 쉘 및 기타 컴포넌트 및 응용 프로그램이 알고 있는 카테고리의 폴더.
SHFolderPath() API: SHGetFolderLocation(), SHGetFolderPath(), 및 SHSetFolderPath()를 포함하는 일련의 쉘 폴더 API.
CSIDL: 폴더를 식별하는 데 또한 응용 프로그램에 의해 빈번히 사용되는 특수 폴더를 식별하는 고유의 시스템-독립적인 방법을 제공하는 데 사용되는 서수값.
도 1은 본 발명이 구현될 수 있는 적당한 컴퓨팅 시스템 환경(100)의 예를 나타낸 것이다. 컴퓨팅 시스템 환경(100)은 적당한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 사용 또는 기능의 범위에 관한 어떤 제한도 암시하려는 것이 아니다. 또한, 컴퓨팅 환경(100)이 이 예시적인 운영 환경(100)에 도시된 구성요소들 중 임의의 하나 또는 이들의 임의의 조합에 관하여 어떤 의존 관계나 요구 사항을 갖는 것으로 해석되어서도 안된다.
도 1을 참조하면, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 구성요소들은 처리 장치(120), 시스템 메모리(130), 및 이 시스템 메모리를 비롯한 여러가지 시스템 구성요소들을 처리 장치(120)에 연결시키는 시스템 버스(121)를 포함할 수 있지만, 이에 한정되지 않는다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러를 비롯한 몇가지 유형의 버스 구조 중 임의의 것, 주변 버스, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스일 수 있다. 제한이 아닌 예로서, 이러한 아키텍처는 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 버스, 및 메자닌 버스(Mezzanine bus)라고도 하는 PCI(Peripheral Component Interconnect) 버스를 포함한다.
컴퓨터(110)는 일반적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 이동식 및 이동불가식 매체 둘다를 포함한다. 제한이 아닌 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조체, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위해 모든 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 이동불가식 매체 둘다를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 컴퓨터(110)에 의해 액세스될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되는 것은 아니다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령어, 데이터 구조체, 프로그램 모듈 또는 기타 데이터를 반송파 등의 피변조 데이터 신호 또는 다른 전송 메카니즘에 구현하며 임의의 정보 전달 매체를 포함한다. 용어 "피변조 데이터 신호"는 신호에 정보를 인코딩하는 방식으로 그 신호의 특성들 중 하나 이상이 설정 또는 변경된 신호를 의미한다. 제한이 아닌 예로서, 통신 매체는 유선 네트워크 또는 다이렉트 유선 접속 등의 유선 매체, 및 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함한다. 상기한 것들 중의 임의의 것의 조합도 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132) 등의 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에, 컴퓨터(110) 내의 구성요소들 간에 정보를 전송하는 데 도움이 되는 기본적인 루틴들을 포함하는, 기본 입/출력 시스템(BIOS)(133)은 일반적으로 ROM(131)에 저장되어 있다. RAM(132)은 일반적으로 처리 장치(120)에 의해 즉각 액세스가능하고 및/또는 현재 처리되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 제한이 아닌 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있다.
컴퓨터(110)는 또한 다른 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 저장 매체도 포함할 수 있다. 단지 예로서, 도 1은 이동불가식, 비휘발성 자기 매체로부터 판독하거나 그에 기록하는 하드 디스크 드라이브(140), 이동식, 비휘발성 자기 디스크(152)로부터 판독하거나 그에 기록하는 자기 디스크 드라이브(151), 및 CD ROM 또는 기타 광 매체 등의 이동식, 비휘발성 광 디스크(156)로부터 판독하거나 그에 기록하는 광 디스크 드라이브(155)를 나타내고 있다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD, 디지털 비디오 테이프, 고상(solid state) RAM, 고상 ROM, 기타 등등이 있지만, 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140) 등의 이동불가식 메모리 인터페이스를 통해 시스템 버스(121)에 연결되어 있고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 일반적으로 인터페이스(150) 등의 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 연결되어 있다.
이상에서 설명되고 도 1에 도시되어 있는 드라이브들 및 이들과 관련된 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조체, 프로그램 모듈 및 컴퓨터(110)의 다른 데이터를 저장한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이 컴포넌트들이 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다는 것이다. 이에 관해, 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 부여되어 있는 것은 적어도 이들이 서로 다른 사본(copy)이라는 것을 나타내기 위한 것이다. 사용자는 키보드(162), 및 통상 마우스, 트랙볼(trackball) 또는 터치 패드라고 불리우는 무선 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 있을 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속되어 있다. 모니터 외에, 컴퓨터는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(195)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고, 단지 메모리 저장 장치(181)만이 도 1에 도시되어 있지만, 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소의 대부분 또는 그 전부를 포함한다. 도 1에 도시된 논리적 연결로는 LAN(171) 및 WAN(173)이 있지만, 다른 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 회사 전체에 걸친 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173)을 통해 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 제한이 아닌 예로서, 도 1은 원격 컴퓨터(180)에 상주하고 있는 것으로 원격 애플리케이션 프로그램(185)을 도시하고 있다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것을 이해할 것이다. 주변 장치 인터페이스(195)는 스캐너(도시 생략) 또는 디지털 카메라(194) 등의 비디오 입력 장치와 인터페이스할 수 있으며, 여기서 출력 주변장치 인터페이스는 USB 인터페이스를 비롯한 표준화된 인터페이스를 지원할 수 있다.
본 발명은 많은 다른 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 실시 가능하다. 본 발명에서 사용하기에 적합할 수 있는 공지의 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 셋톱 박스, 프로그램가능 가전 기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 상기의 시스템이나 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만, 이에 한정되는 것은 아니다.
본 발명은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 문맥으로 기술될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하고 또는 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치할 수 있다.
프로그래밍 인터페이스(또는 보다 간단히 "인터페이스")는 하나 이상의 코드 세그먼트(들)가 하나 이상의 다른 코드 세그먼트(들)와 통신을 하거나 그에 의해 제공되는 기능에 액세스할 수 있게 해주는 임의의 메카니즘, 프로세스, 프로토콜로 볼 수 있다. 다른 대안으로서, 프로그래밍 인터페이스는 다른 컴포넌트(들)의 하나 이상의 메카니즘(들), 메서드(method)(들), 함수 호출(들), 모듈(들), 기타 등등과 통신 연결될 수 있는 시스템의 컴포넌트의 하나 이상의 메카니즘(들), 메서드(들), 함수 호출(들), 모듈(들), 객체(들), 기타 등등으로 볼 수 있다. 이전의 문장에서의 용어 "코드 세그먼트"는 하나 이상의 명령어 또는 코드 라인(line of code)을 포함시키기 위한 것이며, 적용되는 전문 용어 또는 코드 세그먼트가 개별적으로 컴파일되는지 여부 또는 코드 세그먼트가 소스 코드(source code), 중간 코드(intermediate code) 또는 오브젝트 코드(object code)로서 제공되는지, 코드 세그먼트가 런타임 시스템 또는 프로세스에서 이용되는지, 또는 이들이 동일한 또는 서로 다른 기계 상에 위치하는지 또는 다수의 기계에 걸쳐 분산되어 있는지, 또는 코드 세그먼트로 표현된 기능이 전적으로 소프트웨어로, 전적으로 하드웨어로, 또는 하드웨어와 소프트웨어의 조합으로 구현되는지에 상관없이, 예를 들어, 코드 모듈, 객체, 서브루틴, 함수, 기타 등등을 포함한다.
개념상, 프로그래밍 인터페이스는 일반적으로 도 2 또는 도 3에 도시된 바와 같이 생각될 수 있다. 도 2에서는 인터페이스(Interface1)를 도관(conduit)으로 나타내고 있는데, 이 도관을 통해 제1 및 제2 코드 세그먼트가 통신을 한다. 도 3은 인터페이스를 인터페이스 객체(I1, I2)(제1 및 제2 코드 세그먼트의 일부일 수 있거나 그 일부가 아닐 수 있음)를 포함하는 것으로 나타내고 있으며, 이들 인터페 이스 객체가 시스템의 제1 및 제2 코드 세그먼트로 하여금 매체(M)를 통해 통신을 할 수 있게 해준다. 도 3을 보면, 인터페이스 객체(I1, I2)를 동일한 시스템의 개별적인 인터페이스로 볼 수 있으며, 또한 객체(I1, I2)와 매체(M)가 인터페이스를 구성하는 것으로도 볼 수 있다. 도 2 및 도 3이 양방향 흐름을 나타내고 이 흐름의 양쪽에 인터페이스를 나타내고 있지만, 어떤 구현은 단지 한쪽 방향으로의 정보 흐름만을 가질 수 있거나(또는 이하에 기술되는 바와 같이 정보 흐름이 없음) 단지 한쪽에만 인터페이스 객체를 가질 수 있다. 제한이 아닌 예로서, 응용 프로그래밍 인터페이스(API), 진입점(entry point), 메서드, 함수, 서브루틴, 원격 프로시저 호출(remote procedure call), 및 컴포넌트 객체 모델(component object model, COM) 인터페이스 등의 용어는 프로그래밍 인터페이스의 정의 내에 포함된다.
이러한 프로그래밍 인터페이스의 측면들은 제1 코드 세그먼트가 정보를 제2 코드 세그먼트로 전송하는 메서드(여기서, "정보"는 그의 최광의로 사용되며, 데이터, 명령, 요청, 기타 등등을 포함함), 제2 코드 세그먼트가 그 정보를 수신하는 메서드, 및 그 정보의 구조, 시퀀스, 구문, 구성(organization), 스키마, 타이밍 및 내용을 포함할 수 있다. 이 점에서, 그 정보가 인터페이스에 의해 정의된 방식으로 전송되는 한, 기본적인 전송 매체 자체가 인터페이스의 동작에 중요하지 않을 수 있으며, 그 매체가 유선이나 무선이든 또는 이 둘의 조합이든 상관없다. 어떤 상황에서, 정보가 종래의 의미에서 한쪽 방향 또는 양쪽 방향으로 전달되지 않을 수 있는데, 그 이유는 정보 전송이 또다른 메카니즘을 통하거나(예를 들어, 코드 세그먼트 간의 정보 흐름과 별도로 정보가 버퍼, 파일, 기타 등등에 배치됨), 한 코드 세그먼트가 단지 다른 코드 세그먼트에 의해 수행되는 기능에 액세스하는 때와 같이, 정보 전송이 존재하지 않을 수 있기 때문이다. 이들 측면 중 임의의 것 또는 그 모두가, 예를 들어, 코드 세그먼트가 소결합된 구성(loosely coupled configuration) 또는 밀결합된 구성(tightly coupled configuration)에서 시스템의 일부인지에 따라, 주어진 상황에서 중요할 수 있으며, 따라서 이 리스트는 예시적인 것이지 제한하는 것이 아닌 것으로 보아야 한다.
프로그래밍 인터페이스의 이러한 개념은 당업자에게는 잘 알려져 있으며, 본 발명의 이상의 상세한 설명으로부터 분명하다. 그렇지만, 프로그래밍 인터페이스를 구현하는 다른 방식들이 있으며, 명시적으로 배제되지 않는 한, 이들도 역시 본 명세서의 끝부분에 서술되어 있는 청구 범위에 의해 포함되는 것으로 보아야 한다. 이러한 기타 방식들이 도 2 및 도 3에 극도로 단순화하여 나타낸 것보다 더 정교하거나 복잡할 수 있지만, 이들은 그럼에도 불구하고 동일한 전체적인 결과를 달성하기 위해 유사한 기능을 수행한다. 이제부터 프로그래밍 인터페이스의 몇몇 예시적인 대안 구현들에 대해 간략하게 기술한다.
한 코드 세그먼트로부터 다른 코드 세그먼트로의 통신은 그 통신을 다수의 개별적인 통신으로 나눔으로써 간접적으로 달성될 수 있다. 이것은 도 4 및 도 19에 개략적으로 도시되어 있다. 도시된 바와 같이, 몇몇 인터페이스는 분할가능한 기능 세트의 관점에서 설명될 수 있다. 따라서, 마치 수학적으로 24 또는 2 x 2 x 3 x 2를 제공할 수 있는 것과 같이, 도 2 및 도 3의 인터페이스 기능이 동일한 결과를 달성하도록 인수분해될 수 있다. 따라서, 도 18에 나타낸 바와 같이, 동일한 결과를 달성하면서 인터페이스의 통신을 다수의 인터페이스(Interface1A, Interface1B, Interface1C, 기타)로 변환하기 위해, 인터페이스(Interface1)에 의해 제공되는 기능이 세분될 수 있다. 도 5에 나타낸 바와 같이, 인터페이스(I1)에 의해 제공되는 기능은 동일한 결과를 달성하면서 다수의 인터페이스(I1a, I1b, I1c, 기타)로 세분될 수 있다. 이와 유사하게, 제1 코드 세그먼트로부터 정보를 수신하는 제2 코드 세그먼트의 인터페이스(I2)는 다수의 인터페이스(I2a, I2b, I2c, 기타)로 인수분해될 수 있다. 인수분해를 할 때, 제1 코드 세그먼트에 포함된 인터페이스의 수가 제2 코드 세그먼트에 포함된 인터페이스의 수와 일치할 필요는 없다. 도 4 및 도 5의 경우 중 어느 하나에서, 인터페이스(Interface1, I1)의 기능상 핵심(functional spirit)은 도 2 및 도 3과 각각 여전히 동일하다. 인터페이스의 인수분해는 또한 결합(associative), 교환(commutative) 및 기타 수학적 성질을 따를 수 있으며, 따라서 인수분해를 알아내기가 어려울 수도 있다. 예를 들어, 동작의 순서는 중요하지 않을 수 있으며, 그 결과 인터페이스에 의해 수행되는 기능이 인터페이스에 도달하기 훨씬 이전에 다른 코드 또는 인터페이스에 의해 수행되거나 시스템의 별도의 컴포넌트에 의해 수행될 수 있다. 게다가, 프로그래밍 분야의 당업자라면 동일한 결과를 달성하는 서로 다른 함수 호출을 행하는 다양한 방식이 있다는 것을 잘 알 수 있다.
어떤 경우에, 의도한 결과를 여전히 달성하면서 프로그래밍 인터페이스의 어떤 측면들(예를 들어, 매개변수)을 무시, 추가 또는 재정의하는 것이 가능할 수 있다. 이것이 도 6 및 도 7에 도시되어 있다. 예를 들어, 도 2의 인터페이 스(Interface1)가 함수 호출 Square(input, precision, output)(이 호출은 3개의 매개변수, input(입력), precision(정도) 및 output(출력)을 포함하고 제1 코드 세그먼트로부터 제2 코드 세그먼트로 발행됨)을 포함하는 것으로 가정하자. 중간 매개변수 precision이 주어진 시나리오에서 중요하지 않은 경우, 도 6에 도시된 바와 같이, 이것도 역시 무시되거나 심지어 의미없는(이 상황에서) 매개변수로 대체될 수 있다. 또한, 중요하지 않은 부가의 매개변수를 추가할 수도 있다. 여하튼간에, 제2 코드 세그먼트에 의해 입력이 제곱된 후에 출력이 반환되는 한, 제곱의 기능이 달성될 수 있다. precision(정도)는 확실히 컴퓨터 시스템의 어떤 다운스트림 또는 다른 부분에 의미있는 매개변수일 수 있다. 그렇지만, 정도(precision)가 제곱을 계산하는 좁은 목적에 필요하지 않은 것으로 인식되는 경우, 이는 대체되거나 무시될 수 있다. 예를 들어, 유효한 정도(precision) 값을 전달하는 대신에, 결과에 악영향을 주지 않고 생일 등의 의미없는 값이 전달될 수 있다. 이와 유사하게, 도 7에 도시된 바와 같이, 인터페이스(I1)가 인터페이스(I1')로 대체되고, 매개변수를 무시하거나 매개변수를 인터페이스에 추가하도록 재정의된다. 인터페이스(I2)도 이와 유사하게 인터페이스(I2')로 재정의될 수 있으며, 불필요한 매개변수 또는 다른 곳에서 처리될 수 있는 매개변수를 무시하도록 재정의될 수 있다. 여기서의 요점은 어떤 경우에 프로그래밍 인터페이스가 어떤 목적에 필요하지 않는 매개변수 등의 측면들을 포함할 수 있으며 따라서 이들이 무시 또는 재정의되거나 다른 목적으로 다른 곳에서 처리될 수 있다는 것이다.
또한, 2개의 개별적인 코드 모듈의 기능의 일부 또는 그 전부를 병합하여 이 들 간의 "인터페이스"의 형태가 변경되도록 하는 것이 가능할 수 있다. 예를 들어, 도 2 및 도 3의 기능이 도 8 및 도 9의 기능으로 각각 변환될 수 있다. 도 8에서, 도 2의 이전의 제1 및 제2 코드 세그먼트가 이들 둘다를 포함하는 모듈로 병합된다. 이 경우에, 이들 코드 세그먼트는 여전히 서로 통신을 할 수 있지만 그 인터페이스는 단일의 모듈에 더 적합한 형태로 개조될 수 있다. 따라서, 예를 들어, 형식적인 Call 및 Return문이 더 이상 필요하지 않을 수 있지만, 인터페이스(Interface1)에 따른 유사한 처리 또는 응답(들)은 여전히 유효할 수 있다. 이와 유사하게, 도 9에 도시된 바와 같이, 도 3으로부터의 인터페이스(I2)의 일부(또는 그 전부)는 인터페이스(I1) 내에 인라인으로 작성되어 인터페이스(I1")를 형성할 수 있다. 도시된 바와 같이, 인터페이스(I2)는 I2a 및 I2b로 나누어지고, 인터페이스 부분(I2a)은 인터페이스(I1)에 인라인 코딩되어 인터페이스(I1")를 형성한다. 구체적인 예에 있어서, 도 3으로부터의 인터페이스(I1)가 함수 호출 square(input, output)를 수행하고, 이것이 인터페이스(I2)에 의해 수신되며, 인터페이스(I2)가, 제2 코드 세그먼트에 의해 (input(입력)을 제곱하기 위해) input(입력)으로 전달된 값을 처리한 후에, 제곱된 결과를 output(출력)으로 다시 전달하는 것을 생각해보자. 이러한 경우에, 제2 코드 세그먼트에 의해 수행되는 처리(input을 제곱하는 것)는 인터페이스에 대한 호출 없이 제1 코드 세그먼트에 의해 수행될 수 있다.
한 코드 세그먼트로부터 다른 코드 세그먼트로의 통신은 그 통신을 다수의 개별적인 통신으로 나눔으로써 간접적으로 달성될 수 있다. 이것은 도 10 및 도 11에 개략적으로 도시되어 있다. 도 10에 도시된 바와 같이, 제1 인터페이스(Interface1)를 통한 통신을 다른 인터페이스(이 경우에, 인터페이스(Interface2A, Interface2B, Interface2C))에 부합하도록 그 통신을 변환하기 위해, 하나 이상의 미들웨어(들)(분리 인터페이스(divorce interface)(들). 왜냐하면 이들이 기능 및/또는 인터페이스 함수를 원래의 인터페이스로부터 분리시키기 때문임)가 제공된다. 이것은 예를 들어 Interface1 프로토콜에 따라, 이를테면, 운영 체제와 통신을 하도록 설계되어 있는 베이스 응용 프로그램(base of application)이 설치되어 있지만 그 운영 체제가 다른 인터페이스(이 경우에, 인터페이스(Interface2A, Interface2B, Interface2C))를 사용하도록 변경되어 있는 경우에 행해질 수 있다. 여기서의 요점은 제2 코드 세그먼트에 의해 사용되는 원래의 인터페이스가 변경되어 더 이상 제1 코드 세그먼트에 의해 사용되는 인터페이스와 호환되지 않게 되고 따라서 이전의 인터페이스와 새로운 인터페이스가 호환되도록 하기 위해 매개물이 사용된다는 것이다. 이와 유사하게, 도 11에 도시된 바와 같이, 제3 코드 세그먼트가 인터페이스(I1)로부터 통신을 수신하기 위해 분리 인터페이스(DI1)에 도입될 수 있고 또 인터페이스 기능을 예를 들어 인터페이스(I2a, I2b)(DI2에 대해 동작하지만 동일한 기능상 결과를 제공하도록 재설계되어 있음)로 전송하기 위해 분리 인터페이스(DI2)에 도입될 수 있다. 이와 유사하게, DI1 및 DI2는 협력하여 도 3의 인터페이스(I1, I2)의 기능을 동일 또는 유사한 기능상 결과를 제공하면서 새로운 운영 체제에 맞게 변환시킬 수 있다.
또다른 가능한 변형예는 인터페이스 기능을 다른 무언가로 대체시키지만 동 일한 전체적인 결과를 달성하는 코드를 동적으로 재작성하는 것이다. 예를 들어, 실행 환경(.Net 프레임워크, Java 런타임 환경 또는 다른 유사한 런타임 유형 환경에 의해 제공되는 것 등)에서 중간 언어(intermediate language)(예를 들어, Microsoft IL, Java ByteCode, 기타)로 제공되는 코드 세그먼트가 JIT(Just-in-Time) 컴파일러 또는 인터프리터(interpreter)에 제공되는 시스템이 있을 수 있다. JIT 컴파일러는 제1 코드 세그먼트로부터의 통신을 제2 코드 세그먼트로 동적으로 변환하도록, 즉 그 통신을 제2 코드 세그먼트(원래의 또는 다른 제2 코드 세그먼트 중 어느 하나)에 의해 필요로 될 수 있는 다른 인터페이스에 부합시키도록 작성될 수 있다. 이것은 도 12 및 도 13에 도시되어 있다. 도 12에서 알 수 있는 바와 같이, 이 방식은 상기한 분리(Divorce) 시나리오와 유사하다. 이는, 예를 들어, 설치된 베이스 응용 프로그램이 Interface1 프로토콜에 따라 운영 체제와 통신을 하도록 설계되어 있지만 운영 체제가 다른 인터페이스를 사용하도록 변경되는 경우에 행해질 수 있다. 설치된 베이스 응용 프로그램으로부터의 동작 중인 통신을 운영 체제의 새로운 인터페이스에 부합시키기 위해 JIT 컴파일러가 사용될 수 있다. 도 13에 도시된 바와 같이, 인터페이스(들)를 동적으로 재작성하는 이 방식은 또한 인터페이스(들)를 동적으로 인수분해하거나 다른 방식으로 변경하기 위해 적용될 수 있다.
또한 유의할 점은 대안적인 실시예를 통해 인터페이스와 동일한 또는 유사한 결과를 달성하기 위한 상기한 시나리오들이 또한 여러가지 방식으로, 직렬로 및/또는 병렬로, 또는 다른 중재 코드로 조합될 수 있다는 것이다. 따라서, 이상에 제 공된 대안적인 실시예는 상호 배타적이지 않으며, 도 2 및 도 3에 제공된 일반적인 시나리오들과 동일한 또는 동등한 시나리오를 생성하기 위해 혼합(mix), 정합(match) 및 결합(combine)될 수 있다. 또한, 유의할 점은, 대부분의 프로그래밍 구조(programming construct)에서와 같이, 본 명세서에 기술되어 있지 않을 수 있지만 그럼에도 불구하고 본 발명의 정신 및 범위에 의해 표현되는 인터페이스의 동일 또는 유사한 기능을 달성하는 다른 유사한 방식들이 있다는 것이다. 즉, 유의할 점은 적어도 부분적으로 인터페이스에 의해 표현되는 기능 및 그에 의해 가능하게 되는 유익한 결과들이 인터페이스의 가치의 근간을 이룬다는 것이다.
사용자 인터페이스는 응용 프로그램을 실행하고 운영 체제를 관리하는 데 필요한 객체들에의 액세스를 사용자에게 제공한다. 이들 객체는 컴퓨터의 디스크 드라이브 상에 존재할 수 있는 폴더 및 파일을 포함할 수 있다. 쉘(Shell)은 사용자 인터페이스를 통해 또는 응용 프로그램을 통해 이들 객체를 계층적 이름공간 구조로 조직화한다. 쉘은 그의 위치 및 존재를 시스템이 알고 있을 수 있고 그에의 액세스가 시작 메뉴 등의 쉘 내의 수많은 곳으로부터 제공되는 특수 폴더를 포함할 수 있다.
본 발명의 한 측면에서, 시스템 상의 각각의 개별적인 기지 폴더를 지정하는 데 GUID(globally unique identifier)가 이용될 수 있다. 이들 기지 폴더는 가상 폴더(virtual folder), 고정 파일-시스템 폴더(fixed file-system folder), 공용 폴더(common folder) 및 사용자별 폴더(per-user folder)를 포함하는 4개의 카테고리 중 하나에 속할 수 있다.
가상 폴더는 쉘 이름공간에 나타나는 가상 쉘 폴더(virtual shell folder)일 수 있으며 그와 연관된 어떤 실제 시스템 폴더도 갖지 않을 수 있다. 예를 들어, 제어판(Control Panel) 폴더 및 프린터(Printer) 폴더는 어떤 실제 파일 시스템 폴더에 의해서도 백업되지 않고 쉘 가상 이름공간에만 존재하는 가상 폴더일 수 있다. 고정 파일 폴더는 쉘에 의해 관리되지 않고 시스템이 설치될 때 그의 위치가 고정되어 있는 파일 시스템 폴더일 수 있다. 예를 들어, "Windows" 폴더 및 "Program Files" 폴더는 고정 폴더이다. 공용 폴더는 사용자들 간에 데이터 및 설정을 공유하는 데 사용될 수 있는 파일 시스템 폴더일 수 있다. 예를 들어, 기계의 모든 사용자는 공용 바탕화면(desktop) 폴더를 공유할 수 있다. 마지막으로, 사용자별 폴더는 개인의 프로필 아래에 위치되고 개인 사용자에 의해 소유되는 파일 시스템 폴더일 수 있다. 예를 들어, "%USERPROFILE%\Pictures"는 현재 사용자의 그림에 대한 폴더이다.
본 발명의 한 측면에서, 기지 폴더 기능은 Win32 및 Com API 둘다에 제공될 수 있다. Win32 API는 SHFolderPath API에 후방 호환성을 제공할 수 있다. SHFolderPath API는 그 각자의 폴더에 대한 새로운 FOLDERID에 대한 CSIDL의 하드코딩된 매핑 리스트를 갖는 Com API의 래퍼(wrapper)일 수 있다.
후방 호환성을 지원하기 위해, 기지 폴더(knownfolder) 인터페이스는 SHGetFolderLocationEx(), SHGetFolderPathEx(), 및 SHSetFolderPathEx()를 포함하는 3개의 Win32 API 호출을 지원할 수 있다.
SHGetFolderLocationEx() API는 SHGetFolderlocation() API를 포함하며, 지 정된 KnownFolderID에 대한 KnownFolderID PIDL을 검색하는 것 등의 부가의 기능 및/또는 요청된 Knownfolder가 아직 존재하지 않는 경우 이를 생성하도록 지정하는 기능을 호출자에게 제공할 수 있다. SHGetFolderLocationEX() API(1400)은 도 14에 도시되어 있다. SHGetFolderLocationEX() API(1400) 매개변수는 rfid 매개변수(1401)를 포함한다. rfid 매개변수(1401)는 기지 폴더에 대한 GUID 식별자를 나타낼 수 있다. dwFlags 매개변수(1402)는 폴더가 참조될 때 수행될 특수 옵션들을 지정할 수 있다. dwFlag 매개변수(1402)에 대한 기존값은 0일 수 있다. dwFlag 매개변수(1402)에 대한 다른 예시적인 값은 이하의 표 1에 나타내어져 있다.
dwFlag 값 설명
KF_FLAG_CREATE 플래그가 지정될 때, 폴더가 존재하지 않는 경우 API가 그 폴더를 생성하려고 시도한다
KF_FLAG_DONT_VERIFY 플래그가 지정될 때, API가 폴더 경로가 저장되어 있는지를 확인하지 않는다.
KF_FLAG_NO_ALIAS 플래그가 지정될 때, API가 별칭이 있는(aliased) PIDL을 매핑하려고 시도하지 않는다.
KF_FLAG_PER_USER_INIT 사용자별 초기화가 실행되어야 한다는 것을 지정한다.
hToken 매개변수(1403)는 사용자별 기지 폴더의 소유자를 지정할 수 있다. 기지 폴더 중 일부, 예를 들어, "내 문서" 폴더는 사용자별 폴더이다. 모든 사용자는 그의 "내 문서" 폴더에 대한 서로 다른 경로를 가질 수 있다. hToken 매개변수(1403)가 값 NULL을 갖는 경우, API는 그 폴더의 현재 사용자(호출자)의 인스턴스(instance)에 액세스하려고 시도할 수 있다. hToken 매개변수(1403)가 유효한 사용자 토큰을 갖는 경우, API는 이 토큰을 사용하여 사용자를 가장(impersonate)하려고 시도하고 또 그 사용자의 인스턴스에 액세스하려고 시도한다. 게다가, hToken 매개변수(1403)가 값 -1을 갖는 경우, API는 기본 사용자(default user)의 폴더에 액세스하려고 시도할 수 있다. ppidl 매개변수(1404)는 요청된 기지 폴더의 PIDL을 반환할 수 있다.
SHGetFolderPathEx() API는 SHGetFolderPath() API를 포함하고 기지 폴더의 실제 파일 시스템 경로를 호출자에게 제공할 수 있다. SHGetFolderPathEx() API(1500)는 도 15에 도시되어 있다. SHGetFolderPathEx() API(1500) 매개변수는, rfid 매개변수(1401), dwFlags 매개변수(1402), 및 hToken 매개변수(1403) 등의, SHGetFolderLocationEx() API(1400)에서 상기한 바와 유사한 매개변수를 포함할 수 있다. 게다가, SHGetFolderPathEx() API(1500)는 또한 pszPath 매개변수(1508) 및 cchPath 매개변수(1509)를 포함할 수 있다. pszPath 매개변수(1508)는 기지 폴더의 경로를 반환할 수 있는 반면, cchPath 매개변수(1509)는 pszPath 매개변수(1508)의 버퍼 크기를 지정할 수 있다. 게다가, SHGetFolderPathEx() API(1500)는 이하의 표 2에 나타낸 바와 같이 사용할 수 있는 부가적인 dwFlag 값을 가질 수 있다.
dwFlag 값 설명
KF_FLAG_DEFAULT_PATH 몇몇 기지 폴더는 디폴트 위치와 다른 위치로 리디렉션될 수 있다. 아무런 플래그도 지정되지 않은 경우, API는 폴더의 현재의 (리디렉션된) 경로를 반환하지 않는다. 플래그가 지정된 경우, API는 지정된 기지 폴더의 원래의 디폴트 위치를 반환한다.
KF_FLAG_PARENT_RELATIVE 그의 부모의 현재의 위치와 무관한 "이름공간 원본(namespace original)" 기본 경로를 제공하기 위해 KF_FLAG_DEFAULT_PATH와 함께 사용된다.
KF_FLAG_SHARE_PATH 이 폴더에 대응하는 원격 공유 경로, 예를 들어, \\computer\users$\ming\Documents를 지정하는 데 사용된다.
SHSetFolderPathEx() API(1600)은 SHSetFolderPath() API를 포함하며, 호출자가 주어진 기지 폴더에 대한 경로를 설정할 수 있게 해줄 수 있다. SHSetFolderPathEx()API(1600)는 도 16에 도시되어 있다. SHSetFolderPathEx() API(1600) 매개변수는, rfid 매개변수(1401), dwFlags 매개변수(1402), 및 hToken 매개변수(1403) 등의, SHGetFolderLocationEx() API(1400)에서 상기한 바와 유사한 매개변수를 포함할 수 있다. 게다가, SHSetFolderPathEx() API(1600)는 또한 기지 폴더에 대한 리디렉션된 경로를 지정하는 데 사용될 수 있는 pszPath 매개변수(1608)를 포함할 수 있다. 게다가, SHSetFolderPathEx() API(1600)는 이하의 표 3에 나타낸 바와 같이 사용가능한 부가적인 dwFlag 값을 가질 수 있다.
dwFlag 값 설명
KF_FLAG_DONT_UNEXPAND 문자열이 제공된 그대로 레지스트리에 기록되도록 보장하기 위해 KF_FLAG_DONT_UNEXPAND 값을 추가한다. KF_FLAG_DONT_UNEXPAND 플래그가 포함되지 않은 경우, 경로의 일부분이 %USERPROFILE% 등의 환경 문자열로 대체될 수 있다.
상기한 바와 같이, 본 발명의 다른 측면에서, 기지 폴더 기능은 Com API에 의해 제공될 수 있다. COM 인터페이스는 IKnownFolder API, IKnownFolderManager API, IEnumKnownFolder 인터페이스, 및 IKnownFolderHandler를 포함할 수 있다.
도 17에 나타낸 바와 같이, IKnownFolder API(1700)는 정의된 기지 폴더에 대한 GUID 값 및/또는 PIDL 값을 얻는 기능을 응용 프로그램에 제공한다. 게다가, IKnownFolder API(1700)는 정의된 기지 폴더에 대한 경로를 얻거나(get) 또는 설정(set)할 수 있다. IKnownFolder API 매개변수는 GetID() 매개변수(1701)를 포함할 수 있다. GetID() 매개변수(1701)는 지정된 기지 폴더에 대한 GUID를 획득할 수 있다. GetCategory() 매개변수(1702)는 지정된 기지 폴더에 대한 기지 폴더 카테고리(category)를 검색할 수 있다. 기지 폴더 카테고리는 가상 폴더 카테고리, 고정 파일 시스템 카테고리, 공용 폴더 카테고리 및/또는 사용자별 폴더 카테고리를 포함할 수 있다.
IKnownFolder API(1700)의 부가적인 매개변수는 GetPath() 매개변수(1703), SetPath() 매개변수(1704), GetLocation() 매개변수(1705), 및 a Getltem() 매개변수(1706)를 포함할 수 있다. GetPath() 매개변수(1703)는 주어진 기지 폴더에 대한 경로를 획득할 수 있다. SethPath() 매개변수(1704)는 기지 폴더에 대한 경로를 설정할 수 있다. GetLocation() 매개변수(1705)는 기지 폴더와 연관된 PIDL을 제공할 수 있는 반면, Getltem() 매개변수(1706)는 지정된 폴더와 연관된 쉘(Shell) 인터페이스를 검색할 수 있다.
게다가, IKnownFolder API(1700)에 의해 리디렉션이 제공될 수 있다. 리디렉션은 IsRedirectable() 매개변수(1707), IsValidFolderPath() 매개변수(1708), Redirect() 매개변수(1709), 및 RedirectWithUI() 매개변수(1710)의 사용을 통해 지정될 수 있다. IsRedirectable() 매개변수(1707)는 지정된 기지 폴더가 리디렉션될 수 있는지를 알아보려고 검사하는 데 제공될 수 있다. IsValidFolderPath() 매개변수(1708)는 제공된 경로가 리디렉션에 유효한 경로인지를 확인할 수 있다. Redirect() 매개변수(1709)는 지정된 기지 폴더를 지정된 경로로 리디렉션할 수 있다. Redirect WithUI() 매개변수(1710)는 기지 폴더를 지정된 경로로 리디렉션하는 동안에 사용자 인터페이스를 보여줄 수 있다.
본 발명의 다른 측면에서, IKnownFolderManager API가 제공될 수 있다. 도 18에 도시한 바와 같이, IKnownFolderManager API(1800)는 기지 폴더를 생성 또는 삭제하는 기능을 제공할 수 있다. IKnownFolderManager API(1800)는 또한 기지 폴더의 설명, 기지 폴더의 카테고리, 기지 폴더의 소유권 정보, 및/또는 기지 폴더의 상대 경로 등의 기지 폴더의 정의를 관리할 수 있다. 게다가, IKnownFolderManager API(1800)는 컴퓨팅 시스템 상에서 또는 컴퓨팅 시스템 환경 상에서 이용가능한 모든 기지 폴더를 열거하는 기능을 제공할 수 있다. 예를 들어, IKnownFolderManager API(1800)는 컴퓨터 네트워크에 액세스하는 사용자가 이용가능한 모든 기지 폴더를 열거할 수 있다.
본 발명의 한 측면에 따르면, IKnownFolderManager API(1800)는 다수의 매개변수를 포함할 수 있다. 예를 들어, IKnownFolderManager API(1800)는 FolderIdFromCSIDL() 매개변수(1801)를 포함할 수 있다. FolderIdFromCSIDL() 매개변수(1801)는 지정된 CSIDL과 연관된 KnownFolder_ID를 검색하는 데 사용될 수 있다. 따라서, FolderldFromCSIDL() 매개변수(1801)는 CSIDL과 KnownFolder_ID 간의 변환을 제공할 수 있다. 이와 유사하게, FolderldToCSIDL() 매개변수(1802)는 지정된 KnownFolder_ID에 대한 CSIDL 값을 획득하도록 정의될 수 있다.
GetFolder() 매개변수(1803)는 또한 IKnownFolderManager API(1800)의 매개변수로서 정의될 수 있다. GetFolder() 매개변수(1803)는 또한 기지 폴더의 ID가 이용가능한 경우 직접 특정의 기지 폴더에 대한 정보를 획득하는 데 이용될 수 있다. GetFolder() 매개변수(1803)는 기지 폴더에 대한 GUID 값, 기지 폴더 카테고리, 기지 폴더 경로, 및/또는 기지 폴더와 연관된 PIDL 등의 정보를 획득하기 위해 IKnownFolder 포인터를 반환할 수 있다. GetFolder() 매개변수(1803)와 유사하게, 특정 사용자에 속하는 기지 폴더에 대한 경로를 얻는 기능을 호출자에게 제공하는 GetFolderForUser() 매개변수(1804)도 정의될 수 있다.
도 18을 참조하면, 지정된 KnownFolder_ID와 연관된 모든 속성을 획득하기 위해 GetFolderDefinition() 매개변수(1805)가 제공될 수 있다. 본 발명의 한 측면에 따르면, 도 19에 나타낸 바와 같이, KnownFolder_Definition 구조체(1900)가 정의될 수 있다. KnownFolder_Definition 구조체(1900)는 도 19에 나타내고 또 표 4에 더 설명되어 있는 바와 같이 다수의 정의된 필드를 포함할 수 있다. 이들 필드는 category(1910), pszName(1911), pszCreator(1912), pszDescription(1913), pfidParent(1914), pszRelativePath(1915), pszParsingName(1916), pszTooltip(1917), pszLocalizedName(1918), pszIcon(1919), pszSecurity(1920), dwAttributes(1921), pszLegacyPath(1922), clsidHandler(1923), 및 kfdFlags(1924)를 포함할 수 있다.
필드 설명
category 지정된 폴더가 어느 기지 폴더 카테고리에 속하는지를 나타낸다.
pszName 기지 폴더에 대한 비지역화된 이름(non-localized name)을 제공한다.
pszCreator 기지 폴더를 정의하는 응용 프로그램 이름
pszDescription 기지 폴더가 무엇을 나타내는지에 대한 간단한 설명
pfidParent 및
pszRelativePath
특정의 기지 폴더가 다른 기지 폴더 아래에 생성되어야만 함을 나타내기 위해 공용 및 사용자별 폴더에서 이용될 수 있다.
pszParsingName 이 필드는 가상 폴더가 쉘 이름공간 폴더 경로를 나타내는 데 이용될 수 있다.
pszTooltip 이 필드는 API에 의해 폴더가 생성될 때 기지 폴더에 사용되는 기본 도구 설명(default tool tip)을 나타낼 수 있다.
pszLocalizedName API에 의해 폴더가 생성될 때 이 기지 폴더에 대해 사용되는 지역화된 이름의 기본값
pszIcon API에 의해 폴더가 생성될 때 기지 폴더에 사용되는 기본 아이콘
pszSecurity API에 의해 폴더가 생성될 때 이 기지 폴더에 사용되는 보안 기술자 기본값을 기술하는 SDDL 형식 문자열. 널(null)인 경우, 이 기지 폴더의 보안은 부모로부터 상속될 수 있다.
dwAttributes 이 폴더가 생성될 때 설정되는 읽기 전용 등의 기본 파일 시스템 속성
pszLegacyPath 폴더에 대한 레거시 경로를 제공한다. 이는 마이그레이션/로밍 및 응용 프로그램 호환성에서 사용될 수 있다.
clsidHandler 이 기지 폴더의 생성 및 삭제 등의 어떤 이벤트에서 어떤 사용자 지정 작업을 하기 위해 호출될 수 있는 IKnownFolderHandler 객체를 지정할 수 있다.
dwDefinitionFlags 이 기지 폴더에 대한 보다 미세한 거동을 기술하는 몇가지 플래그를 정의한다. 이들 플래그는 이하의 것들을 포함할 수 있다.
KFDF_PERSONALIZE - 폴더에 대한 개인화 이름을 디스플레이한다.
KFDF_LOCAL_REDIRECT_ONLY - 로컬 디스크로 리디렉션될 수 있다.
KFDF_ROAMABLE - PC간 동기(PC to PC sync)를 통해 로밍할 수 있다.
도 18을 참조하면, 시스템에 대한 기지 폴더를 생성 또는 삭제하기 위해 RegisterFolder() 매개변수(1806) 및 UnregisterFolder() 매개변수(1807)가 제공될 수 있다. RegisterFolder() 매개변수(1806)는 사용자 또는 호출자에게 유효한 KnownFolder_Definition을 지정하도록 요청할 수 있다. UnregisterFolder() 매개변수(1808)는 요청될 때 KnownFolder_Definition 정의를 삭제할 수 있다.
GetEnumKnownFolders() 매개변수(1809) 및 GetEnumKnownFoldersForUser() 매개변수(1810) 등의 부가의 매개변수가 또한 IKnownFolderManager API(1800)에서 사용하기 위해 정의될 수 있다. GetEnumKnownFolders() 매개변수(1809)는 시스템 상의 모든 기지 폴더를 열거하는 포인터를 반환할 수 있는 반면, GetEnumKnownFoldersForUser() 매개변수(1810)는 특정의 사용자에 대한 기지 폴더를 열거하는 기능을 호출자에게 제공할 수 있다. 마지막으로, FindFolderFromPath() 매개변수(1811)는 제공된 파일 시스템 경로에 대한 관련된 기지 폴더 ID를 획득하는 기지 폴더 포인터를 반환할 수 있다.
본 발명의 다른 측면에서, IEnumKnownFolder() API가 제공될 수 있다. 도 20에 나타낸 바와 같이, IEnumKnownFolder() API(2000)는 기지 폴더를 열거하는 기능을 제공할 수 있다. GetEnumKnownFolders() 매개변수(1809) 및 GetEnumKnownFoldersForUser() 매개변수(1810)는 시스템 상의 모든 기지 폴더의 열거(enumeration)를 얻는 IEnumKnownFolder() API(2000)에 대한 포인터를 반환할 수 있다. IEnumKnownFolder() API(2000)는 Next()(2001), Skip()(2002), Reset()(2003), 및 Clone()(2004) 등의 매개변수를 포함할 수 있다. Next() 매개변수(2001)는 열거 시퀀스(enumeration sequence)에서 지정된 수의 항목 식별자를 검색하고 검색된 항목의 수만큼 현재 위치를 전진시킬 수 있다. Skip() 매개변수(2002)는 열거 시퀀스에서 지정된 수의 요소를 건너뛸 수 있다. Reset() 매개변수(2003)는 인터페이스를 열거 시퀀스의 시작으로 복귀시킬 수 있다. Clone() 매개변수(2004)는 현재의 것과 동일한 내용 및 상태를 갖는 새로운 열거 객체(enumeration object)를 생성할 수 있다.
본 발명의 다른 측면에서, IKnownFolderHandler() API가 제공될 수 있다. 도 21에 나타낸 바와 같이, IKnownFolderHandler() API(2100)는 다른 컴포넌트가 기지 폴더의 생성 및/또는 삭제를 위한 특수 코드를 추가하는 기능을 제공할 수 있다. IKnownFolderHandlerO API(2100)는 GetDefaultLocation()(2101), FolderCreated()(2102), 및 FolderRemoved()(2103) 등의 매개변수를 포함할 수 있다. GetDefaultLocation() 매개변수(2101)는 기지 폴더에 대한 기본 위치를 검색할 수 있다. FolderCreated() 매개변수(2102)는 지정된 기지 폴더가 생성될 때 핸들러를 개시할 수 있다. 게다가, FolderRemoved() 매개변수(2103)는 지정된 기지 폴더가 삭제될 때 핸들러를 개시할 수 있다. 이것은 응용 프로그램에 의해 생성된 기지 폴더가 생성 또는 삭제될 때 응용 프로그램이 사용자 지정 코드(custom code)를 실행하는 기능을 제공할 수 있다.
도 22는 본 발명의 한 측면에 따른, 요청측 컴포넌트(2201)가 운영 체제(2202)에 대한 프로그램 인터페이스 호출을 이용하는 것을 나타낸 것이다. 본 발명의 이 측면에서, 요청측 컴포넌트(2201)는 응용 프로그램이지만, 다른 실시예들에서, 요청측 컴포넌트(2201)는, 도 1에 나타낸 바와 같이, 컴퓨터(110)의 주변 하드웨어 내에 통합될 수 있다.
요청측 컴포넌트(2201)는, 개발자 또는 사용자에 의해 설치될 때, 컴퓨터(110) 상에 기존의 기지 폴더를 생성, 열거 또는 관리하기로 결정할 수 있다. 예를 들어, 도 22의 응용 프로그램(2201)은, 응용 프로그램이 설치될 때 새로운 기지 폴더를 레지스트리(2203)에 직접 추가함으로써, 사용자 프로필 내부에 새로운 폴더를 생성할 수 있다. 게다가, 새로운 기지 폴더는 IKnownFolderManager API 등의 KnownFolder API(2210)를 통해 추가될 수 있다. 개발자 또는 사용자는, 응용 프로그램(2201)을 통해, 새로운 기지 폴더를 생성하기 위해 IKnownFolderManager API(1800) 등의 API를 호출할 수 있다. 개발자 또는 사용자는, 응용 프로그램을 통해, 새로운 기지 폴더에 대한 고유의 식별자가 되는 GUID(2251)를 제공할 수 있다. 개발자 또는 사용자는 또한 새로운 기지 폴더와 연관되어질 표준 속성에 추가하여 부가적인 속성(2252)을 정의할 수 있다. 도 22를 참조하면, 응용 프로그램(2201)은 KnownFolder API(2210)에 대한 호출 등의 호출(2250)을 전송한다. 입력(2250)에 응답하여, IKnownFolderManager API(1800)는 운영 체제(2202)를 사용하여 운영 체제(2202)의 레지스트리(2203)에 새로운 기지 폴더를 등록한다. 운영 체제는, 이에 응답하여, 새로운 기지 폴더의 경로(2260)를 응용 프로그램(2201)으로 전송할 수 있다.
도 22a는 본 발명의 다른 측면을 나타낸 것이다. 도 22a를 참조하면, 프로그램 인터페이스 호출을 이용하는 응용 프로그램(2201)은 KnownFolder API(2210)를 통해 기지 폴더의 위치에 대한 ID(2260)와 함께 요청을 전송할 수 있다. KnownFolder API(2210)는 레지스트리(2203)에서 기지 폴더 ID의 리스트(2280)를 그의 대응하는 저장 위치와 함께 검색할 수 있다. KnownFolder API(2210)는, 기지 폴더가 위치되어 있을 수 있는 로컬 저장소(2255) 등의 특정의 저장 장치에 대한 요청(2261)을 통해, 레지스트리에 지정된 저장 위치가 유효함을 확인할 수 있다. 위치를 확인할 시에, KnownFolder API는 요청된 기지 폴더의 경로를 다시 응용 프로그램으로 반환할 수 있다. 예를 들어, 호출(2260)을 통해 응용 프로그램(2201)에 의해 내 그림(My Pictures)(2270) 기지 폴더가 요청될 수 있다. KnownFolder API(2210)는 레지스트리 리스트(registry listing)(2280)의 검사를 통해 그림(Pictures)(2270) 기지 폴더의 위치를 구할 수 있다. KnownFolder API(2210)는 로컬 저장소(2255)에 대한 요청(2261)을 통해 그 위치가 존재함을 확인할 수 있고, 확인 시에, 로컬 저장소(2252) 상의 그림(Pictures) 위치(2262)로의 경로를 응용 프로그램(2201)으로 반환할 수 있다.
내 그림(My Pictures) 기지 폴더(2270)는 로컬 저장소(2252)로부터 네트워크 저장소(2256)로 이동될 수 있다. 내 그림 기지 폴더(2270)의 재배치(relocation)는 내 그림 기지 폴더(2270)에 대한 위치 경로를 변경한다. 내 그림 기지 폴더(2270)의 위치는 레지스트리(2203)에서 갱신될 수 있다. 이와 유사하게, 내 그림 기지 폴더(2270)의 웹사이트 위치(2257) 등의 다른 위치로의 이동(2295)은 또한 레지스트리(2203)를 내 그림 기지 폴더(2270)의 새로운 위치로 갱신하는 것을 개시할 수 있다.
도 23은 본 발명의 한 측면에 따른 새로운 기지 폴더를 생성하는 방법을 나타낸 것이다. 도 23을 참조하면, 운영 체제 등의 컴포넌트는, 단계(2301)에서, 제1 컴포넌트로부터 GUID를 갖는 호출을 수신할 수 있다. 제1 컴포넌트는 개발자 또는 사용자에 의해 설치 또는 초기화되는 응용 프로그램을 포함할 수 있다. 운영 체제에 의한 호출의 수신 시에, 운영 체제는, 단계(2302)에서, 응용 프로그램에 의해 제공되는 GUID를 추출할 수 있다. 이 호출은 또한 새로운 기지 폴더의 생성에서 사용하기 위한 속성 등의 부가 정보를 포함할 수 있다. 이들 속성은 category, pszName, pszCreator, pszDescription, pfidParent, pszRelativePath, pszParsingName, pszTooltip, pszLocalizedName, pszIcon, pszSecurity, dwAttributes, pszLegacyPath, clsidHandler, 및 a kdfFlags 등의 새로운 기지 폴더를 정의하는 정보를 포함할 수 있다.
추출된 GUID 및 제공된 부가 정보에 기초하여, 단계(2303)에서, 새로운 기지 폴더가 생성될 수 있다. 단계(2304)에 나타낸 바와 같이, 새로운 기지 폴더는 운영 체제의 레지스트리에 포함될 수 있다. 단계(2405)에서, 운영 체제는 새로운 기지 폴더의 경로를 응용 프로그램으로 전송할 수 있다. 응용 프로그램은 로컬 또는 네트워크 시스템 상의 기존의 기지 폴더 전부를 열거할 수 있다.
본 발명이 본 발명을 실시하는 현재의 양호한 모드를 포함하는 특정예에 대해 기술되어 있지만, 당업자라면 첨부된 청구 범위에 기재된 본 발명의 정신 및 범위 내에 속하는 상기한 시스템 및 기술의 수많은 변형 및 치환이 있다는 것을 잘 알 것이다.

Claims (20)

  1. 컴퓨터 실행가능 명령어를 포함하고 있는 하나 이상의 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터 실행가능 명령어는 프로세서에 의해 실행되는 경우에 컴퓨팅 장치(들) 상에서 제공되는 제1 컴포넌트와 제2 컴포넌트 사이의 통신 방법을 수행하고,
    상기 방법은,
    기지 폴더(known folder)의 위치를 요청하는 상기 제1 컴포넌트로부터의 호출(call) - 상기 호출은 상기 기지 폴더의 ID를 포함하고, 상기 ID는 상기 기지 폴더의 상기 위치에 대한 시스템 독립적인 표시(system-independent indicia)를 제공하는 서수값(ordinal values)을 포함하고, 상기 기지 폴더는 계층적 파일 구조(hierarchical file structure)를 통해 운영 체제에 알려진(known) 애플리케이션을 실행하는 것을 용이하게 하는 객체를 포함함 - 을 수신하는 단계;
    상기 ID에 기초하여, 상기 계층적 파일 구조 내의 상기 기지 폴더의 고유 식별자(unique identifier)를 나타내는 아이덴티티 파라미터(identity parameter)를 제공하는 단계;
    상기 고유 식별자를 저장소 위치들(storage locations)에 대응하는 기지 폴더 ID들에 비교해 검사하는 것에 의해, 레지스트리에서 상기 기지 폴더의 상기 위치를 검색하는 단계;
    상기 레지스트리의 상기 검색을 만족하는 상기 저장소 위치들 중 하나의 저장소 위치에 대응하는 적절한 기지 폴더를 결정하는 단계;
    저장 장치(storage device) 상의 상기 계층적 파일 구조 내에서 상기 저장소 위치와 연관된 상기 적절한 기지 폴더의 위치를 찾는 것(locating)에 의해 상기 저장소 위치가 유효하다는 것을 확인하는 단계;
    상기 저장소 위치에서 상기 적절한 기지 폴더로부터의 데이터를 액세스하는 단계; 및
    상기 적절한 기지 폴더의 상기 제1 컴포넌트에 의한 이용에 대해 적어도 하나의 개발자들과 사용자들에게 알리는 새로운 속성을 상기 적절한 기지 폴더에 추가하는 단계
    를 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  2. 제1항에 있어서, 상기 저장소 위치는 로컬 하드 드라이브를 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  3. 제1항에 있어서, 상기 저장소 위치는 네트워크 드라이브를 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  4. 제1항에 있어서, 상기 저장소 위치는 웹사이트를 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  5. 제1항에 있어서,
    상기 방법은,
    상기 레지스트리에 있는 어떠한 저장소 위치도 상기 호출의 상기 ID에 대응되지 않는다는 것을 결정하는 단계; 및
    새로운 기지 폴더를 생성하고 상기 새로운 기지 폴더의 위치를 상기 제2 컴포넌트에 제공하는 단계
    를 더 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  6. 제1항에 있어서,
    상기 ID는 상기 기지 폴더의 CSIDL 값을 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  7. 제1항에 있어서,
    상기 방법은,
    상기 적절한 기지 폴더가 상기 저장 장치 상의 상기 대응되는 저장소 위치로부터 네트워크 내의 새로운 위치로 이동되었다는(relocated) 것을 인식하는 단계;
    상기 적절한 기지 폴더의 상기 저장소 위치를 상기 레지스트리 내의 상기 새로운 위치로 갱신하는 단계; 및
    상기 새로운 위치에서 상기 적절한 기지 폴더로부터의 데이터를 액세스하는 단계
    를 더 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  8. 컴퓨터 실행가능 명령어를 포함하고 있는 하나 이상의 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터 실행가능 명령어는 프로세서에 의해 실행되는 경우에 컴퓨팅 장치(들) 상에서 제공되는 애플리케이션과 운영체제 사이의 통신 방법을 수행하고,
    상기 방법은,
    상기 운영체제 상에서 상기 애플리케이션이 초기화되었다는 것을 인식하는 단계;
    초기화하는 것에 응해, 상기 운영체제에서 상기 애플리케이션으로부터 글로벌 고유 식별자(globally unique identifier; GUID)를 갖는 호출을 수신하는 단계 - 상기 GUID는 새로운 기지 폴더를 식별하기 위한 시스템 독립적 서수값을 포함함 - ;
    상기 호출로부터 상기 GUID를 추출하는 단계;
    상기 애플리케이션에 상기 새로운 기지 폴더의 상대적 위치를 지정하고(specify), 상기 새로운 기지 폴더의 카테고리를 설정하는 파라미터를 정할 것을 요청하는 단계 - 상기 새로운 기지 폴더는 연관된 실제 파일 시스템 폴더들이 없는 계층적 파일 구조 안에 나타나는 가상 폴더, 상기 운영체제가 설치될 때 위치가 고정되는 파일 시스템 폴더들을 갖는 고정 파일 시스템(fixed-file system), 사용자 간에 데이터와 설정을 공유하기 위해 이용되는 파일 시스템 폴더들을 갖는 공통 폴더(common folder), 및 개개인의 프로파일에 위치하고 상기 개개인에 의해 소유되는 파일 시스템 폴더를 갖는 사용자별(per-user) 폴더 중 적어도 하나를 포함하는 카테고리에 속함- ;
    상기 추출된 GUID에 기초하여 새로운 기지 폴더를 자동적으로 생성하는 단계
    - 상기 새로운 기지 폴더는 상기 애플리케이션에 의한 상기 새로운 기지 폴더의 이용을 적어도 하나의 개발자들 및 사용자들에 알리는 사용자 지정 속성(custom property)을 포함하며, 상기 새로운 기지 폴더는 상기 계층적 파일 구조 상에서 상기 상대적 위치에서 생성됨 - ;
    레지스트리 내에서 상기 새로운 기지 폴더를 등록하는 단계; 및
    상기 운영체제에 액세스 가능한 기지 폴더들의 목록을 열거하는 단계
    - 상기 열거하는 단계는 상기 애플리케이션에 상기 새로운 기지 폴더의 경로를 전송하는 단계를 포함하고, 상기 경로는 상기 새로운 기지 폴더가 생성되는 상기 상대적 위치를 나타냄 -
    를 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  9. 제8항에 있어서,
    상기 호출은 상기 새로운 기지 폴더의 상기 생성에 이용되기 위한 속성들을 더 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  10. 제9항에 있어서,
    상기 새로운 기지 폴더의 상기 속성은 category, pszName, pszCreator, pszDescription, pfidParent, pszRelativePath, pszParsingName, pszTooltip, pszLocalizedName, pszIcon, pszSecurity, dwAttributes, pszLegacyPath, clsidHandler, 및 kfdFlags로 이루어지는 그룹으로부터 선택되는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  11. 제8항에 있어서,
    상기 방법은 지정된 기지 폴더의 카테고리 유형을 질의하는 호출을 수신하는 단계를 더 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  12. 제8항에 있어서,
    상기 방법은 모든 기지 폴더의 열거에 대한 요청을 수신하는 단계를 더 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  13. 제8항에 있어서,
    상기 운영 체제는 일련의 응용 프로그래밍 인터페이스(application programming interface; API)를 저장하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  14. 제13항에 있어서,
    상기 일련의 응용 프로그래밍 인터페이스는 IKnownFolder, IKnownFolderManager, IEnumKnownFolder 인터페이스, 및 IKnownFolderHandler으로 이루어지는 그룹으로부터 선택되는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  15. 제13항에 있어서,
    상기 일련의 응용 프로그래밍 인터페이스는 SHGetFolderLocationEx(), SHGetFolderPathEx(), 및 SHSetFolderPathEx()로 이루어지는 그룹으로부터 선택되는 것인, 하나 이상의 컴퓨터 판독가능 저장 매체.
  16. 컴퓨터 실행가능 명령어를 포함하고 있는 하나 이상의 컴퓨터 판독가능 저장 매체로서, 상기 컴퓨터 실행가능 명령어는 프로세서에 의해 실행되는 경우에 컴퓨팅 장치(들) 상에서 제공되는 애플리케이션과 운영체제 사이의 통신 방법을 수행하고,
    상기 방법은,
    폴더의 소유자를 지정하고 유효한 사용자 토큰(valid user token)을 포함하는 토큰 파라미터(token parameter) 및 상기 폴더의 ID를 포함하는 애플리케이션으로부터의 호출을 수신하는 단계 - 상기 ID는 기지의 상기 폴더의 위치에 대한 시스템 독립적인 표시를 제공하는 서수값을 포함하고, 상기 폴더는 계층적 이름공간 구조(hierarchical namespace structure)를 통해 운영 체제에 알려진 상기 애플리케이션을 실행하는 것을 용이하게 하는 객체를 포함하고, 상기 폴더의 아이덴티티는 복수의 애플리케이션 프로그램과 상기 운영체제의 상기 계층적 이름공간 구조에 알려짐 - ;
    레지스트리에서 상기 폴더의 상기 위치를 검색하는 단계 - 상기 폴더의 상기 위치는 상기 복수의 애플리케이션 프로그램과 상기 운영체제의 상기 계층적 이름공간 구조에 알려짐 - ;
    상기 계층적 이름공간 구조내에서 상기 폴더의 위치를 결정하는 단계;
    상기 결정된 위치에서 상기 폴더로부터 데이터를 액세스하는 단계
    - 상기 액세스하는 단계는,
    (a) 상기 유효한 사용자 토큰을 지정함으로써 상기 폴더의 상기 소유자를 가장(impersonating)하는 단계; 및
    (b) 상기 폴더의 소유자의 인스턴스를 액세스하는 단계를 포함함 - ; 및
    상기 폴더의 상기 애플리케이션에 의한 이용을 적어도 하나의 개발자들 및 사용자들에게 알리는 새로운 속성을 상기 폴더에 추가하는 단계
    를 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  17. 제16항에 있어서,
    상기 결정된 위치는 로컬 하드 드라이브를 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  18. 제16항에 있어서,
    상기 결정된 위치는 네트워크 드라이브를 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  19. 제16항에 있어서,
    상기 결정된 위치는 웹사이트를 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
  20. 제16항에 있어서,
    상기 방법은 상기 수신된 폴더의 ID가 유효하지 않은 경우에, 운영체제 쉘(operating system shell)과 복수의 애플리케이션 프로그램에 알려진 새로운 폴더를 생성하는 단계; 및
    제2의 컴포넌트로 운영체제 쉘과 복수의 애플리케이션 프로그램에 알려진 상기 새로운 폴더의 위치를 제공하는 단계를 더 포함하는, 하나 이상의 컴퓨터 판독가능 저장 매체.
KR1020077020997A 2005-04-01 2005-07-28 개발자가 시스템 상의 기지의 위치를 용이하게 찾아내거나확장할 수 있게 해주는 기능 KR101150065B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/096,871 US7478085B2 (en) 2005-04-01 2005-04-01 Ability for developers to easily find or extend well known locations on a system
US11/096,871 2005-04-01

Publications (2)

Publication Number Publication Date
KR20070118081A KR20070118081A (ko) 2007-12-13
KR101150065B1 true KR101150065B1 (ko) 2012-06-01

Family

ID=37073881

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077020997A KR101150065B1 (ko) 2005-04-01 2005-07-28 개발자가 시스템 상의 기지의 위치를 용이하게 찾아내거나확장할 수 있게 해주는 기능

Country Status (6)

Country Link
US (1) US7478085B2 (ko)
EP (1) EP1864230A4 (ko)
JP (1) JP4972082B2 (ko)
KR (1) KR101150065B1 (ko)
CN (1) CN101151608B (ko)
WO (1) WO2006107318A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101512296B1 (ko) 2013-04-05 2015-04-15 주식회사 팬택 어플리케이션 연관 파일 처리 단말 및 단말의 어플리케이션 연관 파일 처리 방법

Families Citing this family (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019679B2 (en) * 2007-10-18 2011-09-13 Moneygram International, Inc. Global compliance processing system for a money transfer system
US11348148B2 (en) * 2010-05-26 2022-05-31 Userzoom Technologies, Inc. Systems and methods for an intelligent sourcing engine for study participants
US11562013B2 (en) 2010-05-26 2023-01-24 Userzoom Technologies, Inc. Systems and methods for improvements to user experience testing
US10691583B2 (en) * 2010-05-26 2020-06-23 Userzoom Technologies, Inc. System and method for unmoderated remote user testing and card sorting
BR112013009616B1 (pt) * 2010-10-21 2020-12-15 Qualcomm Incorporated. Método implementado por computador para iniciar uma ação em um dispositivo de computação móvel responsivo a receber dados de texto de pesquisa e meio de armazenagem lido por computador
US20130132164A1 (en) * 2011-11-22 2013-05-23 David Michael Morris Assessment Exercise Second Review Process
US9754276B2 (en) * 2011-12-21 2017-09-05 Paypal Inc. Digital content provided to a user at a physical location
US10402795B2 (en) 2012-01-05 2019-09-03 Moneygram International, Inc. Prefunding for money transfer send transactions
US10755245B2 (en) 2013-02-25 2020-08-25 Moneygram International, Inc. Money transfer system having location based language and dynamic receipt capabilities
US20140278660A1 (en) * 2013-03-15 2014-09-18 Profit Strategies, Inc. Methods for generating a work-order in real time and devices thereof
US10504048B2 (en) * 2013-06-27 2019-12-10 Folloze, Inc. Systems and methods for enterprise content curation
GB201313712D0 (en) * 2013-07-31 2013-09-11 Ibm Optimizing emergency resources in case of disaster
US10192204B2 (en) 2013-08-01 2019-01-29 Moneygram International, Inc. System and method for staging money transfers between users having profiles
US20150081393A1 (en) * 2013-09-18 2015-03-19 Massachusetts Institute Of Technology Product promotion optimization system
US20150095111A1 (en) * 2013-09-27 2015-04-02 Sears Brands L.L.C. Method and system for using social media for predictive analytics in available-to-promise systems
US20150095229A1 (en) * 2013-09-27 2015-04-02 Insperity Services, L.P. Method, apparatus and system for automated notification of funding request and/or approval
US20150095114A1 (en) * 2013-09-30 2015-04-02 Elwha Llc Employment related information center associated with communication and control system and method for wireless electric vehicle electrical energy transfer
US10719812B2 (en) * 2013-11-04 2020-07-21 Koninklijke Philips N.V. Method of notifying a user on a task of an apparatus
US10322881B1 (en) 2013-12-17 2019-06-18 Amazon Technologies, Inc. Notifying users to provide picked items to a drop off location for processing
US9965783B2 (en) 2014-02-07 2018-05-08 Uber Technologies, Inc. User controlled media for use with on-demand transport services
US10282704B2 (en) * 2014-03-07 2019-05-07 Jerry L. Mills System and method for controlling sale of a company
AU2014386266A1 (en) 2014-03-13 2016-09-29 Uber Technologies, Inc. Configurable push notifications for a transport service
AU2015259338A1 (en) * 2014-05-12 2017-01-05 David KUCHENSKI Financial institution calendaring solution
US9536271B2 (en) 2014-05-16 2017-01-03 Uber Technologies, Inc. User-configurable indication device for use with an on-demand transport service
US9892637B2 (en) 2014-05-29 2018-02-13 Rideshare Displays, Inc. Vehicle identification system
US10467896B2 (en) 2014-05-29 2019-11-05 Rideshare Displays, Inc. Vehicle identification system and method
WO2015192106A1 (en) * 2014-06-12 2015-12-17 Shpanya Arie Real-time dynamic pricing system
AU2015296265A1 (en) 2014-07-30 2017-02-16 Uber Technologies, Inc. Arranging a transport service for multiple users
US20170140306A1 (en) * 2014-09-22 2017-05-18 o9 Solutions, Inc. Business graph model
US10896432B1 (en) * 2014-09-22 2021-01-19 Amazon Technologies, Inc. Bandwidth cost assignment for multi-tenant networks
US9875471B1 (en) 2014-09-26 2018-01-23 Square, Inc. Appointment and payment handling
US11023928B2 (en) * 2014-09-26 2021-06-01 Square, Inc. Appointment and payment handling
US20160092825A1 (en) * 2014-09-29 2016-03-31 The Boeing Company Predictive fatigue risk management
US10762456B2 (en) * 2014-09-30 2020-09-01 International Business Machines Corporation Migration estimation with partial data
US11328237B2 (en) * 2014-09-30 2022-05-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. End-to-end commodity and commodity marking tracking
US10692027B2 (en) * 2014-11-04 2020-06-23 Energage, Llc Confidentiality protection for survey respondents
US10726376B2 (en) * 2014-11-04 2020-07-28 Energage, Llc Manager-employee communication
US10325230B2 (en) * 2015-02-02 2019-06-18 Walmart Apollo, Llc Methods and systems for auditing overstock in a retail environment
US11093950B2 (en) * 2015-02-02 2021-08-17 Opower, Inc. Customer activity score
US20160224913A1 (en) * 2015-02-03 2016-08-04 Infosys Limited Proactive employee retention through engagement indicator
EP3054404A1 (en) * 2015-02-04 2016-08-10 Hexagon Technology Center GmbH Work information modelling
US20160232543A1 (en) * 2015-02-09 2016-08-11 Salesforce.Com, Inc. Predicting Interest for Items Based on Trend Information
US10621598B1 (en) * 2015-04-22 2020-04-14 Richard Greenwald Methods and systems for facilitating interactions
US10997565B2 (en) 2015-06-10 2021-05-04 Square, Inc. Consolidation of calendar appointments
US10325241B2 (en) * 2015-07-14 2019-06-18 Shlomo Uri HAIMI System and method for tracking shelf-life and after-opening usage life of medicaments, foods and other perishables
US20170032300A1 (en) * 2015-07-31 2017-02-02 International Business Machines Corporation Dynamic selection of resources on which an action is performed
US10664777B2 (en) * 2015-09-11 2020-05-26 Workfusion, Inc. Automated recommendations for task automation
US10380608B2 (en) * 2015-09-14 2019-08-13 Adobe Inc. Marketing data communication control
US10290215B2 (en) 2015-10-06 2019-05-14 Gt Gettaxi Limited System for navigating grouped passengers from an event
US20170124530A1 (en) * 2015-11-04 2017-05-04 Schneider Electric It Corporation Systems and methods for an environmental event and task manager
US10198704B2 (en) * 2015-11-05 2019-02-05 Charles F Myers Methods for dynamically identifying loads for a trucker
US10467561B2 (en) * 2015-11-05 2019-11-05 Gt Gettaxi Limited System for identifying events and preemptively navigating drivers to transport passengers from the events
US9939279B2 (en) 2015-11-16 2018-04-10 Uber Technologies, Inc. Method and system for shared transport
US20170169444A1 (en) * 2015-12-10 2017-06-15 Invensense, Inc. Systems and methods for determining consumer analytics
US20170169393A1 (en) * 2015-12-11 2017-06-15 Prakash Vasa Method of managing user contacts and associations between the user contacts
CA3020742A1 (en) * 2016-04-12 2017-10-19 Seniorvu, Llc System and process for matching seniors and staffers with senior living communities
US10713233B2 (en) * 2016-09-16 2020-07-14 Kabushiki Kaisha Toshiba Information management system
US9813510B1 (en) 2016-09-26 2017-11-07 Uber Technologies, Inc. Network system to compute and transmit data based on predictive information
US10325442B2 (en) 2016-10-12 2019-06-18 Uber Technologies, Inc. Facilitating direct rider driver pairing for mass egress areas
ES2943148T3 (es) 2016-11-04 2023-06-09 Google Llc Ocupación de lugares en tiempo real
US10726342B2 (en) 2016-11-09 2020-07-28 Cognitive Scale, Inc. Cognitive information processing using a cognitive blockchain architecture
US10719771B2 (en) 2016-11-09 2020-07-21 Cognitive Scale, Inc. Method for cognitive information processing using a cognitive blockchain architecture
US20180165611A1 (en) * 2016-12-09 2018-06-14 Cognitive Scale, Inc. Providing Commerce-Related, Blockchain-Associated Cognitive Insights Using Blockchains
US11126971B1 (en) * 2016-12-12 2021-09-21 Jpmorgan Chase Bank, N.A. Systems and methods for privacy-preserving enablement of connections within organizations
US10355788B2 (en) 2017-01-06 2019-07-16 Uber Technologies, Inc. Method and system for ultrasonic proximity service
US10929818B2 (en) * 2017-02-16 2021-02-23 Seoul National University R&Db Foundation Wearable sensor-based automatic scheduling device and method
US20180253677A1 (en) * 2017-03-01 2018-09-06 Gregory James Foster Method for Performing Dynamic Data Analytics
US10902483B2 (en) * 2017-04-27 2021-01-26 Lindsay Corporation Computer-implemented method and computer program for designing and cost-estimating irrigation systems
CN107301504B (zh) * 2017-06-12 2018-06-15 合肥工业大学 基于混合蛙跳—路径重连的生产运输协同调度方法和***
US10929789B2 (en) * 2017-06-26 2021-02-23 Panasonic Intellectual Property Corporation Of America Information processing method, information processing system, and recording medium storing program
US10567520B2 (en) 2017-10-10 2020-02-18 Uber Technologies, Inc. Multi-user requests for service and optimizations thereof
US11315199B2 (en) 2018-10-04 2022-04-26 Honda Motor Co., Ltd. System and method for providing OEM control to maximize profits
US11410109B2 (en) * 2018-11-01 2022-08-09 Precog, LLC Portable real-time experience communications device and monitoring system
JP7171407B2 (ja) * 2018-12-12 2022-11-15 株式会社日立製作所 情報処理装置、生産指示支援方法
US20200210961A1 (en) 2018-12-27 2020-07-02 Clicksoftware, Inc. Systems and methods for work capacity planning
US11164196B1 (en) * 2019-04-29 2021-11-02 Vivint, Inc. Techniques for lead scoring
US11023863B2 (en) * 2019-04-30 2021-06-01 EMC IP Holding Company LLC Machine learning risk assessment utilizing calendar data
US11068856B2 (en) * 2019-04-30 2021-07-20 International Business Machines Corporation Biometric data based scheduling
US11501233B2 (en) * 2019-05-21 2022-11-15 Hcl Technologies Limited System and method to perform control testing to mitigate risks in an organization
CN110544010B (zh) * 2019-07-30 2023-04-07 同济大学 影响轨道交通***全局效能涌现的关键要素的辨识方法
US11188853B2 (en) * 2019-09-30 2021-11-30 The Travelers Indemnity Company Systems and methods for artificial intelligence (AI) damage triage and dynamic resource allocation, routing, and scheduling
WO2021092260A1 (en) * 2019-11-05 2021-05-14 Strong Force Vcn Portfolio 2019, Llc Control tower and enterprise management platform for value chain networks
US11625797B2 (en) * 2019-11-14 2023-04-11 Mapyourshow, Llc Automated event space management with conflict prevention
US11341438B2 (en) * 2019-11-22 2022-05-24 The Procter & Gamble Company Provisioning and recommender systems and methods for generating product-based recommendations for geographically distributed physical stores based on mobile device movement
US11894128B2 (en) * 2019-12-31 2024-02-06 Cerner Innovation, Inc. Revenue cycle workforce management
US11570276B2 (en) 2020-01-17 2023-01-31 Uber Technologies, Inc. Forecasting requests based on context data for a network-based service
US11720911B2 (en) * 2020-01-22 2023-08-08 Walmart Apollo, Llc Methods and apparatus for electronically determining item pricing
US20210241221A1 (en) * 2020-02-05 2021-08-05 Da-Desk Fz-Llc Predicting grain products loaded on-board vessels
US11526822B2 (en) * 2020-02-10 2022-12-13 Bank Of America Corporation Dynamic resource allocation engine
US11783268B2 (en) * 2020-03-31 2023-10-10 Walmart Apollo, Llc Systems and methods for packing visualizations
US11532059B2 (en) * 2020-04-20 2022-12-20 International Business Machines Corporation Geo-spatial analysis to determine boundaries of traffic regions and classifications of the boundaries for controlling drop-off/pick-up traffic
US20210357865A1 (en) * 2020-05-12 2021-11-18 ZenPayroll, Inc. Event-based timeline creation for personal information tracking
JP2021197039A (ja) * 2020-06-17 2021-12-27 株式会社日立製作所 バースト可能インスタンス推奨装置、方法、及びプログラム。
US11455589B2 (en) * 2020-07-17 2022-09-27 Exoptimum LLC Techniques for obtaining solutions to black-box optimization problems
WO2022040138A1 (en) 2020-08-18 2022-02-24 Edera L3C Change management system and method
US11783386B2 (en) * 2020-10-27 2023-10-10 Ncr Corporation Crowd-sourced activity processing
US11288605B1 (en) * 2020-11-19 2022-03-29 Bnsf Railway Company Grounded operations management system and method therefor
CN112434951A (zh) * 2020-11-25 2021-03-02 中国海洋大学 一种地震灾害等级评估方法及***
US11587004B2 (en) * 2020-12-10 2023-02-21 Honda Motor Co., Ltd. System and method for placement optimization of public electric vehicle charging stations using telematics data
US11962427B2 (en) 2021-02-18 2024-04-16 Microsoft Technology Licensing, Llc Auto-generated object for impromptu collaboration
JP2022135919A (ja) * 2021-03-03 2022-09-15 しるし株式会社 購買分析システム、購買分析方法、及びコンピュータプログラム
US20230101451A1 (en) * 2021-05-27 2023-03-30 Robert E. Dowing Automatic Refinement of Customizable Forecasts for Strategic Management
US11625654B1 (en) * 2022-02-01 2023-04-11 Ventures BRK Social networking meetup system and method
US11488187B1 (en) * 2022-04-11 2022-11-01 Santa Israel Ltd. Managing operations of mobile retail units

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694563A (en) * 1994-12-13 1997-12-02 Microsoft Corporation Method and system for transferring data to common destinations using a common destination list
US6360280B1 (en) * 1994-12-13 2002-03-19 Microsoft Corporation Method and system for accessing shell folder capabilities by an application program
US5771381A (en) * 1994-12-13 1998-06-23 Microsoft Corporation Method and system for adding configuration files for a user
US5778384A (en) * 1995-12-22 1998-07-07 Sun Microsystems, Inc. System and method for automounting and accessing remote file systems in Microsoft Windows in a networking environment
US6061695A (en) * 1996-12-06 2000-05-09 Microsoft Corporation Operating system shell having a windowing graphical user interface with a desktop displayed as a hypertext multimedia document
US6526413B2 (en) * 1999-09-28 2003-02-25 Microsoft Corporation Architecture for a hierarchical folder structure in hand-held computers
US6915299B1 (en) * 2000-06-23 2005-07-05 Microsoft Corporation Web server document library
TW539951B (en) * 2001-01-17 2003-07-01 Duan-Huei Wu A method transferring resources among operating systems
US7299422B2 (en) * 2002-05-08 2007-11-20 Migo Software, Inc. System and method for transferring personalization information among computer systems
JP2004133520A (ja) * 2002-10-08 2004-04-30 Canon Inc 画像ファイルシステム
JP2005070846A (ja) * 2003-08-26 2005-03-17 Fujitsu Ltd 格納プログラム,それを格納したコンピュータ可読媒体,格納方法,及び格納装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101512296B1 (ko) 2013-04-05 2015-04-15 주식회사 팬택 어플리케이션 연관 파일 처리 단말 및 단말의 어플리케이션 연관 파일 처리 방법

Also Published As

Publication number Publication date
JP4972082B2 (ja) 2012-07-11
EP1864230A2 (en) 2007-12-12
CN101151608B (zh) 2012-07-11
KR20070118081A (ko) 2007-12-13
CN101151608A (zh) 2008-03-26
WO2006107318A2 (en) 2006-10-12
EP1864230A4 (en) 2009-04-08
WO2006107318A3 (en) 2006-12-21
US20060242154A1 (en) 2006-10-26
US7478085B2 (en) 2009-01-13
JP2008535081A (ja) 2008-08-28

Similar Documents

Publication Publication Date Title
KR101150065B1 (ko) 개발자가 시스템 상의 기지의 위치를 용이하게 찾아내거나확장할 수 있게 해주는 기능
US7325007B2 (en) System and method for supporting non-native data types in a database API
US7849179B2 (en) System and program for managing devices in a network
US5687366A (en) Crossing locale boundaries to provide services
US7428634B2 (en) Retrieval of services by attribute
KR101682738B1 (ko) 관리 시스템 확장성
US20090248737A1 (en) Computing environment representation
US9967370B2 (en) OData enabled mobile software applications
JPH0644128A (ja) オブジェクト指向プログラミングを支援するデータベース管理システム及び方法
US7246224B2 (en) System and method to enable platform personality migration
JPH11327919A (ja) オブジェクト指向割込みシステム用の方法およびデバイス
JP2007524889A (ja) サーバ統合のデータモデル
CN111259067A (zh) 一种基于Spring实现DAO接口的方法、装置及设备
US7272600B1 (en) Migrating large data sets for products upgrades
US7089529B2 (en) System and method for creating reusable management instrumentation for IT resources
US20090249249A1 (en) User interface framework and techniques
US20050183034A1 (en) Menu management in an OLE document environment
US7483979B1 (en) Method and system for virtualizing metadata between disparate systems
US20050138034A1 (en) System and method for sharing resource properties in a multi-user environment
US20090171922A1 (en) System and Method for Dynamically Exposing SQL Statements as Web Protocols
CN113377458B (zh) 插件管理方法、装置、电子设备和存储介质
KR101828466B1 (ko) 파일시스템을 기반으로 하는 저장장치에서 객체기반 스토리지 인터페이스를 제공하는 방법 및 장치
EP3035212B1 (en) Transparent database table replacement
WO2018040439A1 (zh) 文档的处理方法及装置
CN112015497B (zh) 换肤方法及装置

Legal Events

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

Payment date: 20160419

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180417

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190417

Year of fee payment: 8