throbber
I8
`
`* pu1RetVal,
`** ppuserfixceptionsl;
`
`[out] CORBA_TypeCodeExceptions ** ppflsernxceptions);
`KRESULT member_eount(
`* pu1R8tVa1,
`[out] unsigned long
`[out] CORBA_TypeCodeExeeptions ** ppflserkxceptionsl;
`HRESULT member_name(
`ullndexl
`[in]
`unsigned long
`* pszRetVa1,
`[out] Identifier
`[out] CORBA_TypeCodeBxceptions ** ppvaerflxceptions );
`HRESULT member_type(
`u1Index,
`[in]
`unsigned long
`** ppRBtVa1.
`[out]
`ICORBA_TypeCode
`[out] CORBA_TypeCodeExceptions ** ppUserExeeptions );
`HRBSULT member_1abel(
`u1Index,
`[in]
`unsigned long
`‘* ppRetVa1.
`[out]
`ICORBA_Any
`[out] CORBA_TypeCodeExceptions ** ppUserExeeptions )7
`HRESULT discriminator_type(
`** ppketval,
`[out]
`ICORBA_TypeCode
`[out] CoRBA_'ry-pecodexxceptions ** ppUserExceptions );
`HRESULT default_index(
`* plRetVal,
`[out]
`long
`[out] CORBA_TypeCodeExceptions ** ppUserExceptions);
`HRESULT length(
`[out] unsigned long
`[out] CORBA_TypeCodeExeeptions
`_ HRESULT eontent_type( -
`** ppRetVal,
`[out]
`ICORBA_TypeCode
`[out] CORBA_TypeCodeExceptions ** ppflserxxceptionsl;
`HRESULT param_count(
`* plRetVa1,
`[out]
`long
`[out] CORBA_TypeCodeExeeptions ** ppUserExceptions);
`HRESULT parameter(
`[in]
`long
`[out]
`ICORBA_Any
`[out] CORBA_TypeCodeExeeptions
`
`);
`
`llndex,
`** ppRetVa1,
`** ppflserfixeeptions
`
`Note — Use of the methods param_count ()
`
`and parameter () is deprecated.
`
`18.2.12.2 Mappingfor contextpseudo-object
`
`This specification provides no mapping for CORBA’s Context pseudo-object into
`COM. Implementations that choose to provide support for Context could do so in the
`following way. Context pseudo-objects should be accessed through the ICORBA
`Context interface. This would allow clients (if they are aware that the object they
`are dealing with is a CORBA object) to set a single Context pseudo-object to be used
`for all subsequent invocations on the CORBA object from the client process space until
`such time as the ICORBA_Context interface is released.
`
`// Microsoft IDL and ODL
`typedef struct:
`
`December 200l
`
`CORBA, V2.6: CORBA to COM Data Type Mapping
`
`18-31
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex.1102,p.994of1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 994 of 1442
`
`

`
`18
`
`{ u
`
`nsigned long cbnaxsize;
`unsigned long cbLengthUaed;
`[size_is(cbMaxSize) , 1ength_is(cbLengthUsed) , unique]
`LPTSTR * pszvalue;
`
`} Context:PropertyVa1ue;
`
`[ object, uuid(74105F51-3C68-11cf«9588-AAOO04004A09).
`pointer_defau1t(unique) 1
`interface ICORBA_Context:
`{
`
`Itlnknown
`
`HRESULT GetProperty(
`
`I-{RESULT SetProperty(
`
`[in] LPTSTR Name,
`[out] ContextPropertyVa1ue
`** pvalues );
`[in] LPTSTR,
`[in] ContextPropertyVa1ue
`* pvaluesl ;
`
`};
`
`If a COM client application knows it is using a CORBA object, the client application
`can use QueryInter face to obtain an interface pointer to the
`
`ICORBA_Context interface. Obtaining the interface pointer results in a CORBA
`context pseudo-object being created in the View, which is used with any CORBA
`request operation that requires a reference to a CORBA context object. The context
`pseudo-object should be destroyed when the reference count on the
`ICORBA_Context interface reaches zero.
`
`This interface should only be generated for CORBA interfaces that have operations
`defined with the context clause.
`
`18.2. 12. 3 Mappingforprincipalpseudo-object
`
`The CORBA Principal is not currently mapped into COM. As both the COM and
`CORBA security mechanisms solidify, security interworking will need to be defined
`between the two object models.
`
`18.2.13 Interface Repository Mapping
`
`Name spaces within the CORBA interface repository are conceptually similar to COM
`type libraries. However, the CORBA interface repository looks, to the client, to be one
`unified service. Type libraries, on the other hand, are each stored in a separate file.
`Clients do not have a unified, hierarchical interface to type libraries.
`
`Table l8-6 defines the mapping between equivalent CORBA and COM interface
`description concepts. Where there is no equivalent, the field is left bla.nk.
`
`18-32
`
`Common Object Request Brrtker/irclzilecture (CORBA), v2.6
`
`December 2001
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 995 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 995 of 1442
`
`

`
`
`
`
`
`I8
`
`Table 18-6 CORBA Interface Repository to OLE Type Library Mappings
`
`TypeCode
`
`
`
`TYPEDESC
`
`
`
`_ M
`
`oduleDef
`
`lTypeLib
`
`lnterfaceDef
`
`lTypelnfo
`
`
`
`
`
`
`
`
`
`
`
`
`— U
`
`sing this mapping, implementations must provide the ability to call
`object: :get_interface on CORBA object references to COM objects to
`retrieve an lnterfaceDef. When CORBA objects are accessed from COM,
`implementations may provide the ability to retrieve the lTypelnfo for a CORBA object
`interface using the lProvideC1asslnfo COM interface.
`
`
`
`
`18.3 COMt0 CORBA Data Type_Mapping
`
`18.3.1 Mappingfor Basic Data Types
`
`The basic data types available in Microsoft IDL and ODL map to the corresponding
`data types available in OMG lDL as shown in Table 18-7.
`
`Table 18-7 Microsoft IDL and ODL to OMG IDL Intrinsic Data Type Mappings
`
`Microsoft
`IDL
`
`Microsoft
`ODL
`
`OMG IDL
`
` Signed integer with a range of -23'...23l -l
`Unsigned integer with a range of 0...216 -1
`
`%%
`
`
`
`
`
`
`
`
`
`
`
`MM
`
`December 2001
`
`CORBA, V2.6: COM In CORBA Data 7:vpe Mapping
`
`18-33
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 996 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 996 of 1442
`
`

`
`18
`
`Table 18-7 Microsoft IDL and ODL to OMG IDL Intrinsic Data Type Mappings (Continued)
`
`
`
`8-bit quantity limited to the ISO Latin-l character
`set
`
`8-bit opaque data type, guaranteed to not undergo
`any conversion during transfer between systems
`
`
`
`
`
`18.3.2 Mapping for Constants
`
`The mapping of the Microsoft IDL keyword const to OMG IDL const is almost exactly
`the same. The following Microsoft IDL definitions for constants:
`
`// Microsoft IDL
`.;
`const short S
`const long L = ...;
`const unsigned short Us =
`const unsigned long UL = ...;
`const float F = ...;
`const double D = ...;
`const char C = ..
`;
`const boolean B = ...;
`const string STR = “...";
`
`7
`
`map to the following OMG IDL definitions for constants.
`
`ll OMG IDL
`const short S =
`const long L = ...;
`const unsigned short US = ...;
`const unsigned long UL = ...;
`const float F = ...;
`const double D_=
`const char C = ...;
`const boolean B = ...;
`const string STR = “...";
`
`18.3.3 Mapping for Enumerators
`
`COM enumerations can have enumerators explicitly tagged with values. When COM
`enumerations are mapped into CORBA, the enumerators are presented in CORBA in
`increasing order according to their tagged values.
`
`The Microsoft IDL or ODL specification:
`
`18-34
`
`Common Object Request Broker A rch itecture (CORBA), v2.6
`
`December 200]
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 997 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 997 of 1442
`
`

`
`18
`
`IDL or ODL
`// Microsoft
`typedef
`[v1_enum]
`enum t:agA_or_B_orC {
`A_o r_B_o r_C ;
`’
`
`A = 0. B. C }
`
`would be represented as the following statements in OMG lDL:
`
`/I OMG IDL
`
`enum A_or_B_or_C (B, C, A};
`
`In this manner, the precedence relationship is maintained in the OMG system such that
`B is less than C is less than A.
`
`OMG lDL does not support enumerators defined with explicit tagged values. The
`CORBA view of a COM object, therefore, is responsible for maintaining the correct
`tagged value of the mapped enumerators as they cross the view.
`
`18.3.4 Mapping for String Types
`
`COM support for strings includes the concepts of bounded and unbounded strings.
`Bounded strings are defined as strings that have a maximum length specified, whereas
`unbounded strings do not have a maximum length specified. COM also supports
`Unicode strings where the characters are wider than 8 bits. As in OMG lDL, non-
`Unicode strings in COM are NULL-terminated. The mapping of COM definitions for
`bounded and unbounded strings differs from that specified in OMG lDL.
`
`Table 18-8 illustrates how to map the string data types in OMG lDL to their
`corresponding data types in both Microsoft lDL and ODL.
`
`Table 18-8 Microsoft IDL/ODL to OMG IDL String Mappings
`
`'
`
`Microsoft IDL
`
`Microsoft ODL
`
`OMGIDL
`
`
`LPWSTR
`LPWSTR
`Null-terminated Unicode string
`
`Null-terminated 8-bitcharacterstring
`
`Null-terminated 16-bit character string
`
`
`
`
`
`LPSTR,
`
`BSTR
`
`
`
`LPSTR
`
`[string,unique]
`char *
`
`BSTR
`
`[string,unique]
`char *
`
`
`
`lf a COM Server returns a BSTR containing embedded nulls to a CORBA client, a
`E_DATA_CONVERSlON exception will be raised.
`
`18.3.4.1 Mappingfor unbounded string types
`
`The definition of an unbounded string in Microsoft lDL and ODL denotes the
`unbounded string as a stringified unique pointer to a character. The following
`Microsoft lDL statement
`
`December 2001
`
`CORE/1. v2.6: COM In CORBA Data Yjvpe Mapping
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 998 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 998 of 1442
`
`

`
`I8
`
`// Microsoft IDL
`typedef [string, unique] char * UNBOUNDED_STRING;
`
`is mapped to the following syntax in OMG IDL.
`
`ll OMG IDL
`
`typedef string UNBOUNDED_STR|NG;
`
`In other words, a value of type UNBOUNDED__STR|NG is a non-NULL pointer to a
`one-dimensional null-terminated character array whose extent and number of valid
`elements can vary at run-time.
`
`18.3.4.2 Mappingfor bounded string types
`
`Bounded strings have a slightly different mapping between OMG IDL and Microsoft
`IDL. Bounded strings are expressed in Microsoft IDL as a “stringified nonconformant
`array.” The following Microsoft IDL and ODL definition for a bounded string:
`
`// Microsoft IDL and ODL
`const long N = ...;
`typedef Istring, unique] char
`
`maps to the following syntax in OMG lDL.
`
`/I OMG IDL
`
`_
`const long N = ...;
`typedef string<N> BOUNDED_STR|NG;
`
`(* BOUNDED_S'1‘RING)
`
`[N];
`
`ln other words, the encoding for a value of type BOUNDED_STR|NG is that of a
`null-terminated array of characters whose extent is known at compile time, and whose
`number of valid characters can vary at run-time.
`
`18.3.4.3 Mappingfor Unicode Unbounded String Types
`
`The mapping for a Unicode unbounded string type in Microsoft IDL or ODL is no
`different from that used for ANSI string types. The following Microsoft IDL and ODL
`statement
`
`// Microsoft IDL arid ODL
`typedef [string, unique] LPWSTR
`UNBOUNDED_UNICODE_S TRING;
`
`is mapped to the following syntax in OMG lDL.
`
`II OMG IDL
`
`typedef wstring UNBOUNDED_UN|CODE_STR|NG;
`
`It is the responsibility of the mapping implementation to perform the conversions
`between ANSI and Unicode formats when dealing with strings.
`
`18-36
`
`Common Object Request BmkerArchiIecture (CORBA), v2.6
`
`December 200]
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 999 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 999 of 1442
`
`

`
`18
`
`18.3.4.4 Mappingfor unicode bound string types
`
`The mapping for a Unicode bounded string type in Microsoft lDL or ODL is no
`different from that used for ANSI string types. The following Microsoft IDL and ODL
`statements
`
`// Microsoft IDL and ODL
`const long N = ...;
`typedef
`lstring, unique] wchar t(*
`BOUNDED_UNICODE_STRING)
`[N];
`
`map to the following syntax in OMG lDL.
`
`/I OMG IDL
`
`const long N = ...;
`typedef wstring<N> BOUNDED_UNlCODE_STRlNG;
`
`It is the responsibility of the mapping implementation to perform the conversions
`between AN S1 and Unicode formats when dealing with strings.
`
`18.3.5 Mapping for Structure Ijzpes
`
`Support for structures in Microsoft lDL and ODL maps bidirectionally to OMG IDL.
`Each structure member is mapped according to the mapping rules for that data type.
`The structure definition in Microsoft lDL or ODL is as follows.
`
`// Microsoft IDL and ODL
`typedef .
`.
`. T0;
`typedef .
`. . T1;
`
`. .TN;
`typedef .
`typedef struct
`
`{T
`
`0 m0;
`T1 ml;
`
`TN m.N;
`
`} STRUCTURE;
`
`The structure has an equivalent mapping in OMG IDL, as follows:
`
`December 2001
`
`CORBA. V2.6.‘ COM m comm Data rype Mapping
`
`13-37
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1000 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1000 of 1442
`
`

`
`18
`
`// OMG IDL
`
`typedef
`typedef
`
`T0
`T1;
`
`TN;
`t-yiipedef
`struct STRUCTURE
`
`{ T
`
`0 m0;
`T1 ml;
`
`Tn mm;
`};
`
`18.3.6 Mapping for Union Types
`
`ODL unions are not discriminated unions and must be custom marshaled in any
`interfaces that use them. For this reason, this specification does not provide any
`mapping for ODL unions to CORBA unions.
`
`MIDL unions, while always discriminated, are not required to be encapsulated. The
`discriminator for a nonencapsulated MIDL union could, for example, be another
`argument to the operation. The discriminants for MIDI. unions are not required to be
`constant expressions.
`
`18.3.6.1 Mappingfor Encapsulated Unions
`
`When mapping from Microsoft IDL to OMG IDL, Microsoft IDL encapsulated unions
`having constant discriminators are mapped to OMG IDL unions as shown next.
`
`// Microsoft IDL
`typedef enum
`
`{d
`
`char,
`dshort,
`dLong,
`dF1oat,
`dnouble
`
`} UNION_DI SCRIMINATOR;
`
`typedef union switch (UNION_DISCRIMINA'1‘OR _d)
`
`{c
`
`ase dChar: char c;
`case dshort: short 3;
`case dLong:
`long 1;
`case dF1oat: float f;
`case dDoub1e: double d;
`
`default: byte v[8];
`}UNION_OF_CHAR_AND_ARITHME'1'IC ;
`
`The OMG IDL definition is as follows.
`
`13-33
`
`Common Object Request BmkerArchiIecture (CORBA). V2.6
`
`December 2001
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex.1102,p.1001of1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1001 of 1442
`
`

`
`I8
`
`ll OMG IDL
`
`enum UN|0N_D|SCRlM|NATOR
`
`( d
`
`chan
`dshort,
`dLong,
`dF|oat,
`dDoub|e
`
`};
`
`union UNION_OF_CHAR_AND_ARlTHMETlC
`switch(UN|ON_D|SCR|MINATOR)
`
`{ c
`
`ase dChar: char c;
`case dShort: short s;
`case dLong: long I;
`case dFloat:. float f;
`case dDouble:. double d;
`default: octet v[8];
`
`};
`
`18.3.6.2 Mappingfor nonencapsulated unions
`
`Microsoft IDL nonencapsulated unions and Microsoft IDL encapsulated unions with
`nonconstant discriminators are mapped to an any in OMG IDL. The type of the any is
`determined at run-time during conversion of the Microsofi IDL union.
`
`// Microsoft IDL
`
`[switch_type( short )1 union
`typedef
`tagUNIoN_oF_cHAR_ANn_ARI'rmn:'r1c
`
`{[
`
`case(0)] char c;
`[case(1)] short 3;
`[case(2)]
`long 1;
`[case(3)] float f;
`[case(4)] double d;
`[default] byte v[8];
`
`} UNION_0F_CHAR_AND_ARI'1'H.ME'1‘IC;
`
`The corresponding OMG IDL syntax is as follows.
`
`/I OMG IDL
`
`typedef any UN|ON_0F_CHAR_AND_AR|THMET|C;
`
`December 2001
`
`CORBA, v2.6: COM to CORBA Data Type Mapping
`
`18-39
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex.1102,p.1002of1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1002 of 1442
`
`

`
`18
`
`18.3. 7 Mappingfor Array Types
`
`COM supports fixed-length arrays, just as in CORBA. As in the mapping from OMG
`IDL to Microsoft lDL, the arrays can be mapped bidirectionally. The type of the array
`elements is mapped according to the data type mapping rules. The following
`statements in Microsoft IDL and ODL describe a nonconformant and nonvarying array
`of U.
`
`// Microsoft IDL for T
`const long N =. ...;
`typedef
`. .
`. U;
`
`typedef U ARRAY_OF_N [N];
`typedef float D’l'.‘YPE[O..l0];
`
`// Equivalent to [11]
`
`The value N can be of any integral type, and const means (as in OMG lDL) that the
`value of N is fixed and known at compilation time. The generalization to
`multidimensional arrays follows the obvious trivial mapping of syntax.
`
`The corresponding OMG IDL syntax is as follows.
`
`// OMG IDL for T
`
`const long N = ...;
`typedef
`T;
`typedef T ARRAY_OF_N[N];
`typedef float DTYPE[11];
`
`18.3.7.1
`
`Mappingfor nonfixed arrays
`
`ln addition to fixed length arrays, as well as conformant arrays, COM supports varying
`arrays, and conformant varying arrays. These are arrays whose bounds and size can be
`determined at run-time. Nonfixed length arrays in Microsofi lDL and ODL are mapped
`to sequence in OMG IDL, as shown in the following-statements.
`
`// Microsoft IDL
`typedef short BTYPEU;
`typedef char C'I‘YPE["'] ;
`
`The corresponding OMG IDL syntax is as follows.
`
`ll OMG IDL
`
`typedef sequence<short> BTYPE;
`typedef sequence<char> CTYPE;
`
`// Equivalent
`
`to [i];
`
`18.3.7.2
`
`Mappingfor SAFEARRAY
`
`Microsoft ODL also defines SAFEARRAY as a variable length, variable dimension
`array. Both the number of dimensions and the bounds of the dimensions are determined
`at run-time. Only the element type is predefined. A SAFEARRAY in Microsoft ODL is
`mapped to a CORBA sequence, as shown in the following statements.
`
`18-40
`
`Cnmmnn Object Request Broker A rchitecture (CORBA). v2. 6
`
`December 2001
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1003 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1003 of 1442
`
`

`
`I8
`
`// Microsoft ODL
`SAFEARRAY (el ement - type)
`
`* Arrayname ;
`
`ll OMG IDL
`
`typedef sequence<eIement-type> SequenceName;
`
`If a COM server returns a multidimensional SAFEARRAY to a CORBA client, an
`
`E_DATA_CONVERSlON exception will be raised.
`
`18.3.8 Mapping for VARIANT
`
`The COM VARIANT provides semantically similar functionality to the CORBA any.
`However, its allowable set of data types are currently limited to the data types
`_
`supported by Automation. VARTYPE is an enumeration type used in the VARIANT
`structure. The structure member vt is defined using the data type VARTYPE. Its value
`acts as the discriminator for the embedded union and governs the interpretation of the
`union. The list of valid values for the data type VARTYPE are listed in Table 18-9,
`along with a description of how to use them to represent the OMG IDL any data type.
`
`Table 18-9 Valid OLE VARIANT Data Types
`
`VT_EMPTY
`
`No value was specified. If an argument is left blank, you should not
`
`return VT_EMPTY for the argument. Instead, you should return the
`VT_ERROR value: DISP_E_MEMBERNOTl-“OUND.
`
`
`
`g
`
`
`
`
`
`
`
`VT_EMPTY |
`VT_BYREF
`
`Illegal.
`
`VT_Ull
`
`An unsigned l-byte character is stored in bVaI.
`
`VT_Ull I
`VT_BYREF
`
`A reference to an unsigned l-byte character was passed; a pointer to
`the value is in pb Val.
`
`VT_l2
`
`‘A 2-byte integer value is stored in iVaI.
`
`I VT 12 I VT_BYREF
`
`A reference to a 2-byte integer was passed a pointer to the value IS
`in [)1 Val
`
`VT_I4
`
`A 4-byte integer value is stored in [Val
`
`VT_l4 | VT BYREF
`
`A reference to a 4 byte integer was passed; a pointer to the value is
`in pl Val
`
`VT R4
`
`An IEEE 4-byte real value IS stored in fltVal
`
`VT_R4 |
`VT_BYREF
`
`VT_R8 |
`VT_BYREF
`
`
`
`A reference to an IEEE 4 byte real was passed; a pointer to the
`value is in pflt Val
`An 8-byte IEEE real value IS stored in dbIVal
`A reference to an 8-byte IEEE real was passed, a pointer to its value
`is in pdbIVaI.
`
`
`
`
`
`December 2001
`
`CORBA. V2.6.‘ COM In CORBA Data Type Mapping
`
`18-41
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1004 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1004 of 1442
`
`

`
`I8
`
`Table 18-9 Valid OLE VARIANT Data Types (Continued)
`
`
`
`A currency value was specified. A currency number is stored as an
`8-byte, two’s complement integer, scaled by 10,000 to give a fixed-
`point number with 15 digits to the left of the decimal point and 4
`digits to the right. The value is in cyVal.
`
`
`
`A reference to a currency value was passed; a pointer to the value is
`in pcyVa1.
`
`A string was passed; it is stored in bstrVal. This pointer must be
`obtained and freed via the BSTR functions.
`
`A reference to a string was passed. A BSTR‘, which points to a
`BSTR, is in pbstrVaI. The referenced pointer must be obtained or
`freed via the BSTR functions.
`
`A propagating NULL value was specified. This should not be
`confused with the NULL pointer. The NULL value is used for tri-
`state logic as with SQL.
`
`lllegal.
`
`
`
`VT_CY
`
`VT_CY |
`VT_BYREF
`
`VT_BSTR
`
`VT_BSTR |
`VT_BYREF
`
`VT_NULL
`
`VT_NULL [
`V'1‘_BYREF
`
`\/T_ERROR'
`
`
`
`
`
`
`VT_ERROR I
`VT_BYREF
`
`VT_BOOL
`
`
`
`
`
`
`
`
`
`
`
`An SCODE was specified. The type of error is specified in code.
`Generally, operations on error values should raise an exception or
`propagate the error to the return value, as appropriate.
`
`A reference to an SCODE was passed. A pointer to the value is in
`pscode.
`.
`‘
`
`' A Boolean (True/False) value was specified. A value of 0xFFFF (all
`bits one) indicates True; a value of 0 (all bits zero) indicates False.
`No other values are legal.
`
`
`
`
`
`VT_BOOL 1
`VT_BYREF
`
`A reference to a Boolean value. A pointer to the Boolean value is in
`pbool.
`
`
`VT_DATE
`
`
`
`
`A value denoting a date and time was specified. Dates are
`represented as double-precision numbers, where midnight, January
`1, 1900 is 2.0, January 2, 1900 is 3.0, and so on. The value is passed
`in date.
`
`
`
`
`This is the same numbering system used by most spreadsheet
`programs, although some incorrectly believe that February 29, 1900
`
`existed, and thus set January 1, 1900 to 1.0. The date can be
`convened to and from an MS-DOS representation using
`
`VariantTimcToDosDateTime.
`
`A reference to a date was passed. A pointer to the value is in pdate.
`
`
`
`VT_DATE I
`VT_BYREF
`
`l8—42
`
`Common Object Request Broker /1 rch [lecture (CORE/1). v2. 6
`
`December 200]
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1005 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1005 of 1442
`
`

`
`18
`
`Table 18-9 Valid OLE VARIANT Data Types (Continued)
`
`VT_DlSPATCl-l
`
`A pointer to an object was specified. The pointer is in pdispVaI. This
`object is only known to implement lDispatch; the object can be
`queried as to whether it supports any other desired interface by
`calling Querylnterface on the object. Objects that do not implement
`lDispatch should be passed using VT_UNl(NOWN.
`
`VT_DlSPATCH |
`VT_BYREF
`
`A pointer to a pointer to an object was specified. The pointer to the
`object is stored in the location referred to by ppdisp Val.
`
`VT_VARlANT
`
`lllegal. VARIANTARGS must be passed by reference.
`
`VT_VARlANT I
`VT_BYREF
`
`A pointer to another VARJANTARG is passed in pvarVaI. This
`referenced VARIANTARG will never have the VT_BYREF bit set
`in vt, so only one level of indirection can ever be present. This value
`can be used to support languages that allow functions to change the
`types of variables passed by reference.
`
`VT_UNl(NOWN
`
`A pointer to an object that implements the lUnknown interface is
`passed in punkVal.
`
`VT_UNl(NOWN |
`VT_BYREF
`
`A pointer to a pointer to the lUnknown interface is passed in
`ppunkVaI. The pointer to the interface is stored in the location
`referred to by ppunkVa1.
`
`VT_ARRAY |
`<anything>
`
`An array of data type <anything> was passed. (VT_EMPTY and
`VT_NULL are illegal types to combine with VT_ARRAY.) The
`pointer in pByrejVaI points to an array descriptor, which describes
`the dimensions, size, and in-memory location of the array. The array
`descriptor is never accessed directly, but instead is readand
`modified using functions.
`
`A COM VARIANT is mapped to the CORBA any without loss. lf at run-time a
`CORBA client passes an inconvertible any to a COM server, a
`DATA_CONVE RSION exception is raised.
`
`18.3.9 Mappingfor Pointers
`
`MIDL supports three types of pointers:
`
`' Reference pointer; a non-null pointer to a single item. The pointer cannot represent
`a data stmcture with cycles or aliasing (two pointers to the same address).
`
`Unique pointer; a (possibly null) pointer to a single item. The pointer cannot
`represent a data structure with cycles or aliasing.
`
`Full pointer; a (possibly null) pointer to a single item. Full pointers can be used for
`data structures, which form cycles or have aliases.
`
`December 2001
`
`CORBA, v2.6: COM to COREA Data Type Mapping
`
`18.43
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1006 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1006 of 1442
`
`

`
`I8
`
`A reference pointer is mapped to a CORBA sequence containing one element. Unique
`pointers and full pointers with no aliases or cycles are mapped to a CORBA sequence
`containing zero or one elements. If at run-time a COM client passes a full pointer
`containing aliases or cycles to a CORBA server, E_DATA_CONVERSlON is returned
`to the COM client. lf a COM server attempts to return a full pointer containing aliases
`or cycles to a CORBA client, a DATA_CONVERS|ON exception is raised.
`
`18.3.10 Interface Mapping
`
`COM is a binary standard based upon standard machine calling conventions. Although
`interfaces can be expressed in Microsoft lDL, Microsoft ODL, or C++, the following
`interface mappings between COM and CORBA will use Microsoft ODL as the
`language of expression for COM constructs.
`
`COM interface pointers bidirectionally map to CORBA Object references with the
`appropriate mapping of Microsoft lDL and ODL interfaces to OMG lDL interfaces.
`
`18.3.I0.1
`
`Mappingfor Interface Identifiers
`
`Interface identifiers are used in both CORBA and COM to uniquely identify interfaces.
`These allow the client code to retrieve information about, or to inquire about other
`interfaces of an object.
`
`COM identifies interfaces using a structure similar to the DCE UUID (in fact, identical
`to a DCE UUlD on Win32) known as an llD. As with CORBA, COM specifies that the
`textual names of interfaces are only for convenience and need not be globally unique.
`
`The COM interface identifier (llD and CLSID) are bidirectionally mapped to the
`CORBA Repositoryld.
`
`I8.3.10.2
`
`Mappingfor COM Errors
`
`COM will provide error information to clients only if an operation uses a return result
`of type HRESULT. The COM HRESULT, if zero, indicates success. The HRESULT, if
`nonzero, can be converted into an SCODE (the SCODE is explicitly specified as being
`the same as the HRESULT on Win32). The SCODE can then be examined to
`determine whether the call succeeded or failed. The error or success code, also
`contained within the SCODE, is composed of a “facility” major code (13 bits on
`Win32 and 4 bits on Win16) and a 16-bit minor code.
`
`COM object developers are expected to use one of the predefined SCODE values, or
`use the facility FAClLlTY_lTF and an interface-specific minor code. SCODE values
`can indicate either success codes or error codes. A typical use is to overload the
`SCODE with a boolean value, using S_OK and S_FALSE success codes to indicate a
`true or false return. If the COM server returns S_OK or S_FALSE, a CORBA
`exception will not be raised and the value of the SCODE will be mapped as the return
`value. This is because COM operations, which are defined to return an HRESULT, are
`mapped to CORBA as returning an HRESULT.
`
`18-44
`
`Commnn Object Request Bmker A rcli ilecture (CORBA). v2. 6
`
`December 2001
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1007 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1007 of 1442
`
`

`
`C18
`
`Unlike CORBA, COM provides no standard way to return user-defined exception data
`to the client. Also, there is no standard mechanism in COM to specify the completion
`status of an invocation. In addition, it is not possible to predeterrnine what set of errors
`a COM interface might return. Although the set of success codes that can be returned
`from a COM operation must be fixed when the operation is defined, there is currently
`no machine-readable way to discover what the set of valid success codes are.
`
`COM exceptions have a straightforward mapping into CORBA. COM system error
`codes are mapped to the CORBA standard exceptions. COM user-defined error codes
`are mapped to CORBA user exceptions.
`
`COM system error codes are defined with the FAClLlTY_NULL and FAClLlTY_RPC
`facility codes. All FAClLlTY_NULL and FAClLlTY_RPC COM errors are mapped to
`CORBA standard exceptions. Table 18-10 lists the mapping from COM
`FAClLlTY_NULL exceptions to CORBA standard exceptions.
`
`Table 18-10Mapping from COM FACILITY_NULL Error Codes to
`CORBA Standard (System) Exceptions
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`a
`
`
`
`
`
`Table l8-ll lists the mapping from COM FAClLlTY_RPC exceptions to CORBA
`standard exceptions. All FAClLlTY_RPC exceptions not listed in this table are mapped
`to the new CORBA standard exception COM.
`
`Table 18-] 1 Mapping from COM FAClLlTY_RPC Error Codes to CORBA Standard
`(System) Exceptions
`
`
`
`
`
`
`
`
`
`December 200]
`
`CORBA. V2.6: COM In CORBA Data Tjvpe Mapping
`
`18.45
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1008 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1008 of 1442
`
`

`
`18
`
`Table 18-11 Mapping fiom COM FAClLI'I'Y_RPC Error Codes to CORBA Standard
`(System) Exceptions (Continued)
`
`
`
`
`
`
`
`COM SCODES, other than those previously listed, are mapped into CORBA user
`exceptions and will require the use of the raises clause in OMG IDL. Since the OMG
`IDL mapping from the Microsoft IDL and ODL is likely to be generated, this is not a
`burden to the average programmer. The following OMG lDL illustrates such a user
`exception.
`
`// OMG IDL
`
`exception COM_ERROREX
`(
`.
`
`long hresult;
`Any info;
`'
`
`l:
`
`The COM_ERROREX extension is designed to allow exposure of exceptions passed
`using the per-thread ErrorObjcct. The Any contained in the COM_ERROREX is
`defined to hold a CORBA object reference that supports the OMG IDL mapping for
`the lError|nfo interface.
`‘
`
`l8-46
`
`Common Object Request Broker Architecture (CORBA), V2. 6
`
`December 2001
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1009 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1009 of 1442
`
`

`
`I8
`
`18. 3. 10. 3 Mapping 0fNested Data Types
`
`Microsoft MIDL (and ODL) consider all definitions to be at global (or library) scope
`regardless of position in the file. This can lead to name collisions in datatypes across
`interfaces. Operations or types later in the file can refer to a datatype without fully
`qualifying the name even if the type is nested within another interface.
`
`For purposes of mapping MlDL/ODL to OMG lDL, we treat nested datatypes as if
`they had been prepended with the name of the scoping level. Thus:
`
`interface IA :
`
`IUnknown
`
`{
`
`typedef enum {ONE, TWO, THREE} Count;
`HRESULT f( [in] Count val);
`
`} i
`
`s mapped as if it were defined as:
`
`typedef enum {A_ONE, A_TWO, A_THREE} A_Count;
`interface IA :
`Iunknown
`
`HRESULT f( [in] A_Count val);
`
`{ }
`
`18.3. 10. 4 Mapping 0fNames
`
`Microsoft MIDI. and ODL support prefixing types/names with leading underscores.
`When mapping from Microsoft MIDL or ODL to OMG lDL, the leading underscores .
`are re moved.
`
`Note — This simple rule is not sufficient to avoid all name collisions (such as MIDL
`types that clash with OMG lDL reserved names or situations where two operation
`names differ only in the leading underscore). However, this rule will cover many
`common cases and leads to a more natural mapping than prepending a character before
`the underscore.
`'
`
`18. 3. 10. 5 Mappingfor Operations
`
`Operations defined for an interface are defined in Microsoft lDL and ODL within
`interface definitions. The definition of an operation constitutes the operations
`signature. An operation signature consists of the operation’s name, parameters (if any),
`and return value. Unlike OMG lDL, Microsoft lDL and ODL does not allow the
`operation definition to indicate the error information that can be returned.
`
`Microsoft IDL and ODL parameter directional attributes (|in|, loutl, lin, out:|) map
`directly to OMG lDL (in, out, inout). Operation request parameters are represented as
`the values of [in] or |inout| parameters in Microsoft lDL, and operation response
`parameters are represented as the values of |inout| or |out] parameters. An
`
`December 2001
`
`CORBA, v2. 6: COM 10 CORR/1 Data Yype Mapping
`
`18-47
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1010 of 1442
`
`IPR2016-00726 -ACTIVISION, EA, TAKE-TWO, 2K, ROCKSTAR,
`Ex. 1102, p. 1010 of 1442
`
`

`
`I8
`
`operation return result can be any type that can be defined in Microsoft lDL/ODL, or
`void if a result is not returned. By convention, most operations are defined to retum an
`HRESULT. This provides a consistent way to return operation status information.
`
`When Microsoft ODL methods are mapped to OMG lDL, they undergo the following
`transformations. First, if the last parameter is tagged with the Microsoft ODL keyword
`retval, that argument will be used as the return type of the operation. If the last
`parameter is not tagged with retval, then the signature is mapped directly to OMG lDL
`following the mapping rules for the data types of the arguments. Some example
`mappings from COM methods to OMG lDL operations are shown in the following
`code.
`
`[in] VARIANT value,
`[out, retvall LPSTR * pszVa1ue) ;
`
`// Microsoft ODL
`interface IFoo:
`
`IUnknown
`
`{H
`
`RESULT st:ringi£y(
`
`HRESULT permute(
`
`[inout] short
`
`* value);
`
`HRESUL'I‘.tryPermute( [inout] short * value,
`[out]
`long newvaluel;
`
`};
`
`ln OMG

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