throbber
United States Patent [191
`Shaw et al.
`
`I 1111111111111111 11111 111111111111111 111111111111111 1111111111111111111 IIII
`US005604843A
`[11] Patent Number:
`[45] Date of Patent:
`
`5,604,843
`Feb. 18, 1997
`
`[54] METHOD AND SYSTEM FOR INTERFACING
`WITH A COMPUTER OUTPUT DEVICE
`
`[75]
`
`Inventors: Lin F. Shaw, Redmond; Eric J.
`Bidstrup, Carnation; Zhanbing Wu,
`Kent, all of Wash.
`
`[73] Assignee: Microsoft Corporation, Redmond,
`Wash.
`
`[21] Appl. No.: 995,287
`Dec. 23, 1992
`[22] Filed:
`Int. Cl.6
`..................................................... G06K 15/00
`[51]
`[52] U.S. Cl . ............................................. 395/101; 395/114
`[58] Field of Search ..................................... 395/112, 114,
`395/116, 115, 111, 101; 371/11.l
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`5,140,675
`5,146,547
`5,165,014
`5,228,118
`5,268,993
`5,287,434
`5,293,466
`5,337,319
`5,410,641
`
`8/1992 Okada ..................................... 395/114
`9/1992 Beck et al. .............................. 395/116
`11/1992 Vassar ..................................... 395/112
`7/1993 Sasaki ..................................... 395/112
`12/1993 Ikenoue et al .......................... 395/114
`2/1994 Bain et al. .............................. 395/101
`3/1994 Bringmann .............................. 395/114
`8/1994 Furukawa et al. ..................... 371/11.1
`4/1995 Wakabayashi et al. ................. 395/112
`
`Primary Examiner-Raymond J. Bayerl
`Assistant Examiner-Steven P. Sax
`Attorney, Agent, or Firm-Seed and Berry LLP
`
`[57]
`
`ABSTRACT
`
`A computer method and system for configuring device
`driver is provided. In a preferred embodiment, a device
`driver comprises a minidriver associated with -each output
`device and a universal driver. Each minidriver implements a
`plurality of minidriver functions for controlling the output(cid:173)
`ting of data to the output device by invoking functions of the
`universal driver. During execution of a program, the pro(cid:173)
`gram selects an output device and invokes the minidriver
`functions of the minidriver associated with the selected
`output device. An initialization function of each minidriver
`invokes an initialization function of the universal driver
`passing an indication of and attributes of the selected output
`device. Other minidriver functions invoke an analogous
`function of the universal driver passing an indication of the
`selected output device. The initialization function of the
`universal driver processes the passed attributes and stores
`the indication and the processed attributes. Each analogous
`function accesses the stored attributes and performs the
`behavior of the analogous function to effect the controlling
`of the output device.
`
`13 Claims, 9 Drawing Sheets
`
`100
`
`101
`
`Application
`Program
`
`Graphics Device Interface
`
`102
`
`203
`
`203
`
`MiniDriver 1
`
`MiniDriver 2
`
`UniDriver
`
`105
`
`Output
`Device
`
`105
`
`Output
`Device
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 1
`
`

`

`U.S. Patent
`
`Feb. 18, 1997
`
`Sheet 1 of 9
`
`5,604,843
`100
`
`101
`
`Application
`Program
`
`Graphics Device Interface
`
`102
`
`Device
`Driver 1
`
`103
`
`• • •
`
`Device
`Driver N
`
`103
`
`105
`
`105
`
`Device 1
`
`Device N
`
`Figure 1
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 2
`
`

`

`U.S. Patent
`
`Feb. 18, 1997
`
`Sheet 2 of 9
`
`5,604,843
`100
`
`101
`
`Application
`Program
`
`Graphics Device Interface
`
`102
`
`203
`
`203
`
`MiniDriver 1
`
`• • •
`
`MiniDriver 2
`
`Uni Driver
`
`Output
`Device
`
`105
`
`•••
`
`105
`
`Output
`Device
`
`Figure 2
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 3
`
`

`

`,I::;.,. w
`00
`'JI
`~ =
`,I::;.,.
`
`'JI
`
`01
`
`\Cl
`1-1'1
`0
`~
`~
`r;,:i =-
`~
`
`-..,l
`\Cl
`\Cl
`i,-
`~~
`i,-
`
`~
`
`g. .
`
`~ =
`Pl
`~
`•
`rJl
`
`'""""
`
`c •
`
`I J
`
`316
`
`•
`•
`•
`
`model data entry I
`
`resolution entry
`
`315
`~314
`313
`312
`311
`
`file size
`
`heap offset
`
`H&V Master Units
`
`# header entries
`
`ID
`
`310
`
`\. download info entry
`\
`\
`\
`\
`\
`\
`\
`\
`\
`\
`\
`\
`\
`\
`r\
`
`Figure 3A
`
`I
`
`I
`
`-----
`
`HEAP
`
`330~
`
`STRUCTURES
`
`ATTRIBUTE
`
`320-----1
`
`HEADER
`
`310-----1
`
`300
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 4
`
`

`

`U.S. Patent
`
`Feb. 18, 1997
`
`Sheet 4 of 9
`
`5,604,843
`
`<(
`T""
`N
`C"')
`
`m
`T""
`N
`C"')
`
`T""
`N
`C"')
`
`m
`C"')
`N
`C"')
`
`• • •
`
`• • •
`
`•••
`
`T""
`
`C"')'tE
`
`<( 5
`M\! i------4---+---1
`
`CO
`
`0
`
`• • •
`
`~ .._____,i _ _. _ _._ ____ ________ _.____,
`cu
`.E
`cu
`-
`C:
`C:
`0
`"C
`:.;::::;
`-
`::l
`-?:l ~ 0 ~
`o- cn-
`E s:: Q) s::
`Q)
`.... Q)
`
`"C cu
`0 c~
`:=-0 C:
`
`"C Q)
`
`Ql
`
`r-? e :::s
`.0>
`tJ:
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 5
`
`

`

`U.S. Patent
`
`Feb. 18, 1997
`
`Sheet 5 of 9
`
`5,604,843
`
`-
`
`-
`
`-
`
`1
`
`•
`
`•
`
`• •
`
`• • •
`
`C Q)
`.Q.~
`-cn-(cid:173)
`.2 L.. 0
`0 Q) e>
`"' a.
`a> m
`c::: a..
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 6
`
`

`

`U.S. Patent
`
`Feb. 18, 1997
`
`Sheet 6 of 9
`
`5,604,843
`
`Function
`
`Invoke
`Analogous
`Unidriver Function
`
`Figure 4A
`
`Return
`
`Figure4B
`
`Function
`
`Perform
`Device Specific
`Processing
`
`Invoke
`Analogous
`Unidriver Function
`
`Perform
`Device Specific
`Processing
`
`Return
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 7
`
`

`

`U.S. Patent
`
`Feb. 18, 1997
`
`Sheet 7 of 9
`
`5,604,843
`
`Enable
`
`Retrieve
`Reference to
`GPC Data
`
`Invoke
`Analogous
`Unidriver Function
`
`Perform
`Device Specific
`Processing
`
`Return
`
`Figure 5
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 8
`
`

`

`U.S. Patent
`
`Feb. 18, 1997
`
`Sheet 8 of 9
`
`5,604,843
`
`601
`602
`603
`604
`·605
`606
`607
`608
`609
`610
`611
`612
`613
`614
`615
`616
`617
`618
`619
`620
`
`DEVICE DATA STRUCTURE
`
`type of device
`
`general flags
`
`master unit data
`
`copy data
`
`font data
`
`handle of device context
`
`handle of minidriver data
`
`paper format
`
`band format
`
`bitmap data
`
`printer state data
`
`clipping/bounding rectangle
`
`resolution data
`
`callback functions
`
`index to model data
`
`command array
`
`spooling data and buffers
`
`banding bitmap
`
`download controls
`
`miscellaneous data
`
`Figure 6
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 9
`
`

`

`U.S. Patent
`
`Feb. 18, 1997
`
`Sheet 9 of 9
`
`5,604,843
`
`Enable
`(unidriver)
`
`,,
`
`701
`Initialize device
`mode structure
`
`''
`
`702
`Initialize helper
`function dispatch
`table
`
`,,
`
`703
`Set resolution
`data in device
`mode structure
`
`' (
`
`704
`
`Initialize
`paper format
`
`' (
`
`705
`
`Initialize
`callback table
`
`'(
`
`706
`
`Initialize
`printer memory
`available
`
`''
`
`707
`
`Determine
`spot diameter
`
`'(
`
`708
`
`Build font
`map table
`
`' (
`
`709
`Retrieve width
`and height of
`default font
`
`'(
`
`710
`
`Determine
`rectangle fill
`capability
`
`,t
`
`711
`
`Establish
`printer queue
`
`'(
`
`712
`
`Build
`command table
`
`713
`
`'(
`Allocate
`memory
`
`'(
`
`Return
`
`Figure 7
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 10
`
`

`

`5,604,843
`
`1
`METHOD AND SYSTEM FOR INTERFACING
`WITH A COMPUTER OUTPUT DEVICE
`
`2
`outputting data to a printer. One skilled in the art would
`appreciate that such references also apply to other output
`devices. Each of the functions that must be implemented by
`a device driver is described.
`
`Function
`
`Description
`
`(1)
`
`Initialization
`
`5
`
`10
`
`Control
`
`Disable
`
`TECHNICAL FIELD
`
`This invention relates generally to a computer method and
`system for interfacing with devices and, more specifically, to
`a method and system for implen:ienting device drivers.
`
`BACKGROUND OF THE INVENTION
`
`Computer systems output data to a variety of output
`devices, such as, printers, plotters, and video displays. Each
`device typically has a manufacturer defined device-specific
`protocol for communicating with the device. A computer
`system, under the control of an operating system, uses the
`protocol to communicate with a device. Thus, an operating
`system must know the protocol for each device to which it
`communicates. It would be impractical for an operating
`system developer to provide an interface to every available
`output device. Moreover, it would be impracticable to pro(cid:173)
`vide an interface to output devices that have not yet been
`developed. To overcome these difficulties, operating systems
`interface with devices indirectly through device drivers. The
`operating system developer defines the functionality of the
`operating system/device driver interface. Each manufacturer
`of a device then provides a device driver, which implements
`the operating system/device driver interface that is consis(cid:173)
`tent with the device protocol. The operating system loads the
`device driver and invokes its functions to communicate with
`the device.
`A primary goal of operating systems is to provide an
`application program environment which is output device
`independent. This independence means that an application
`program can output its data to various types of devices
`without modification of the program. For example, an oper(cid:173)
`ating system can redirect output of application program data
`to a display, printer, or file without the application program
`being aware of the redirection.
`FIG. 1 is a block diagram illustrating a prior device driver
`configuration. Computer system 100 comprises application
`program 101, graphics device interface 102, and device
`drivers 103. Each device driver interfaces with a device 105
`that is attached to computer system 100. Application pro(cid:173)
`gram 101 outputs data using functions provided by the
`graphics device interface (GDI) 102, which is typically part
`of an operating system. The GDI effects the output of data
`by invoking functions implemented by the device drivers
`103 in accordance with the operating system/device driver
`interface. The graphics device interface and device drivers
`insulate the application program from the different charac(cid:173)
`teristics of the devices. The GDI provides a variety of
`functions for accessing the devices in a device-independent
`manner.
`The developer of a graphics device interface provides a
`definition of its functionality to the developers of application
`programs. An example of such a graphics device interface is
`described in Programming Windows 3.1 by Charles Petzold,
`published by Microsoft Press. The developer of the graphics
`device interface also specifies the behavior of each function
`that a device driver (the operating system/device driver
`interface) must implement. For example, one graphics
`device interface specifies six categories of functions that
`must be implemented by a device driver: (1) initialization,
`(2) information, (3) output, (4) attribute, (5) mode, and (6)
`escape. In the following, reference is specifically made to
`
`performs device-dependent operations
`such as starting an output job, aborting
`an output job, and processing a new
`band of bitmap data.
`deallocates memory used by the device
`drivers data structures and unloads the
`device driver from memory.
`allocates and initializes memory for a
`data structure containing device
`dependent and device state information.
`signals the device driver that the
`operating system is shutting down.
`
`translates physical colors to logical
`colors and vice versa.
`enumerates the fonts available on the
`device.
`enumerates the pens and brushes that
`are available on the device.
`returns width values for characters in a
`specified printer font.
`
`sets pels on the output device.
`renders text on the output device.
`renders a shape on the output device.
`sets a single pel on the output device.
`sets pels in a single row of the output
`device.
`renders scaled bitmaps on the output
`device.
`
`converts a logical pen, brush, font, etc.
`data structure to a physical pen, brush,
`font, etc. data structure.
`
`displays a dialog box that allows a user
`to select device options such as paper
`size, paper orientation, and output
`quality.
`
`15
`
`Enable
`
`20
`
`25
`
`30
`
`WEP
`
`(2) Information
`
`Colorlnfo
`
`EnumDFonts
`
`EnumObj
`
`DevGetCharWidth
`
`(3) Output
`
`DevBitB!t
`DevExtTextOut
`Output
`Pixel
`ScanLR
`
`StretchB!t
`
`35
`
`(4) Attributes
`
`RealizeObject
`
`(5) Modes
`
`DeviceMode
`
`(6) Escape
`
`40
`
`45
`
`50
`
`QueryEscSupport
`
`SetAbortDoc
`
`StartDoc
`NextBand
`EndDoc
`AbortDoc
`
`specifies whether the output device
`supports a specified escape sequence.
`invokes the abort procedure of an
`application program.
`signals the beginning of an output job.
`outputs a band of bitmap data.
`signals the end of an output job.
`signals the abnormal tennination of an
`output job.
`
`An application program outputs data to a particular device
`55 by first requesting the graphics device interface to create a
`device context. The device context identifies the particular
`device and contains the current state of the device. For
`example, the device context may contain the current font and
`paintbrush information. The graphics device interface pro-
`60 vides the application program with a handle to a created
`device context. Whenever the application program outputs
`data to the particular device, the application program passes
`the handle to the device context. The graphics device
`interface functions use the passed handle to access the
`65 device context.
`When developing a device driver, the developer codes,
`tests, and debugs each device driver function. This process
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 11
`
`

`

`5,604,843
`
`3
`requires a thorough understanding to the windowing envi(cid:173)
`ronment, the graphics device interface, the device hardware,
`and the device communications protocol. This development
`process is complex, time consuming, and costly.
`
`SUMMARY OF THE INVENTION
`
`5
`
`It is an object of the present invention to provide a method
`and system for configuring device drivers.
`It is another object of the present invention to provide a 10
`method and system for storing data describing device(cid:173)
`specific attributes.
`These and other objects, which will become apparent as
`the invention is more fully described below, are provided by
`a method and system for configuring device driver. In a
`preferred embodiment, a device driver comprises a minid(cid:173)
`river associated with each output device and a universal
`driver. Each minidriver implements a plurality of minidriver
`functions for controlling the outputting of data to the output
`device by invoking functions of the universal driver. During
`execution of a program, the program selects an output device
`and invokes the minidriver functions of the rninidriver
`associated with the selected output device. An initialization
`function of each minidriver invokes an initialization func(cid:173)
`tion of the universal driver passing an indication of and
`attributes of the selected output device. Other minidriver
`functions invoke an analogous function of the universal
`driver passing an indication of the selected output device.
`The initialization function of the uni versa! driver processes
`the passed attributes and stores the indication and the 30
`processed attributes. Each analogous function accesses the
`stored attributes and performs the behavior of the analogous
`function to effect the controlling of the output device.
`
`25
`
`4
`the prior art device drivers 103. Each device 105 has a
`corresponding minidriver 203. Each minidriver implements
`each of the device driver functions and contains data char-
`acterizing the corresponding device. In a preferred embodi(cid:173)
`ment, each device driver function of the minidriver imple(cid:173)
`mentation (except for an initialization function) forwards its
`invocation to an analogous device driver function imple(cid:173)
`mented by the universal driver. The universal driver also
`implements each device driver function. The universal
`driver functions control the interfacing with the destination
`device in accordance with the device characterization data,
`passed parameters, and device state.
`The application program 101 initiates the output of data
`by invoking a GDI function of the graphics device interface
`15 102 and specifying a destination device. The GDI function
`invokes the device driver functions of the minidriver 203
`corresponding to the destination device. In a preferred
`embodiment, an initialization device driver function of each
`rninidriver passes device characterization data to the uni-
`20 versa! driver. The universal driver stores this device char(cid:173)
`acterization data (preferably within a device context) to be
`used by the other device driver functions of the universal
`driver. The other device driver functions of the minidriver
`203 forward their invocation to the universal driver by
`invoking an analogous function of the universal driver.
`MINIDRJVER
`FIG. 4A is a flow diagram illustrating a typical device
`driver function implemented by a minidriver. The function
`forwards the invocation to the analogous universal driver
`(unidriver) function. The device driver function preferably
`passes the same parameters it receives to the device driver
`function of the universal driver. FIG. 4B is a flow diagram
`illustrating an alternate embodiment of a device driver
`function implemented by a minidriver. In this alternate
`35 embodiment, the device driver function, in addition to
`forwarding the invocation, performs a device-specific pro(cid:173)
`cess before and after forwarding the invocation.
`FIG. 5 is a flow diagram of a typical initialization device
`driver function implemented by the minidriver. This initial-
`ization function reads the device characterization data,
`stores the device characterization data in a format expected
`by the uni versa! driver, initializes the device context data for
`the graphics device interface, initializes device state infor-
`mation, and invokes the analogous universal driver function.
`In the following, reference is made to printer character-
`ization data as a specific example of device characterization
`data. One skilled in the art would appreciate that the
`concepts described are applicable to other types of devices.
`PRlNTER CHARACTERIZATION DATA OVERVIEW
`Printer characterization data includes device data and font
`data. The device data describes the attributes of a printer,
`except for the font data. The device data is organized into
`data structures of related attributes so that similar printer
`models can share data structures. A printer model can be
`55 described as a collection of attributes. The device data
`contains
`the printer control commands (e.g., escape
`sequences). The printer characterization data is described
`below in detail in the section entitled "Printer Characteriza-
`tion Data Details."
`The font data describes the attributes of a font. A font is
`defined as a pitch, point, symbol set, and typeface combi(cid:173)
`nation. Each font data structure describes a single font. The
`device data contains references to the font data structures
`corresponding to the fonts supported by the printer.
`A device data file contains a description of one or more
`printers. Each printer is described by a collection of various
`attribute data structures. The attributes encompass aspects of
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`FIG. 1 is a block diagram illustrating a prior device driver
`configuration.
`FIG. 2 is a block diagram illustrating a preferred device
`driver configuration of the present invention.
`FIGS. 3A, 3B, and 3C are block diagrams illustrating the
`layout of device data in a preferred embodiment.
`FIG. 4A is a flow diagram illustrating a typical device
`driver function implemented by a minidriver.
`FIG. 4B is a flow diagram illustrating an alternate
`embodiment of a device driver function implemented by a
`minidriver.
`FIG. 5 is a flow diagram of a typical initialization device
`driver function implemented by the minidriver.
`FIG. 6 is a block diagram illustrating the device data
`structure.
`FIG. 7 is a flow diagram of the Enable function of the
`universal driver.
`
`DETAILED DESCRIPTION OF THE
`INVENTION
`
`40
`
`45
`
`50
`
`The present invention provides a method and system for
`implementing device drivers. FIG. 2 is a block diagram 60
`illustrating a preferred device driver configuration of the
`present invention. Computer system 100 includes a central
`processing unit, computer memory, and input and output
`devices. The computer system executes application program
`101, graphics device interface 102, minidrivers 203, and 65
`universal driver 204. The minidrivers and universal driver
`combine to preferably provide the same functionality and
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 12
`
`

`

`5,604,843
`
`5
`selecting a paper size and source, rendering text and raster
`data onto a page, ejecting pages, and selecting an output bin.
`The device data file contains a header data structure that
`describes the size, count, and offsets to each of the other
`structures in the file. The device data file contains a MOD-
`ELDATA structure for each printer model described. Each
`MODELDATA structure describes the capabilities and
`physical attributes of a printer model. Each MODELDATA
`structure references other attribute structures in the device
`data file. All printer commands, escape codes, and other
`variable length data are stored in a HEAP section of the
`device data file. Each printer control command is described
`in a Command Descriptor structure, and the location of each
`Command Descriptor is referenced from an attribute struc(cid:173)
`ture as an offset from the beginning of the HEAP section.
`The following is a brief description of the types of attribute
`structures used to characterize various attributes of a printer.
`
`Structure
`
`Description
`
`MODELDATA
`
`RESOLUTION
`
`PAPERSIZE
`
`PAPER QUALITY
`
`PAPERSOURCE
`PAPERDEST
`
`TEXTQUALITY
`
`COMPRESSMODE
`
`FONTCART
`PAGECONTROL
`
`CURSORMOVE
`
`FONTSIMULATION
`
`DEVCOLOR
`
`RECTFILL
`
`DOWNLOADINFO
`
`describes all characteristics of a printer
`model and contains data describing which
`of the attribute structures are supported
`by the printer model.
`corresponds to a single raster graphics
`resolution of the printer and contains all
`the information and commands needed to
`render raster graphics data
`describes a single paper size, unprintable
`regions, and commands required to
`select it.
`describes the types of paper or other
`media that a device may render an image
`on. (This is typically used to describe
`attributes such as plain paper,
`transparencies, coated paper, etc.)
`describes a paper feed method and bin.
`describes a paper output bin and method,
`and associates a string describing a single
`bin and method with a printer command.
`describes a text quality attribute such as
`draft, near letter quality, or letter quality,
`and associates a descriptive string with a
`printer command.
`describes a data compression mode and
`printer commands.
`describes a single font cartridge.
`contains printer commands needed to
`control the printer on a per print job
`basis, such as printer commands to
`initialize the printer and select orientation,
`and indicates the order that commands
`should be sent to printer.
`describes printer commands, methods, and
`limitations for moving the cursor (current
`active position) around a page.
`describes a collection of printer
`commands to enable and disable font
`attributes such as bold, italic, and
`underline.
`describes information needed to print
`color graphics and text.
`describes information needed to print
`filled rectangles.
`describes the commands and methods used
`to download fonts to the printer.
`
`FIGS. 3A, 3B, and 3C are block diagrams illustrating the
`layout of device data file in a preferred embodiment. The
`device data file 300 comprises header data 310, attribute
`structures 320, and heap 330. The header data 310 contains
`an identification field 311, number of entries field 312,
`horizontal and vertical master units field 313, heap offset
`field 314, file size field 315, and header array 316. The
`identification field 311 contains an indication that the file is
`a device data file. The number of entries field 312 indicates
`
`5
`
`15
`
`25
`
`6
`the number of entries in the header array 316. The horizontal
`and vertical master units field 313 are described below. The
`heap offset field 314 contains the offset from the start of the
`device data file to the heap 330. The file size field 315
`contains the size of the device data file 300. The header array
`316 contains an entry for each type of attribute structure.
`Each header array entry contains a length field 316A, a count
`field 316B, and an offset field 316C. The length field 316A
`contains the length in bytes of the corresponding type of
`10 attribute structure. The count field 316B contains the number
`of different attribute structures for the corresponding type of
`attribute. The offset field 316C contains the offset within the
`device data file 300 of the array of corresponding attribute
`structures. The attribute arrays 321, 322, and 323 are stored
`in the attribute structures 320. Each attribute array contains
`an entry for each different description of an attribute type.
`Each printer model defined by the device data file has a
`corresponding entry in the MODELDATA attribute array.
`The MODELDATA structure 321A contains model specific
`20 data including an array of multiple attributes and an array of
`single attributes that describe the printer model. Each entry
`in the multiple attribute array is an offset within the heap 330
`of a list of indexes for the associated multiple attribute data
`structures. Each entry in the single attribute array is an index
`into the corresponding attribute array.
`UNIVERSAL DRIVER
`The universal driver provides an implementation for each
`of the device driver functions. The universal driver functions
`control the interfacing with the destination device in accor-
`30 dance with the printer characterization data, passed param(cid:173)
`eters, and device state. In a preferred embodiment the
`Enable function of the universal driver receives a reference
`to the printer characterization data of a minidriver. The
`Enable function initializes a device data structure which
`35 contains data derived from the printer characterization data
`stored in a format for efficient access and contains the
`current state of the printer. The device data structure is stored
`as part of the device context. Each of the other functions of
`the universal driver accesses the device data structure when
`40 outputting data to the printer.
`FIG. 7 is a flow diagram of the Enable function of the
`universal driver. This function is invoked by each minidriver
`when an application wishes to create a new printing surface
`or context. This function initializes the device data structure.
`In step 701, the function initializes the device mode data
`based on information provided by the invoking minidriver.
`If the invoking minidriver does not provide certain infor(cid:173)
`mation, then the function retrieves default information spe(cid:173)
`cific to the printer and initializes the device mode data
`50 accordingly. In step 702, the function initializes a helper
`function dispatch table. The helper function dispatch table
`contains an array of pointers to functions for drawing into
`banding bitmaps. A banding bitmap represents a portion of
`the printing surface. If a bit in the bitmap is set, then the
`55 corresponding dot on the printer is printed. Different sets of
`helper functions may be selected based on the number of
`colors in the printer. The Enable function initializes the
`helper function table with the appropriate helper functions.
`The universal driver uses the function pointers stored in the
`60 helper function table to draw to the banding bitmap. In step
`703, the function initializes resolution information. For
`example, the resolution data includes the number of pels per
`inch. In step 704, the function initializes the paper format
`information of the device data structure. The information is
`initialized based on the paper size, model data, resolution,
`paper source, and device mode data in the printer charac(cid:173)
`terization data. In step 705, the function initializes the
`
`45
`
`65
`
`Petitioners Microsoft Corporation and HP Inc. - Ex. 1010, p. 13
`
`

`

`5,604,843
`
`7
`call-back table. The universal driver invokes a call-back
`function of the minidriver to perform minidriver specific
`processing. In step 706, the function determines the amount
`of memory available in the printer based on the model data.
`This information is used to avoid out-of-memory errors
`when downloading fonts and graphic bitmaps to printers. In
`step 707, the function determines the spot diameter (a
`measurement of how closely the printed dots overlap each
`other) based on the information in the resolution data. The
`spot diameter is used to adjust the intensity of the output
`based on the spot size of the ink. In step 708, the function
`builds a table of all the printer fonts available based on the
`information in the model data and the printer font metric
`resource provided by the minidriver. This data is used by the
`function RealizeObject to convert a logical font request to a
`physical font. This conversion is called font mapping. The
`use of a table font obviates a need to access the disk or
`minidriver to perform font mapping. The function also
`initializes commands needed to select and deselect each
`font. In step 709, the function retrieves the width and height 20
`of the principal font and stores it in the device data structure.
`In step 710, the function determines whether the printer
`supports a rectangle fill capability and initializes the device
`data structure accordingly. In step 711, the function estab(cid:173)
`lishes a priority queue for printers that must be accessed 25
`serially, such as dot matrix printers. This queue is used to
`sort text requests. In step 712, the function initializes a
`command table. The command table is an array of offsets to
`command descriptors. These command descriptors specify
`the commands that are to be sent to the printer to enable a 30
`certain feature. For example, a certain command descriptor
`would specify the codes which cause the printer to enable
`underlining, and another command descriptor would cause
`the printer to disable underlining. In step 713, the function
`allocates memory for font download information. The func- 35
`tion then returns.
`Each of the other device driver functions that are imple(cid:173)
`mented by the universal driver performs the behavior of the
`function using the data supplied by the invoking minidriver
`and stored in the device data structure.
`DEVICE DATA STRUCTURE OVERVIEW
`FIG. 6 is a block diagram illustrating the device data
`structure. The device data structure is described below in
`detail in the section entitled "Device Data Structure Detail."
`The device data structure contains information necessary to
`control the output of information to a designated printer. The
`device data structure includes the following information.
`Type of device data 601 indicates the type of printer (e.g.,
`laser). General flags 602 contain various flags relating to
`paper source, rectangle fill, and text capabilities. The master
`unit data 603 contains the least common multiplier of all
`resolutions and printer command units. The copy data 604
`contains information relating to number of copies of a
`document requested and number of copies allowed. Font
`data 606 includes the count of fonts available, default font,
`and a reference to a font map. The handle of device context
`data 606 contains a reference to the device context associ(cid:173)
`ated with the device data structure. The handle of the
`minidriver data 607 contains a reference to the generic
`printer characterization data for this data structure. The
`paper format data 608 contains information relating to the
`format of the paper such as physical paper size, printable
`area, margins, and current paper bin. The band format data
`609 contains information relating to the banding process.
`The banding information includes the height and the width
`of the band. The bitmap data 610 contains a buffer used by
`the universal driver to generate a shadow bitmap based on
`
`8
`the amount of memory available in the system and the
`resolution data. The shadow bitmap is downloaded to the
`printer to effect output. The printer state data 611 contains
`the current state of the printer, such as, current cursor
`5 position, last font selected, and last color selected. The
`clipping/bounding rectangle data 612 defines the clipping
`and bounding rectangles. The resolution data 613 defines the
`resolution of the printer. The call-back functions table 6

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