`Brown et al.
`
`111111111111111111111111111111111111111111111111111111111111111111111111111
`US006516236Bl
`US 6,516,236 Bl
`(10) Patent No.:
`Feb. 4,2003
`(45) Date of Patent:
`
`(54) MOTION CONTROL
`
`SYSTEMS
`
`(75)
`
`Jay S. Clark, both
`Inventors: David W. Brown;
`of Bingen, WA (US)
`
`(73) Assignee: Roy-G-Biv Corporation,
`(US)
`
`Bingen, WA
`
`( *) Notice:
`
`the term of this
`to any disclaimer,
`Subject
`is extended or adjusted under 35
`patent
`u.s.c. 154(b) by 0 days.
`
`(21) Appl. No.: 10/021,669
`(22)
`Filed:
`Dec. 10, 2001
`
`Related U.S. Application Data
`
`(63) Continuation of application No. 09/191,981, filed on Nov.
`13, 1998, which is a continuation of application No. 08/656,
`421, filed on May 30, 1996, now Pat. No. 5,867,385, which
`is a continuation-in-part of application No. 08/454,736, filed
`on May 30, 1995, now Pat. No. 5,691,897.
`Int. CI?
`(51)
`(52) U.S. CI.
`(58)
`Field of Search
`
`G05B 19/18
`700/56; 700/87
`700/56, 1, 87,
`700/67; 703/25
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`4,159,417 A
`6/1979 Rubincam
`4,418,381 A
`11/1983 Molusis et al.
`4,531,182 A
`7/1985 Hyatt
`4,713,808 A
`12/1987 Gaskill
`4,767,334 A
`8/1988 Thorne et al.
`4,809,335 A
`2/1989 Rumsy
`4,840,602 A
`6/1989 Rose
`4,846,693 A
`7/1989 Baer
`4,855,725 A
`8/1989 Fernandez
`4,857,030 A
`8/1989 Rose
`4,887,966 A
`12/1989 Gellerman
`4,897,835 A
`1/1990 Gaskill
`4,937,737 A
`6/1990 Schwane et al.
`5,095,445 A
`3/1992 Sekiguchi
`5,120,065 A
`6/1992 Driscoll et al.
`(List continued on next page.)
`
`235/375
`700/2
`700/2
`370/314
`434/29
`704/266
`446/175
`434/308
`345/173
`446/303
`463/38
`370/314
`709/310
`709/246
`273/237
`
`EP
`EP
`EP
`EP
`EP
`GB
`JP
`WO
`WO
`WO
`
`FOREIGN PATENT DOCUMENTS
`0442676 A2
`8/1991
`0 281 427 B1
`8/1992
`0508912 A1
`10/1992
`0583 908 A2
`2/1994
`0275826 A1
`7/1998
`2224896 A
`12/1991
`59 228473
`6/1983
`WO 92/1l731
`7/1992
`WO 93/08654
`4/1993
`WO 95/07504
`3/1995
`OTHER PUBLICATIONS
`to the
`Wosa Backgrounder: Delivering Enterprise Services
`Windows-based
`Desktop,
`Jul. 1993, Microsoft Develop-
`ment Library; pp. 1-19.
`(List continued on next page.)
`Primary Examiner=Leo
`Picard
`Assistant Examiner-Zoila
`Cabrera
`(74) Attorney, Agent, or Firm-Michael
`(57)
`ABSTRACT
`
`R. Schacht
`
`is
`in which an application
`A system for motion control
`from the actual motion control
`developed that is independent
`the system. The system com-
`hardware used to implement
`prises a software system that employs
`an application pro-
`gramming interface comprising component
`functions and a
`service provider
`interface
`comprising
`driver
`functions. A
`system programmer writes
`an application
`that calls
`the
`component
`functions. Code associated with the component
`functions
`relates these functions
`to the driver
`functions. A
`hardware designer writes driver code that
`implements
`the
`driver
`functions on a given motion control hardware prod-
`uct. The driver
`functions
`are separated
`into core
`and
`extended driver
`functions. All software drivers implement
`the core driver functions, while the software drivers need not
`contain code for implementing
`the extended driver
`func-
`tions.
`If
`the software
`driver does not contain
`code
`to
`implement an extended driver function,
`the functionality of
`the extended driver
`function is obtained through a combi-
`nation of core driver functions. The system programmer may
`also select one or more streams
`that allow the control
`commands
`to be communicated
`to, and response data to be
`communicated
`from, motion control hardware.
`
`10 Claims, 64 Drawing Sheets
`
`Page 1 of 91
`
`
`
`US 6,516,236 Bl
`Page 2
`
`U.S. PATENT DOCUMENTS
`
`5,126,932 A
`5,168,441 A
`5,175,817 A
`5,245,703 A
`5,247,650 A
`5,377,258 A
`5,390,330 A
`5,392,207 A *
`5,402,518 A
`5,412,757 A *
`5,450,079 A
`5,453,933 A
`5,465,215 A
`5,491,813 A
`5,493,281 A
`5,596,994 A
`5,604,843 A
`5,607,336 A
`5,608,894 A
`5,617,528 A
`5,636,994 A
`5,652,866 A
`5,655,945 A
`5,666,161 A
`5,670,992 A
`5,707,289 A
`5,733,131 A
`5,737,523 A
`5,746,602 A
`5,752,880 A
`5,764,155 A
`5,790,178 A
`5,800,268 A
`5,801,946 A
`5,846,132 A
`5,867,385 A *
`5,907,704 A *
`5,914,876 A *
`
`6/1992
`* 12/1992
`12/1992
`9/1993
`9/1993
`12/1994
`2/1995
`2/1995
`3/1995
`5/1995
`9/1995
`9/1995
`* 11/1995
`2/1996
`2/1996
`1/1997
`2/1997
`3/1997
`3/1997
`4/1997
`6/1997
`7/1997
`8/1997
`9/1997
`9/1997
`1/1998
`3/1998
`4/1998
`5/1998
`5/1998
`6/1998
`8/1998
`9/1998
`9/1998
`12/1998
`2/1999
`5/1999
`6/1999
`
`Wolfson et al.
`Onarheim et al.
`Adams et al.
`Hubert
`Judd et al.
`Bro ...
`Talati
`Wilson et al.
`Lowery
`Endo .
`Dunaway
`Wright et al.
`Strickland et al.
`Bondy et al.
`Owens
`Bro
`Shaw et al.
`Lehensfeld et al.
`Kawakami et al.
`Stechmann et al.
`Tong
`Aldred et al.
`Jani
`Kohiyama et al.
`Yasuhara et al.
`Watanabe et al.
`Park
`Callaghan et al.
`Kikinis
`Gabai et al.
`Kertesz et al.
`Shibata et al.
`Molnick ..
`Nissen et al.
`Junkin ..
`Brown et al.
`Gudmundson et al.
`Hirai
`
`..
`
`OlliER PUBLICATIONS
`
`709/202
`700/17
`709/236
`710/105
`703/20
`379/106.02
`717/104
`700/64
`704/201
`706/52
`341/23
`700/181
`700/180
`709/323
`340/825.24
`600/545
`358/1.1
`446/297
`717/162
`707/517
`434/308
`703/23
`446/175
`375/240.18
`345/173
`463/40
`434/307 R
`713/201
`434/169
`... 463/1
`700/295
`348/14.07
`463/40
`700/95
`463/42
`700/56
`717/1
`700/87
`
`ICONICS; 6
`
`Ltd.
`
`Wosa Inside Windows 95; pp. 348-351.
`Software Products
`for Industrial Automation,
`pages.
`Web 3.0 Product Brochure, Trihedral Engineering
`(1994); 6 pages.
`The Complete, Computer-Based Automation Tool (IGSS)
`Seven Technologies NS; 6 pages.
`Oregon Micro Systems Product Guide: pp. 1-20.
`Aimax-Win Product Brochure, TA Engineering Co., Inc.; 8
`pages.
`Xanalog Model NL-SIM Product Brochure, Xanalog,
`pages.
`ExperTune PID Tuning Software, Gerry Engineering Soft-
`ware; 6 pages.
`PMAC Product Catalog, p. 43.
`Paragon TNT Product Brochure,
`pages.
`Aerotech Motion Control Product Guide; pp. 233-234.
`OpenBatch Product Brief, PID, Inc.; 6 pages.
`PC/DSP-Series Motion Controller C Programming Guide;
`pp. 1-54.
`Intellution (1994); 6 pages.
`FIX Product Brochure,
`Precision Motion Controls Product Guide; p. 17.
`Compumotor Digiplan (1993-94) Catalog pp. 10-11.
`
`4
`
`Intec Controls Corp.; 6
`
`Sue Chen, Jonathon Lin; "Computer Numerical Control:
`and Networking"; Part 5, Chap-
`Essentials
`in Programming
`ter 27; pp. 824-848.
`
`Pritschow et al.; "Open System Controllers: Challenge for
`the Future of the Machine Tool
`Industry";
`pub. Jan. 15,
`1993; pp. 449-452.
`
`Is an Open Architecture Robot
`William E. Ford; "What
`Controller"pub. Aug. 16, 1994; pp. 27-32.
`
`Chu and Wang; "Development of a Practical SFC System for
`CNC Machine Shop"; pub. 1994; pp. 362-367.
`
`"The Microsoft Object Technology Strategy";
`Microsoft;
`pub. Mar. 1994; pp. 1-33.
`
`"Open Systems: Technology, Leadership,
`Microsoft;
`Collaboration";
`pub. Mar. 1994; pp. 1-15.
`
`and
`
`Microsoft; Microsoft OLE Today and Tomorrow: Technol-
`ogy Overview; pub. Dec. 1993; pp. 1-9.
`
`and Embedding
`"Object Linking
`Microsoft;
`grounder"; pub. Sep. 1993; pp. 1-15.
`
`2.0 Back-
`
`"SMART: A Modular Architecture
`Robert Anderson;
`Robotics and Teleoperation";
`pub. 1993; pp. 416-421.
`
`for
`
`of Standard Interfaces
`et al.; "Validation
`Proctor
`Machine Control"; pub. 1996; pp. 659-664.
`
`from a
`
`et al.; "Design and Analysis of a Modular CNC
`Altintas
`System"; pub. Mar. 4, 1990; pp. 305-316.
`
`The
`"Open Architecture Manufacturing:
`et al.;
`Wright
`of Open-System
`Computers
`on Self-sustaining
`Impact
`Machinery and the Machine Tool Industry"; pp. 41-47.
`
`IRL-Based Expansion of the Commonly Used
`Fedrowitz;
`High-Level Language C for Robot Programming: pub. Oct.
`1995; 5 pages.
`
`McGraw et al.; "A Friendly Command, Control, and Infor-
`mation System for Astronomy";
`pub. 1996; pp. 356-367.
`
`"Robotic Control Using Sequential
`Jackman;
`Charts"; pub. 1996; pp. 120-128.
`
`Function
`
`Sperling et al.; "Enabling Open Control Systems: An Intro-
`duction to the OSACA System Platform"; pub. May 1996;
`pp. 1-8.
`
`"Requirements
`for Applications
`1994; pp. 1-13.
`
`of Open Modular Architecture Controllers
`in the Automotive
`Industry"; pub. Dec. 13,
`
`Open, Modular Architecture Controls
`pub. May 14, 1996; pp. 1-33.
`
`at GM Powertrain;
`
`(TEAM)
`Enabling Agile Manufacturing
`"Technologies
`Intelligent Closed Loop Processing"; pub. Jan. 11, 1996; 30
`pages.
`
`* cited by examiner
`
`Page 2 of 91
`
`
`
`Feb. 4,2003
`
`Sheet 1 of 64
`
`US 6,516,236 Bl
`
`u.s. Patent
`
`FIG. IA
`10"
`12\ "
`
`24
`
`26
`r~---------
`I
`EXCEL APPLICATION
`I
`VISUAL BASIC APP
`: C++APPUCATION
`
`-:-1
`
`I
`J
`
`----~
`en
`1..9
`lJ....
`.----~~
`o0::
`LL<,f2
`
`II
`
`l
`
`STANDARD OLE INTERFACES
`CORE INTERFACES
`EXTENDED INTERFACES
`EXTENDED UIINTERFACES
`CODE GENERATION INTERFACES
`VENDOR SPECIFIC INTERFACES
`
`TO/FROM FIG.
`
`ID
`
`UNKNOWN
`MOTION
`CONTROL
`DRIVER A
`HARDWARE
`A
`LANGUAGE
`DEPENDENT
`300
`
`Page 3 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 2 of 64
`
`US 6,516,236 Bl
`
`FIG. IB
`
`s
`
`38
`
`DRIVER
`~----=:::..IADMINISTRATOR
`CPL
`
`40
`~-----::.tDDE
`
`SERVER
`
`STANDARD OLE INTERFACES
`«
`GENRAL INTERFACES
`<..9 CODE GENERATION INTERFACES
`DIAGNOSTICINTERFACES
`LL
`:2:
`0
`a::
`LL
`d
`r-
`
`UNKNOWN
`
`DRIVER
`ADMIN
`
`STANDARDCl.£
`INTERFACES
`CUSTOM OLE
`INTERFACES
`
`t
`
`MOTION
`CONTROL
`COMPONENT
`EXTENDED
`SPI
`TABLE
`
`IUNKNOWN
`
`35
`
`u
`<..9
`LL
`:2:
`0
`o;
`LL<,
`~
`
`STANDARD OLE INTERFACES
`EXTENDED INTERFACES
`EXTENDED UIINTERFACES
`
`MOTION
`CONTROL
`DRIVER STUB
`
`STANDARDOLE INTERFACES
`CORE INTERFACES
`EXTENDED INTERFACES
`EXTENDED UI INTERFACES
`CODE GENERATION INTERFACES
`VENDOR SPECIFICINTERFACES
`
`(yUNKNOWN
`MOTION
`CONTROL
`DRIVER B
`HA~WARE
`LANGUAGE
`DEPENDENT
`
`36
`
`30b
`
`TO/FROM FIG. IE
`
`Page 4 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`FIG. Ie
`
`Sheet 3 of 64
`
`US 6,516,236 Bl
`
`22/
`
`/"
`
`yUNKNOWN
`STAND4RD OLE INTERFACES < ~ MOTION
`CORE INTERFACESo- CONTROL
`DRIVERC
`EXTENDED INTERFACES 0-
`HARDWARE
`EXTENDED UllNTERFACESo-
`C
`CODEGENERATION INTERFACESo-- LANGUAGE
`VENDOR SPECIFIC INTERFACESo- DEPENDENT
`
`30c
`
`/'
`".. -'
`TO/FROM FIG.
`
`IF
`
`I~
`I
`
`IJ
`
`I
`J
`
`Page 5 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 4 of 64
`
`US 6,516,236 Bl
`
`FIG. '0
`,...
`TO/FROM FIG IA
`V ?
`IUNKNOWN
`ISTREAM)....MOTION CONTROL
`TEXT FILE
`STREAM
`TEXT
`COMMUN ICATION
`PROTOCOL
`
`r-'
`
`28d/
`
`\1,
`
`\
`/
`OUTPUT FILE
`
`34",-
`
`T
`
`I¥NKNOWN
`
`I
`
`28aJ
`
`ISTREAM >- MOTION CONTROL
`PC BUS
`STREAM
`PC BUS
`COMMUNICATION
`PROTOCOL
`
`PERSONAL COMPUTER HARDWARE BUS
`I
`
`PERSONAL COMPUTER HARDWARE
`
`16a--
`
`18a-------
`
`I-
`
`20a--1-
`
`,I
`I
`L:::
`~
`l. HARDWAFiE
`
`I
`
`CONTROLLER A~
`
`MECHANICAL
`SYSTEM A
`II
`MOTION CONTROL
`DEVICE A
`
`}
`
`,
`
`I
`
`~
`....---
`.•.
`\
`
`\
`~
`
`Page 6 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 5 of 64
`
`US 6,516,236 Bl
`
`FIG. IE
`
`TO/FROM FIG. 18
`
`T
`
`I¥NKNOWN
`
`ISTREAM )- MOTION CONTROL
`PC BUS
`~
`STREAM
`PC BUS
`COMMUNICATION
`PROTOCOL
`
`28b~
`
`}
`
`I,
`
`,
`,
`
`)/
`~
`"'L
`HARDWARE
`CONTROLLER B""....--
`\\
`
`\
`
`"
`
`,f
`rII I I
`
`MECHANICAL
`SYSTEM A
`II
`MOTION CONTROL
`DEVICE B
`
`16b---
`
`18b---- -
`2Gb---->--
`
`J
`
`oou
`
`..
`
`~o0::u,
`<,g
`
`,
`
`Page 7 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 6 of 64
`
`US 6,516,236 Bl
`
`FIG. IF
`
`TO/FROM FIG. Ie
`
`T
`
`IUNKNOWN
`----.
`,II ••••.•?
`ISTREAM >- MOTION CONTROL
`HARDWAREC
`PC BUS STREAM
`________SPECIAL PC BUS
`COMMUNICATION
`PROTOCOL FOR
`HARDWAREC
`
`28c
`
`,f
`~;~---------HnTTn"lnll~I---------~~
`H++HH+~--------~
`
`18c-----
`
`1-0-1-
`
`MECHANICAL
`SYSTEM A
`
`20c~~r
`
`~'------~
`I
`MOTiON CONTROL
`DEVICEC
`
`Page 8 of 91
`
`
`
`Feb. 4,2003
`
`Sheet 7 of 64
`
`u.s. Patent
`FIG. 2 Module Interaction-Map
`26,-----1-VS-APPLicATio-N--------
`
`VC++ APPLICATION
`BCW APP., etc.
`
`_____________
`
`------------------------
`
`1
`
`US 6,516,236 Bl
`
`IUnknown
`
`DRiVER
`ADMIN.
`
`f....'.'.'.'
`
`..'
`
`.........
`
`IUnknown
`
`COMPONENT
`
`34
`
`IUnknown
`
`DRIVHR
`STUB
`
`36
`
`IUnknown
`
`IXMC xxxSPI
`
`DRIVER
`
`.0
`
`••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
`
`"
`
`30
`
`Page 9 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 8 of 64
`
`US 6,516,236 Bl
`
`FIG. 3 Object
`
`Interaction-Map
`32 \..-L_IU_n_k_no_w_n
`IXMC xxxAPIr-...,,,"
`26r---~-------------------------------------
`VB APPLICATION
`VC++ APPLICATION
`BCW APP., etc.
`
`42
`
`1
`
`------------------
`
`IUnknown
`
`COMPONENT
`.___------t ...
`..,
`..' ~::=::;l===~
`
`IXMC xxxAPI
`34
`...."""."."""",,'" ""."""
`
`,,,,
`•••,,
`
`~
`
`",,'
`
`--_.."
`
`CCmpntDisp' +-
`
`+
`
`34b
`
`34a
`34c
`
`CDriverMgr
`
`CDriver
`
`34d
`
`IUnknown
`
`DRI'/ER
`STUB
`
`IUnknown
`
`IXMC_xxxSPI
`
`DRIVER
`
`30
`
`Page 10 of 91
`
`
`
`Feb. 4,2003
`
`Sheet 9 of 64
`
`US 6,516,236 Bl
`
`u.s. Patent
`FIG. 4 Scenario Map - Initialization .,-L---_...
`
`IXMC xxxAPI
`
`26
`r---~-------------------------------------
`VB APPLICATION
`VC++ APPLICATION
`BCW APP., etc.
`
`1
`
`--------------------
`
`_
`
`IUnknown
`
`IXMC xxxAPI
`
`COMPONENT
`
`...................................•...
`
`42
`
`~
`
`,,,C!f
`
`__--,..
`"
`
`IUnknown
`
`DRIVER
`ADMIN.
`
`32
`
`5
`
`.....
`
`34a
`
`34c
`
`34d
`
`IXMC
`
`IUnknown
`
`DR~VER
`STUB
`
`IUnknown
`
`IXMC xxxSPI
`
`DRIVER
`
`30
`
`Page 11 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 10 of 64
`
`US 6,516,236 Bl
`
`FIG. 5 Scenario Map - Core SPI Operation
`
`26r---~-------------------------------------
`
`VB APPLICATION
`VC++ APPLICATION
`SCW APP" etc,
`
`IU nknown
`
`IXMC xxxAPI
`
`r-----, ...
`........~==;;C::===-..,..
`
`.
`.
`
`.......................
`
`.
`
`34e
`
`...............
`
`34a
`
`34c
`
`34d
`
`CDriver
`
`IU nknown
`
`DRIVER
`
`30
`
`Page 12 of 91
`
`
`
`u.s. Patent
`FIG. 6 Scenario-Map
`
`Feb. 4,2003
`
`Sheet 11 of 64
`
`US 6,516,236 Bl
`
`- Unit Mapping
`
`26r---~-------------------------------------
`
`VB APPLICATION
`VC++ APPLICATION
`BCW APP., etc.
`
`IXMC xxxAPI
`
`............................
`
`.............
`
`34a
`
`COMPONENT
`.------.,...
`..' "-.!::==;;t:===......-
`
`.
`.
`
`.
`
`................
`
`PCS Measurements
`34ie
`
`34c
`MCS ---'
`Mea sure m e nts L+-+----t----'
`
`M C S --""----+--
`Measurements
`IXMC UDxxxSPI
`
`36
`
`30
`
`DRIVER
`STUB
`
`IUnknown
`
`DRIVER
`
`Page 13 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 12 of 64
`
`US 6,516,236 Bl
`
`FIG. 7 Scenario-Map - Extended SPI Operation
`
`26
`r---~-------------------------------------
`VB APPLICATION
`VC++ APPLICATION
`BCW APP., etc.
`
`IUnknown
`
`IXMC xxxAPI
`
`COMPONENT
`
`3.~.........----=::::;t::===:!..-
`...,
`
`.........
`
`.....
`........
`
`,.....
`
`.
`
`.
`
`......
`.......
`.
`
`.
`.....
`
`CCmpntDis
`
`3
`
`34e
`
`34c
`
`34d
`
`CDriver
`
`IXMC
`
`IUnknown
`
`DRIVER
`STUB
`
`36
`
`Page 14 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 13 of 64
`
`US 6,516,236 Bl
`
`FIG. 8 Scenario-Map - Clean-up.
`26
`r---~-------------------------------------
`VB APPLICATION
`VC++ APPLICATION
`BCW APP., etc.
`--------------------------
`
`42
`
`~
`
`------------------
`IU nknown
`
`•••,(!j'
`
`,
`
`.
`.
`
`.
`
`--_ .•.
`34
`_----t ...
`
`...........................~==7===~
`
`"
`
`IXMC
`
`......
`
`.
`
`..........
`
`34a
`34c
`
`34d
`
`IUnknown
`
`DRIVER
`STUB
`
`IU nknown
`
`DRIVER
`
`IXMC
`
`36
`
`IXMC xxxSPI
`30
`
`Page 15 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 14 of 64
`
`US 6,516,236 Bl
`
`FIG. 9 Interface-Map
`ICCom ponentOjbect
`
`IUnknown
`
`97,
`
`Standard OLE 2.0 Interface
`(implemented
`by MFC)
`
`ICla
`
`ssFactory 0- VStandard OLE 2.0 Interface
`
`1\ (impl. by MFC and AFX basecode)
`
`IDispatch 0- VStandard OLE 2.0 Interface
`~ (impl. by MFC and ClassWizard
`generated
`code)
`A PI Inte rfaces r-----------------------------
`
`IXM
`
`IXM
`
`C_AP 1_1 0---.VXMCAPI
`r'\.
`VXMCAPllnterface
`I'\.
`
`C_API_20-
`
`Interface #1
`
`#2
`
`000
`
`IXM
`
`C_API_n
`
`0- VXMCAPI
`r-,
`
`Interface #n
`
`Page 16 of 91
`
`
`
`~
`
`"'T\C
`;,..,e
`It)~
`.•..•~~
`-=rJJ
`
`acN"
`
`'T~
`.Q
`
`~~
`
`•00.•
`
`~
`
`~
`
`~=~~~
`
`
`
` ~~\~~\
`
`,0
`
`,0'"~II)
`\,0'"v:
`
`Q)-
`
`~
`
`•••••
`
`~
`
`
`
`~o
`
`><
`J::
`
`tJ)
`tJ)
`
`Coo~
`~Q
`)>
`
`'i:
`
`_
`
`f struet DRVEXT_INTERFACE_INFO
`
`{
`
`enum DRVEXT _XnJNTERFACEIDS
`
`f {
`
`j
`
`f
`
`DRVEXT Xn INTERFACE1
`DRVEXT - Xn -INTERFACE2
`
`-
`
`-
`
`enum DRVEXT _Xn_METHODIDS
`
`}
`
`{
`
`DRVEXT _Xn_METHOD1
`DRVEXT Xn METHOD2
`
`DRVEXT Xn METHODn
`
`Methodlnfo
`
`1
`
`./
`//
`:".
`IMethod Info_n l..,
`
`Methodlnfo_21
`
`oo
`
`o
`
`./'1
`
`.
`
`}
`
`}
`
`struct DRVEXT _METHOD_INFO
`
`{
`
`XMC_SUPPORTTYPE
`CString
`LPFNDRVEXT
`
`m_strName;
`m_pfnMethod;
`
`m_st;
`
`I
`
`I
`
`•••••'~I DRVEXT _Xn_INTERFACEn
`ca-(J
`•(!)-u,
`
`}
`
`\IXMC_DrvExt_X1
`\IXMC_DrvExt_X2
`
`oo
`
`o
`
`l'xMc_DrvExt_xn
`
`}
`
`I
`
`..,/
`..,/
`....'
`
`I
`
`I
`
`.
`
`.'
`
`.
`
`/
`
`.'
`
`.'.'
`
`Page 17 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 16 of 64
`
`US 6,516,236 Bl
`
`FIG. 11 Module Interaction-Map
`32
`
`IUnknown
`
`IXMC xxxAPI
`
`IUnknown
`
`OMPONENT
`
`42
`
`REGISTRY
`
`IUnknown
`
`DRIVER
`
`IXMC xxxUDSPI
`
`IUnknown
`
`STREAM
`
`Page 18 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 17 of 64
`
`US 6,516,236 Bl
`
`FIG. 12 Object Interaction-Map
`32
`
`34
`IXMC xxxAPI
`
`IUnknown
`
`IXMC xxxUDSPI
`
`IUnknown
`
`STREAM
`
`Page 19 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 18 of 64
`
`US 6,516,236 Bl
`
`FIG. 13 Scenario-Map - Registration
`32
`
`IUnknown
`
`DRIVER
`ADMIN.
`
`42
`
`REGISTRY <··············0·····················...
`
`IXMC_xxxSPI
`
`30
`
`DRIVER
`
`FIG. 14 Scenario-Map -Init. by Driver Admin.
`32
`IXMC xxxAPl
`
`IUnknown
`
`DRIVER
`ADMIN.
`
`IUnknown
`
`DRIVER
`
`..............
`..........
`..............r---+----!-'
`........................................30
`
`~----\
`
`4 }------i
`
`Page 20 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 19 of 64
`
`US 6,516,236 Bl
`
`FIG. 15 Scenario-Map - Adding a Stream
`32
`
`IUnknown
`
`CLSID
`(of the stream)
`
`IUnknown
`
`~1
`
`DRIVER
`
`IXMC xxxAPI
`
`DRIVER
`ADMIN.
`
`FIG. 16 Scenario-Map - Query Operation
`32
`IXMC xxxAPI
`
`IUnknown
`
`DRIVER
`ADMIN.
`
`OIUnknown
`
`DRIVER
`
`IUnknown
`
`STREAM
`
`28
`
`Page 21 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 20 of 64
`
`US 6,516,236 Bl
`
`FIG. 17 Scenario-Map - Clean-Up by
`Drv. Admin.
`32
`IXMC xxxAPI
`
`IUnknown
`
`DRIVER
`ADMIN.
`
`IUnknown
`
`DRIVER
`
`...............................
`
`FIG. 18 Scenario-Map
`34
`IXMC xxxAPI
`
`COMPONENT
`
`- Init. by Component
`IUnknown
`
`IXMC
`
`IUnknown
`
`DRIVER
`.....~-~
`
`30g
`CCommandList
`
`9
`
`30k
`
`IXMC
`
`IUnknown
`
`28
`
`Page 22 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 21 of 64
`
`US 6,516,236 Bl
`
`FIG. 19 Scenario-Map - Command Operations
`34
`IXMC xxxAPI
`
`IUnknown
`
`OMPONENT
`
`IUnknown
`
`DRIVER
`
`IXMC xxxUDSPI
`
`IUrlknown
`
`STREAM
`
`Page 23 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 22 of 64
`
`US 6,516,236 Bl
`
`FIG. 20 Scenario-Map - Clean-up by
`Component
`
`34
`IXMC xxxAPI
`
`IUnknown
`
`OMPONENT
`
`IUnknown
`
`DRIVER
`
`.
`.
`
`mandLis
`
`CResponseList
`
`IUnknown
`
`STREAM
`
`28
`
`Page 24 of 91
`
`
`
`u.s. Patent
`FIG. 21 Interface-Map
`
`Feb. 4,2003
`
`Sheet 23 of 64
`
`US 6,516,236 Bl
`
`CDriverObject
`
`IUnknown
`
`IClassFactory
`
`IXMC DrvCore
`-
`StaticState
`
`-
`
`IXMC DrvCore
`-
`DynamicState
`
`-
`
`IXMC DrvCore
`SPI 3
`
`IXMC DrvCore
`-
`SPI n
`
`-
`
`IXMC DrvExt
`-
`StreamMgmt
`IXMC DrvExt
`-
`SPI 2
`
`-
`
`-
`
`IXMC DrvExt
`-
`SPI n
`
`-
`
`XMCSPI Core Interface #3
`o8
`XMCSPI Core Interface #n
`r-----------r-------------
`SPI Extended Interfaces
`
`XMCSPI Extended Interface #2
`o8
`XMCSPI Extended Interface #n
`
`Page 25 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 24 of 64
`
`US 6,516,236 Bl
`
`FIG. 22 Module Interaction-Map
`32
`
`IXMC xxxAPI
`IUnknown
`
`IUnknown
`DRIVER
`ADMIN.
`
`IXMC xxxSPI
`
`IUnknown
`
`STREAM
`42~IXMC xxxUDSPI
`EGISTRY 4-----4- ~f----
`
`Win31
`
`Page 26 of 91
`
`
`
`u.s. Patent
`FIG. 23 Object Interaction-Map
`
`Sheet 25 of 64
`
`Feb. 4,2003
`
`IXMC xxxAPI
`IUnknown
`
`IXMC xxxSPI
`
`IXMC xxxUDSPI
`.........·············28··1'-~--
`
`......................._._----
`
`US 6,516,236 Bl
`
`IUnknown
`
`45~lALl/O
`
`Page 27 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 26 of 64
`
`US 6,516,236 Bl
`
`FIG. 24 Scenario-Map -Initialization
`IUnknown
`DRIVER
`ADMIN.
`
`IXMC xxxAPI
`
`IUnknown
`
`STREAM
`
`CRegistryMgr
`
`~in95
`
`Page 28 of 91
`
`
`
`Feb. 4,2003
`
`Sheet 27 of 64
`
`US 6,516,236 Bl
`
`u.s. Patent
`FIG. 25 Scenario-Map - Registration
`3
`
`IUnknown
`DRIVER
`ADMIN.
`~------r IXMC xxxUDSPI
`2 l------+
`281------
`
`IXMC xxxAPl
`
`\.4---{
`
`___ IUnknown
`
`STREAM
`
`FIG. 26 Scenario-Map - Setup
`
`IXMC xxxAPI
`1
`
`IUnknown
`DRIVER
`ADMIN.
`32
`
`IXMC xxxUDSPI
`
`STREAM
`
`CRegistryMgr
`
`Page 29 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 28 of 64
`
`US 6,516,236 Bl
`
`FIG. 27 Scenario-Map - Clean-up
`
`IUnknown
`DRIVER
`ADMIN.
`
`IXMC xxxUDSPI
`·······2H'·· ""';--.-:1---
`
`.........................-..._...._...._..._. ---\.
`
`CRegistryMgr
`
`FIG. 28 Scenario-Map - Initialization (Drv)
`30
`IUnknown
`
`IXMC xxxU DSPI
`
`CRegistryMgr
`
`Page 30 of 91
`
`
`
`u.s. Patent
`FIG. 29 Scenario-Map - Opening the Stream
`
`US 6,516,236 Bl
`
`Feb. 4,2003
`
`Sheet 29 of 64
`
`30
`
`IUnknown
`
`IXMC xxxSPI
`
`IUnknown
`
`STREAM
`IXMC xxxUDSPI
`'.
`..........····..·····28··~~":..-=-~_··r·-,
`
`.
`.
`.-,
`
`......
`
`....................
`
`Page 31 of 91
`
`
`
`u.s. Patent
`FIG. 30 Scenario-Map - Writing Data
`
`Sheet 30 of 64
`
`Feb. 4,2003
`
`US 6,516,236 Bl
`
`30
`
`IUnknown
`
`IXMC xxxSPI
`
`IUnknown
`
`STREAM
`IXMC xxxUDSPI
`..........···..·······28 l"'---.-r--- -,
`..,
`"---+------' .....
`.
`.....
`......
`
`.......................
`
`Page 32 of 91
`
`
`
`u.s. Patent
`US 6,516,236 Bl
`FIG. 31 Scenario-Map - Reading Data
`
`Sheet 31 of 64
`
`Feb. 4,2003
`
`30
`
`IUnknown
`
`IXMC xxxSPI
`
`IUnknown
`
`IXMC xxxUDSPI
`'.
`........·············28··1--~t..=-=-~-···.....
`.
`
`.........................
`
`.
`
`Page 33 of 91
`
`
`
`u.s. Patent
`US 6,516,236 Bl
`FIG. 32 Scenario-Map - Clean-up (Drv)
`
`Sheet 32 of 64
`
`Feb. 4,2003
`
`30
`IXMC xxxSPI
`
`IUnknown
`
`IUnknown
`
`r------,-,
`IXMC xxxUDSPI
`........··..·········28··/'--,':,t:=~-···.....
`..•......
`
`.........................
`
`~--~~~~~~~---+~~
`
`,NT3.5
`16-F
`
`45lALl/O
`~----
`
`6
`
`Page 34 of 91
`
`
`
`u.s. Patent
`FIG. 33 Interface-Map
`
`Feb. 4,2003
`
`Sheet 33 of 64
`
`US 6,516,236 Bl
`
`CStreamObject
`
`IUnknown
`
`IClassFactory
`
`~~~~--------~~--------------------
`
`SPI - UnDocumented
`
`IXMC Stream
`
`ead, Write, Enable, Stat, IsEnabled
`
`IXMC Streamlnit
`
`nitialize, Open, Close, Setup,
`Stat, CreateStream
`
`FIG. 34 Module Interaction-Map.
`
`IXMC xxxAPI
`
`IUnknown
`
`OMPONENT
`
`IXMC xxxSPI
`36
`
`DRIVER
`
`Page 35 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 34 of 64
`
`US 6,516,236 Bl
`
`FIG. 35 Object Interaction-Map
`
`IUnknown
`
`OMPONENT
`
`IXMC xxxAPI
`
`IUnknown
`
`."
`
`, ...................
`
`IXMC DrvExt
`xxxSPI
`36 ~==I===--~
`
`CDriverStub
`36c
`
`c
`
`IUnknown
`
`IXMC xxxSPI
`
`Page 36 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 35 of 64
`
`US 6,516,236 Bl
`
`FIG. 36 Scenario-Map - Initialization
`34
`IUnknown
`
`IXMC xxxAPI
`
`OMPONENT
`
`IUnknown
`
`IXMC DrvExt
`xxxSPI
`36
`CLSID
`(of Driver) ~....:--_~
`
`42
`
`~
`
`CDriverStub
`36c
`
`C
`
`IUnknown
`
`IXMC xxxSPI
`
`CLSID
`of Driver)
`
`Page 37 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 36 of 64
`
`US 6,516,236 Bl
`
`FIG. 37 Scenario-Map - Operations
`34
`IUnknown
`
`IXMC xxxAPI
`__ ---(
`1 J----__+_
`IUnknown
`
`OMPONENT
`
`IXMC DrvExt
`xxxSPI
`36
`
`.
`lot·.-..!::::;t;;::::::::::!.~•..
`-.......
`
`......,..............
`
`CDriverStub
`36c
`
`C
`
`IUnknown
`
`IXMC xxxSPI
`
`Page 38 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 37 of 64
`
`US 6,516,236 Bl
`
`FIG. 38 Scenario-Map - Clean-up
`34
`
`IUnknown
`
`IXMC xxxAPI
`
`OMPONENT
`
`1 )----_+_
`_---{
`IUnknown
`
`IXMC DrvExt
`xxxSPI
`36
`-
`
`loc.:..:.-'=;~=-J
`
`...............,........
`
`impleOriver
`
`IUnknown
`
`IXMC xxxSPI
`
`Page 39 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 38 of 64
`
`US 6,516,236 Bl
`
`FIG. 39 Interface-Map
`I CDriverStubObject
`
`sFactoryo-
`
`IClas
`
`IXMC
`
`91Unknown
`1/\
`Standard OLE 2.0 lnterface
`(Implemented by MFC)
`/Standard OLE 2.0 Interface
`~Impl. by MFC and AFX basecode)
`-------------
`II Stub Specific Interfaces I
`DrvStubo- K RegisterDriver, UnRegisterDriver
`SPI Extended Interfaces I
`----_._ .._.--
`0-\.
`/ XMCSPI Extended Interface #1
`Q--.
`
`DrvExt
`
`DrvExt
`
`IXMC
`-
`1
`SPI
`IXMC
`SPI2
`
`-
`
`DrvExt
`
`IXMC
`-
`SPI n
`
`/ XMCSPI Extended Interface #2
`'\.
`08
`0-r\.
`/ XMCSPI Extended Interface #n
`
`Page 40 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 39 of 64
`
`US 6,516,236 Bl
`
`FIG. 40 Module Interaction-Map
`34
`pDriverlnfoMap
`DRIVER
`
`IXMC_xxxAPI
`
`IUnknown
`
`ADMIN. CPL~----
`
`river, ~
`pDriverlnfo,
`hStream,
`pStreamlnfo
`IXMC xxxAPI
`
`pDrvE?num '--
`
`-"
`
`IUnknown
`
`DRIVER
`ADMIN.
`
`IUnknown
`
`IUnknown
`
`38
`
`IXMC
`xxxSPI
`
`Page 41 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 40 of 64
`
`US 6,516,236 Bl
`
`FIG. 41 Object
`r---D-R-I-V-E-R--' pp rive rl nfo Map
`
`Interaction-Map
`
`IUnknown
`
`ADMIN. CPL ~
`L----"I"'------" ~
`38
`hDriv~r,
`pDrvlnfo,
`hStream,
`pStrm Info
`IXMC xxxAPI
`
`...........
`
`......
`
`IXMC_xxxAPI
`hDriver
`
`pDrVEtum
`
`~------__
`
`IUnknown
`
`42
`
`REG:STRY
`
`~
`
`32
`
`DRIVER
`ADMIN.
`.....r------r .....
`.
`
`.
`
`32c
`
`CSimpleDriver
`C S im pieD river
`
`CSimpleDriver
`
`IUnknown
`
`DRIVER
`
`30 ~-----
`
`IXMC
`xxxSPI
`
`IUnknown
`
`STREAM
`
`IXMC
`UDxxxSPI
`28
`
`Page 42 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 41 of 64
`
`US 6,516,236 Bl
`
`FIG. 42 Scenario-Map
`
`- Initialization
`34
`IUnknown
`
`IXMC xxxAPI
`
`DRIVER
`ADMIN.
`CPL
`
`38
`
`4....
`~--------~ ~
`
`IUnknown
`
`~
`
`.....
`
`.............................
`
`IXM C_xxxAPI
`
`32
`
`DRIVER
`ADMIN.
`
`.....
`
`.......
`
`......
`
`....
`
`~~~~------~
`
`n-l----~C D riverlnfoM a
`
`C S im pie D river
`C S im pie D river
`
`IXMC
`xxxS PI
`
`DRIVER
`
`30~----
`
`Page 43 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 42 of 64
`
`US 6,516,236 Bl
`
`FIG. 43 Scenario-Map - Registering a Driver
`
`pDriverl nfoMap
`~
`1
`
`IUnknown
`
`DRIVER
`ADMIN. CPL
`38
`
`..........
`
`.........
`~~t::====-'..,/""
`~---',.
`
`..........
`
`.
`.
`
`.
`
`.
`
`.
`
`.
`
`CSimpleOriver
`
`IUnknown
`
`IXMC xxxSPI
`
`Page 44 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 43 of 64
`
`US 6,516,236 Bl
`
`FIG. 44 Scenario-Map - Registering a Stream
`
`DRIVER
`ADMIN. CPL
`
`pDriverCLSID,
`1 ~IPszStreamFileName
`
`38 PDriverlnfoMa~
`
`IUnknown
`
`~42
`REG STRY
`
`DRIVER
`ADMIN.
`.....
`'-..!:-:i====~ .
`..........
`
`........
`
`IXMC xxxAPI
`32
`
`CSimpleDriver
`32df
`
`IUnknown
`
`DRIVER
`
`IXMC
`UDxxxSPI
`
`IUnknown
`
`IXMC
`xxxSPI
`
`30
`
`Page 45 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 44 of 64
`
`US 6,516,236 Bl
`
`FIG. 45
`
`Scenario-Map - Setting Driver Info.
`32
`IUnknown
`IXMC xxxAPI
`DRIVER
`ADMIN.
`hDriver,
`pDrvlnfo
`
`DRIVER
`ADMIN. CPL
`.....
`
`38
`
`............
`
`CDriverAdminDisn+--4.
`32a
`
`CSimpleDriver
`
`CSimpleDriver
`
`IUnknown
`
`IXMC xxxSPI
`
`Page 46 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 45 of 64
`
`US 6,516,236 Bl
`
`FIG. 46 Scenario-Map - Setting Stream Info.
`DRIVER
`ADMIN. CPL
`38
`
`\
`
`hDriver,hStream,pDriverlnfo
`
`IUnknown
`
`IXMC xxxAPI32
`DRIVER
`ADMIN.
`.......'-~,*===~'.
`.....
`..........
`.......
`.....
`
`••
`
`,
`
`...::=:
`
`••••••.••
`
`....
`
`..".
`-'.
`
`......"..
`..
`
`32c r------'¥----,
`
`CSimpleOriver
`CSimpleOriver
`
`CSimpleOriver
`
`6
`IUnknown
`
`IXMC UDxxxSPI
`
`STREAM
`
`Page 47 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 46 of 64
`
`US 6,516,236 Bl
`
`FIG. 47 Scenario-Map - Querying Driver Enum.
`
`IUnknown
`
`IXMC
`xxxAPI
`
`~hD::~~~
`
`pDriverEnum
`
`·······
`
`.............
`CDriverAdminDisn+--{
`32a
`
`.....
`
`C S im pieD river
`
`CSimpleDriver
`
`CSimpleDriver
`
`IUnknown
`
`IXMC xxxSPI
`
`DRIVER
`
`30
`
`Page 48 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 47 of 64
`
`US 6,516,236 Bl
`
`FIG. 48 Scenario-Map - Querying Drv Info. Map
`
`DRIVER
`ADMIN. CPL
`
`38
`
`IUnknown
`
`IXMC xxxAPI32
`.i.-r">
`............~~"I==~...).....
`
`•••. ,
`
`~
`
`.
`
`.
`
`-'11•• ,
`
`IUnknown
`
`DRIVER
`
`IXMC
`xxxSPI
`
`30
`
`IXMC
`
`UDxxxSP!28./~=====~
`
`Page 49 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 48 of 64
`
`US 6,516,236 Bl
`
`FIG. 49 Scenario-Map - Clean-up
`34
`
`IUnknown
`
`DRIVER
`ADMIN. CPL
`
`38
`
`IXMC xxxAPI
`
`IUnknown
`
`42
`~ REGSTRY
`
`IXMC xxxAPI32
`.........
`........
`
`,...------r .....
`..•.•••••...................
`'-..!::;'I===:::::!......,.)
`
`5
`
`CSimpleDriver
`32d
`IUnknown
`
`IXMC
`xxxSPI
`
`30
`
`DRIVER
`
`IXMC
`UDxxxSPI
`
`STREAM
`
`Page 50 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 49 of 64
`
`US 6,516,236 Bl
`
`FIG. 50 Interface-Map.
`
`CDriverAdminOjbectl---7~
`
`IUnknown
`
`-'
`
`IClassFactory
`
`Standard OLE 2.0 Interface
`(Impl. by MFC and AFX basecode)
`
`IDispatch
`
`IXMC EnumDrv
`
`IXMC
`DrvAdmin
`
`IXMC
`DrvAdminD
`
`Standard OLE 2.0 Interface
`(Impl. by MFC and ClassWizard
`generated code)
`
`ISpecific Std. InterfaCesr-nnn-uuuu
`IAPI Interfaces r--------n---u-------_u----
`
`Standard IEnumX OLE 2.0 Interfac
`
`EnableLogging,lsLoggingOn,
`EnableDiagnosticTesting,
`IsDiagnosticTestingOn,
`SetLoggingStream
`
`Page 51 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 50 of 64
`
`US 6,516,236 Bl
`
`FIG. 51 Module Interaction-Map
`42
`
`~
`
`48
`
`38
`
`river,
`PDriver-j
`!PDriverlnfosO
`InfoMap
`hStream,
`pStrmlnfo
`---=-------,
`DRIVER
`hDriver,pDriverlnfo,hStream,
`'-----""'I""I"t6lriverlnfoMap j t
`I pStrmlnfo
`ADMIN. CPL
`IUnknown
`
`( OK )@anceD
`
`¥
`
`DRIVER
`IXMC xxxAPI
`ADMIN.
`32)---
`
`Page 52 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 51 of 64
`
`US 6,516,236 Bl
`
`FIG. 52 Object Interaction-Map
`
`38b~
`
`38a,-
`
`42
`REGISTRY
`
`~
`
`pDriver
`
`hDriver,
`
`Info- iI pDriverlnfo,
`
`lew upport-
`Dialog
`C--O-K-)(c"":='~-n-ce-D
`
`CComCPL
`
`thStream,
`pStrmlnfo
`
`Map
`38d
`CDnverlnfoMap
`38e
`CDriverlnfo
`CStreamlnfo
`38f
`
`hDriver
`pDriverinfo,1
`hStream,
`
`t
`
`pStreamlnfo t1pDriverlnfoMap
`
`hDriver,
`pDriverlnfo,
`hStream,
`pStreamlnfo
`
`------\\.\
`
`\
`
`~
`
`\pDriverlnfoMap
`\
`Unknown
`
`.'
`
`DRIVER ..
`ADMIN.
`
`- .-_. _ .._. --- -_ ..- .._ ..-- -_ ..-_. _ .._ .._ ..- .._- -_ .._- -_ .._- -_ ..-
`32
`
`Windows
`51.r
`
`Page 53 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 52 of 64
`
`US 6,516,236 Bl
`
`FIG. 53 Scenario-Map - Initializing the App.
`42
`REGISTRY
`
`38k
`
`CComCPL
`
`-+-~
`
`2 1----.--
`
`Unknown
`
`~
`
`,.
`
`- ._ ..-.._ .._ .._ ..-.._ .._.._ .._ .._ .._ .._.-_ ..-.._ ..---_ .._ .._ ..-
`
`1
`
`Windows
`51;-
`
`IXMC
`
`DRIVER
`ADMIN,
`
`Page 54 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 53 of 64
`
`US 6,516,236 Bl
`
`FIG. 54 Scenario-Map - Main Dialog Init.
`
`pDriverlnfoMaPI
`
`1
`
`Ad
`
`CD·
`river
`38i
`
`In
`~
`
`pDriverlnfoMap
`Unknown
`
`IXMC xxxAP
`-
`
`DRIVER
`ADMIN.
`
`Page 55 of 91
`
`
`
`Feb. 4,2003
`
`Sheet 54 of 64
`
`u.s. Patent
`FIG. 55 Scenario-Map - Adding a Driver
`38
`
`US 6,516,236 Bl
`
`DriverAdminDI
`( OK )@anceD
`4
`
`DRIVER
`ADMIN.
`
`FIG. 58 Module Interaction-Map
`IUnknown
`MOTION
`COMPONENT
`
`ICOM xxx
`IXMC xxxAPI
`
`ICOM xxx
`IXMC-API
`
`ICOM xxx
`ILNG-xxx
`IXMC xxxSPI ~~_
`
`LANGUAGE
`DRIVER
`
`ICOM xxx
`IXMC xxxUDSPI
`
`28
`
`IUnknown
`DRIVER
`ADMIN.
`
`IUnknown
`STREAM
`
`Page 56 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 55 of 64
`
`US 6,516,236 Bl
`
`FIG. 56 Scenario-Map
`38
`
`- Removing
`
`a Driver
`
`(
`
`I
`hDriver,
`hStream t
`
`2
`
`Unknown
`
`DRIVER
`ADMIN.
`
`IXMC
`
`32
`
`FIG. 57 Scenario-Map-ViewSupport
`38
`
`CDriverAdmin-
`Dialog
`C--O--K-)@-=a-n-ce-D
`
`--- ~~-
`lew upport-
`Dialog
`( OK )@anceD
`
`Page 57 of 91
`
`
`
`u.s. Patent
`FIG. 59 Object Interaction-Map
`
`Sheet 56 of 64
`
`Feb. 4,2003
`
`IUnknown
`
`ICOM xxx
`IXMC xxxAPl
`
`MOTION
`COMPONENT
`
`US 6,516,236 Bl
`
`IUnknown
`DRIVER
`ADMIN.
`
`IUnknown
`
`....................................................
`
`ICOM xxx
`ILNG-xxx
`IXMC xxxSPI
`..............:::..···············52
`53
`
`SPI
`DATABASE
`
`ICOM xxx
`IXMC xxxUDSPI
`28
`
`Page 58 of 91
`
`
`
`u.s. Patent
`FIG. 60 Scenario-Map - Init. by Drv. Admin.
`
`US 6,516,236 Bl
`
`Feb. 4,2003
`
`Sheet 57 of 64
`
`ICOM xxx
`IXMC-API
`
`IUnknown
`DRIVER
`ADMIN .
`
`...........................
`
`....................................................
`
`....
`
`:
`
`I •••••••••••••••••
`
`••••••••••••••••••••••••
`
`.
`
`Page 59 of 91
`
`
`
`Feb. 4,2003
`
`Sheet 58 of 64
`
`US 6,516,236 Bl
`
`u.s. Patent
`FIG. 61 Scenario-Map - Adding a Stream
`32
`
`ICOM xxx
`IXMC-API
`
`IUnknown
`DRIVER
`ADMIN.
`
`ICOM xxx
`ILNG-xxx
`IXMC xxxSPI
`~===S;:=-J'"
`···············52
`..................
`
`.
`
`.
`......
`
`CDriverlnfo
`52p
`ICSimpleStream I
`
`ooo
`
`CSimpleStream
`
`6
`
`IUnknown
`
`ICOM xxx
`IXMC xxxUDSPI28
`
`Page 60 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 59 of 64
`
`US 6,516,236 Bl
`
`FIG. 62 Scenario-Map - Query Operation
`32
`ICOM xxx
`IXMC-API
`
`IUnknown
`DRIVER
`ADMIN.
`
`ICOM xxx
`ILNG-xxx
`IXMC xxxSPI
`-·················52
`.
`.......
`
`.•"
`
`.....................................................
`
`CDriverl nfo
`52p
`
`521
`o
`o
`. CSimpleStream
`
`••••••••••••••••••••••••••••••
`
`I!I ••••••••••••
`
`Page 61 of 91
`
`
`
`Feb. 4,2003
`
`Sheet 60 of 64
`
`US 6,516,236 Bl
`
`u.s. Patent
`FIG. 63 Scenario-Map - Registration loading
`32
`
`ICOM xxx
`IXMC-API
`
`IUnknown
`DRIVER
`ADMIN.
`
`ICOM xxx
`ILNG-xxx
`IXMC xxxSPI
`.....:·················52
`........
`
`.~nw'I'W'r.......:-=':•••:-=::••••••••
`
`.....................................................
`
`CDriverlnfo
`52p
`~ ICSimpleStream I
`
`..............., ..··csi~~!e
`
`0
`:
`0
`:
`0
`:
`~ CSimpleStream
`
`ICOM xxx
`IXMC xxxUDSPI
`28
`
`Page 62 of 91
`
`
`
`u.s. Patent
`FIG. 64 Scenario-Map - Cean-up
`
`Feb. 4,2003
`
`Sheet 61 of 64
`
`ICQ\/J xxx
`IXNIC xxxAPl
`
`IUnknown
`rvlOTION
`Corv1PONENT
`
`US 6,516,236 Bl
`
`IUnknown
`DRIVER
`ADMIN.
`
`DRIVER
`
`ICQ\/J xxx
`ILNG-xxx
`IXNIC xxxSPI
`.................················5
`
`SPI
`DATABASE
`
`....................................................
`52e
`
`L:.0,":.:°0:°,',°,°,',':.':.'0'0'.'.'.':.':::.'0""":
`
`0,': •• :
`
`ICOM xxx
`IXNIC xxxUDSPI
`28
`
`Page 63 of 91
`
`
`
`u.s. Patent
`FIG. 65 Scenario-Map - Command Operation
`
`US 6,516,236 Bl
`
`Feb. 4,2003
`
`Sheet 62 of 64
`
`ICOM xxx
`IXMC xxxAPl
`
`IUnknown
`MOTION
`COMPONENT
`
`ICOM xxx
`ILNG-xxx
`IXM~::~'~~~"5' ~===s;=~
`..............
`
`.
`
`ICOM xxx
`IXMC xxxUDSPI
`28
`
`Page 64 of 91
`
`
`
`u.s. Patent
`
`Feb. 4,2003
`
`Sheet 63 of 64
`
`US 6,516,236 Bl
`
`IU nknown
`
`FIG. 66 Interface-Map
`19
`1 CDriverObject
`/"'\.
`Standard 0 LE 2.0 Interfa ce
`(Implemented
`by MFC)
`sFactory 0-VStandard OLE 2.0 Interface
`~Im pI. by M FC and AFX basecode)
`1---------------------
`
`IClas
`
`COM Interfaces
`
`ICOM
`
`_Base20-
`
`Unlnitialize, GetErrString,
`/Initialize,
`\GetStateHandle,
`SetStateHandle
`
`(GetID, GetModuleType,
`/Lo ad, Save, Clear,
`\.
`
`IsDirty
`
`GetClasslDI
`
`I
`---------
`
`1
`
`ICOM
`
`Persist20-
`
`0-
`OM_
`IC
`rsistRegDB
`Pe
`
`ILo
`
`ILNG
`Strea
`
`_DrvExt_o-
`mMgmt
`
`Language
`Driver
`Interfaces
`NG_ Q- /Create, Destroy, Setup, Stat,
`rvCore
`lnit
`\ Register, Unregister,
`IsRegistered,
`Enable,
`IsEnabled
`VAddStream, RemoveStream,
`~emoveAIiStreams,
`GetStrm Init,
`GetStrm InitAt, GetStrm Enurn.
`etStreamCount,
`EnabledStrmOnly
`r--------------------
`II SPI Core Interfaces
`SEE FIGURE 21 (same interfaces)
`1-------------
`Interfaces
`SPI Extended
`SEE FIGURE 21 (same interfaces)
`
`Page 65 of 91
`
`
`
`~
`
`"'T\C
`;,..,e
`"'T\C
`.•..•~~
`-=rJJ
`
`acN"
`
`'T~
`.Q
`
`~~
`
`•00.•
`
`~
`
`~
`
`~=~~~
`
`t--
`(Q
`
`•C)-
`
`LL
`
`
`
` ~~\~~\
`
`,0
`
`,0'"~II)
`\,0'"v:
`
`<Custom> SPI Database
`
`Datei<date>
`NameI<name>
`
`CompanyIRO'l'-G-BIV Corporation
`HardwareI<hardware>
`
`'NOTE: The '+' operator directs the parser-fo continue using the previous
`type until either: a.) The end of the format stringlsreached,or
`b.) the next
`type changes from number
`
`to string or vice-versa.
`
`T
`
`:CommandDataTypes
`I%S = stnng
`%If=doUl:ile
`%Iu = UlONG orLlW1:fA.D
`%u=WORD
`"lad=int
`%b = BOOl (1 or 0)
`+ = continue previous typ