IP Library Granted Patent US 8,776,097
Granted Patent B2
US 8,776,097 · App. 13/232,840 · Granted Jul 8, 2014

Dynamic native binding for managed assemblies

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,776,097
App. No.
13/232,840
Granted
Jul 8, 2014
Kind
B2
Abstract

A method, apparatus, system, article of manufacture, and computer readable storage medium provides the ability to dynamically bind a native assembly from a managed assembly. A managed assembly (e.g., a dynamically linked library (DLL)) is obtained. In the managed assembly, native application program interface entry points are identified. For each of the entry points, intended platform(s) and associated correct native assembly(ies) are specified in the managed assembly. The managed assembly is deployed onto a computer. For example, the single collection of managed and native assemblies can be deployed to all targeted computers, which consist of varying platform environments. During runtime execution, the executing platform of the application is determined. Based on the executing platform, an intended platform is selected and the entry points are bound to the correct native assembly.

Claims (47)

1. A computer implemented method for dynamically binding a native assembly from a managed assembly, comprising:

obtaining a managed assembly comprising a dynamic linked library (DLL);

identifying, in the managed assembly, one or more native application program interface entry points;

for each of the one or more native application program interface entry points, specifying, in the managed assembly:

one or more intended platforms; and

for each of the one or more intended platforms, an associated correct native assembly;

deploying the managed assembly onto a first computer; and

during runtime execution:

determining an executing platform of an application;

selecting one of the one or more intended platforms based on the executing platform; and

binding each of the one or more native application program interface entry points from the managed assembly to the associated correct native assembly based on the selected intended platform.

2. The computer-implemented method of claim 1 , wherein an instance of a class is applied, as an attribute to each of the one or more native application program interface entry points, to specify the one or more intended platforms and the associated correct native assembly.

3. The computer-implemented method of claim 1 , wherein a binding class is used during a static construction of the managed assembly during the runtime execution to perform the determining, selecting, and binding steps.

4. The computer-implemented method of claim 1 , wherein the one of the one or more intended platforms comprises a 32-bit native assembly.

5. The computer-implemented method of claim 1 , wherein the one of the one or more intended platforms comprises a 64-bit native assembly.

6. A system for dynamically binding a native assembly from a managed assembly in a computer system comprising:

a computer having a processor;

an application executing on the computer, wherein the application is configured to:

obtain the managed assembly comprising a dynamic linked library (DLL);

identify, in the managed assembly, one or more native application program interface entry points;

for each of the one or more native application program interface entry points, specify, in the managed assembly:

one or more intended platforms; and

for each of the one or more intended platforms, an associated correct native assembly;

deploy the managed assembly onto the computer; and

during runtime execution of the application:

determine an executing platform of the application;

select one of the one or more intended platforms based on the executing platform; and

bind each of the one or more native application program interface entry points from the managed assembly to the associated correct native assembly based on the selected intended platform.

7. The system of claim 6 , wherein an instance of a class is applied, as an attribute to each of the one or more native application program interface entry points, to specify the one or more intended platforms and the associated correct native assembly.

8. The system of claim 6 , wherein a binding class is used during a static construction of the managed assembly during the runtime execution to perform the determining, selecting, and binding steps.

9. The system of claim 6 , wherein the one of the one or more intended platforms comprises a 32-bit native assembly.

10. The system of claim 6 , wherein the one of the one or more intended platforms comprises a 64-bit native assembly.

11. A non-transitory computer readable storage medium encoded with computer program instructions which when accessed by a computer cause the computer to load the computer program instructions to a memory therein creating a special purpose data structure causing the computer to operate as a specially programmed computer, executing a method of dynamically binding a native assembly from a managed assembly, comprising:

obtaining, in the specially programmed computer, the managed assembly comprising a dynamic linked library (DLL);

identifying, in the managed assembly in the specially programmed computer, one or more native application program interface entry points;

for each of the one or more native application program interface entry points, specifying, in the managed assembly in the specially programmed computer:

one or more intended platforms; and

for each of the one or more intended platforms, an associated correct native assembly;

deploying the managed assembly onto the specially programmed computer; and

during runtime execution:

determining, in the specially programmed computer, an executing platform of an application;

selecting, in the specially programmed computer, one of the one or more intended platforms based on the executing platform; and

binding, in the specially programmed computer, each of the one or more native application program interface entry points from the managed assembly to the associated correct native assembly based on the selected intended platform.

12. The non-transitory computer readable storage medium of claim 11 , wherein an instance of a class is applied, as an attribute to each of the one or more native application program interface entry points, to specify the one or more intended platforms and the associated correct native assembly.

13. The non-transitory computer readable storage medium of claim 11 , wherein a binding class is used during a static construction of the managed assembly during the runtime execution to perform the determining, selecting, and binding steps.

14. The non-transitory computer readable storage medium of claim 11 , wherein the one of the one or more intended platforms comprises a 32-bit native assembly.

15. The non-transitory computer readable storage medium of claim 11 , wherein the one of the one or more intended platforms comprises a 64-bit native assembly.

Assignments (11)
PATENT SECURITY AGREEMENT Recorded Nov 10, 2019
From: VIANT TECHNOLOGY LLC; ADELPHIC LLC; MYSPACE LLC
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 050977/0542 →
RELEASE OF PATENT SECURITY INTEREST RECORDED AT REEL 037136/FRAME 0806, REEL 037829/FRAME 0757, AND REEL 042196/FRAME 0747 Recorded Oct 31, 2019
From: VIANT TECHNOLOGY LLC (AS ASSIGNED FROM BANK OF AMERICA, AND PURSUANT TO CHANGE OF NAME)
To: TI NEWCO LLC (AS ASSIGNED FROM MYSPACE LLC)
Reel/Frame 050900/0079 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2017
From: VIANT TECHNOLOGY LLC
To: MYSPACE LLC
Reel/Frame 041934/0659 →
CHANGE OF NAME Recorded Apr 7, 2017
From: TI NEWCO LLC
To: VIANT TECHNOLOGY LLC
Reel/Frame 042196/0747 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 7, 2017
From: MYSPACE LLC
To: TI NEWCO LLC
Reel/Frame 041934/0500 →
SECURITY INTEREST Recorded Feb 25, 2016
From: BANK OF AMERICA, N.A.
To: TI NEWCO LLC
Reel/Frame 037829/0757 →
SECURITY INTEREST Recorded Nov 24, 2015
From: MYSPACE LLC
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037136/0806 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Sep 11, 2013
From: WELLS FARGO BANK, N.A., AS AGENT
To: SITE METER, INC.; BBE LLC; VINDICO LLC; MYSPACE LLC; XUMO LLC; INTERACTIVE MEDIA HOLDINGS, INC.; SPECIFIC MEDIA LLC; INTERACTIVE RESEARCH TECHNOLOGIES, INC.; ILIKE, INC.
Reel/Frame 031204/0113 →
CONVERSION FROM A CORPORATION TO LIMITED LIABILITY COMPANY Recorded May 8, 2012
From: MYSPACE, INC.
To: MYSPACE LLC
Reel/Frame 028173/0600 →
SECURITY AGREEMENT Recorded Mar 21, 2012
From: INTERACTIVE MEDIA HOLDINGS, INC.; SPECIFIC MEDIA LLC; MYSPACE LLC; XUMO LLC; SITE METER, INC.; BBE LLC; VINDICO LLC; INTERACTIVE RESEARCH TECHNOLOGIES, INC.; ILIKE, INC.
To: WELLS FARGO BANK, N.A., AS AGENT
Reel/Frame 027905/0853 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2011
From: KINKADE, PHILLIP; CUFF, BRANDON; WISE, FRANKLIN
To: MYSPACE, INC.
Reel/Frame 026905/0646 →