throbber
(12) United States Patent
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket