BR112014003123B1 - Método implementado em computador e memória de armazenamento legível por computador - Google Patents

Método implementado em computador e memória de armazenamento legível por computador Download PDF

Info

Publication number
BR112014003123B1
BR112014003123B1 BR112014003123-1A BR112014003123A BR112014003123B1 BR 112014003123 B1 BR112014003123 B1 BR 112014003123B1 BR 112014003123 A BR112014003123 A BR 112014003123A BR 112014003123 B1 BR112014003123 B1 BR 112014003123B1
Authority
BR
Brazil
Prior art keywords
interfaces
operating system
interface
computer
abstract
Prior art date
Application number
BR112014003123-1A
Other languages
English (en)
Other versions
BR112014003123A2 (pt
Inventor
Brent E. Rector
Elliot H. Omiya
Jerry J. Dunietz
Martyn S. Lovell
Ales Holecek
Mahesh Prakriya
Stephen C. Rowe
James F. Springfield
Noel R. Cross
Tassaduq H. Basu
Patrick H. Dussud
Raja Krishnaswamy
Steven Edward Lucco
Original Assignee
Microsoft Technology Licensing, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BR112014003123A2 publication Critical patent/BR112014003123A2/pt
Publication of BR112014003123B1 publication Critical patent/BR112014003123B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

sistema de tempo de execução. várias modalidades apresentam a capacidade de descrever, independente da linguagem de programação, uma ou mais interfaces associadas com um sistema operacional. alternada ou adicionalmente, um compilador associado com uma linguagem de programação específica pode ser configurado para mapear a descrição (ões) da interface independente para a linguagem de programação específica. em algumas modalidades, uma aplicação pode ser configurada para determinar, de modo programático, uma ou mais interfaces do sistema operacional.

Description

PRECEDENTES
[0001] Os computadores atuais frequentemente incluem sistemasoperacionais para gerenciar o acesso aos recursos de hardware e software. Por sua vez, os sistemas operacionais podem incluir vários tipos de interfaces, tal como uma interface de programação de aplicação (API), para possibilitar que um programador e/ou aplicação acesse esses recursos. Em alguns casos, as interfaces são programadas com uma linguagem de programação específica em mente. Quando uma aplicação do cliente é escrita na linguagem de programação específica, a aplicação do cliente pode acessar as interfaces em maneiras nativas para a linguagem de programação específica. Entretanto, aplicações do cliente que são escritas em uma linguagem diferente dessa das interfaces podem, algumas vezes, terminar utilizando código adicional e/ou funções envoltórias a fim de convocar a interface.
[0002] Tipicamente, as interfaces são documentadas externas aosistema operacional. A fim de convocar com sucesso uma interface, bem como escrever funções envoltórias, um programador consulta a documentação externa para determinar quais interfaces estão disponíveis, quais são os parâmetros de chamada associados, etc. Novas versões de um sistema operacional podem incluir novas interfaces, modificações nas interfaces antigas, bem como remoção de interfaces obsoletas. Portanto, de modo a manter um conjunto atual de APIs, o programador tem que consultar a documentação externa em cada nova versão do sistema operacional. Isso pode resultar, algumas vezes, em um atraso entre quando uma interface é lançada em um sistema operacional e quando a interface pode ser incluída em um programa.
SUMÁRIO
[0003] Esse sumário é apresentado para introduzir uma seleçãode conceitos em uma forma simplificada que são ainda descritos abaixo na descrição detalhada. Esse sumário não é planejado para identificar aspectos chave ou aspectos essenciais da matéria em questão reivindicada, nem ele é planejado para ser usado para limitar o escopo da matéria em questão reivindicada.
[0004] Várias modalidades apresentam a capacidade dedescrever, independente da linguagem de programação, uma ou mais interfaces associadas com um sistema operacional. Alternada ou adicionalmente, um compilador associado com uma linguagem de programação específica pode ser configurado para mapear a descrição (ões) da interface independente para a linguagem de programação específica. Em algumas modalidades, uma aplicação pode ser configurada para determinar, de modo programático, uma ou mais interfaces do sistema operacional.
[0005] Algumas modalidades proporcionam a capacidade demodelar uma ou mais interfaces de um sistema operacional, em uma maneira orientada a objetos, utilizando um sistema do tipo abstrato. Em algumas modalidades, uma linguagem de definição de interface (IDL) estendida pode incluir sintaxe para descrever as relações entre uma ou mais interfaces. Em algumas modalidades, um contrato binário pode ser configurado para expor o comportamento associado com o sistema do tipo abstrato.
BREVE DESCRIÇÃO DOS DESENHOS
[0006] Os mesmos números são usados por todos os desenhospara fazer referência a aspectos semelhantes.
[0007] A Fig. 1 ilustra um ambiente operacional no qual váriosprincípios descritos aqui podem ser utilizados de acordo com uma ou mais modalidades.
[0008] A Fig. 2 ilustra uma arquitetura de acordo com uma ou maismodalidades.
[0009] A Fig. 3 é um diagrama de fluxo que descreve as etapasem um método de acordo com uma ou mais modalidades.
[00010] A Fig. 4 ilustra um diagrama de relação de acordo com uma ou mais modalidades.
[00011] A Fig. 5 ilustra um sistema exemplar que pode ser utilizado para implementar uma ou mais modalidades.
DESCRIÇÃO DETALHADAVisão geral
[00012] Várias modalidades apresentam a capacidade de descrever, independente de uma linguagem de programação, uma ou mais interfaces associadas com um sistema operacional. Um sistema do tipo abstrato, em combinação com uma linguagem de definição da interface (IDL), pode ser configurado para descrever e/ou definir as interfaces. Em algumas modalidades, uma interface pode ser descrita em uma maneira orientada a objetos. Alternada ou adicionalmente, um compilador associado com uma linguagem de programação específica pode ser configurado para mapear a descrição (ões) da interface independente da linguagem para construtos apropriados na linguagem de programação específica. Alternada ou adicionalmente, um ambiente do tempo de execução da aplicação da linguagem de programação pode ser configurado para dinamicamente (por exemplo, durante a execução do tempo de execução) mapear a descrição (ões) da interface independente da linguagem para construtos apropriados no ambiente específico do tempo de execução. Em algumas modalidades, uma aplicação pode ser configurada para determinar, de modo programático, a descrição (ões) da interface independente. Em alguns casos, a descrição (ões) da interface independente pode ser armazenada em um formato legível por máquina.
[00013] Na discussão que segue, uma seção intitulada "ambiente operacional" é apresentada e descreve um ambiente no qual uma ou mais modalidades podem ser utilizadas. Seguinte a isso, uma seção intitulada "acesso do componente do sistema operacional" descreve uma arquitetura que possibilita que múltiplas linguagens de programação acessem componentes do sistema, de modo programático. A seguir, uma seção intitulada "modelagem de linguagens orientadas a objeto com um sistema do tipo abstrato" descreve como um sistema do tipo abstrato pode ser usado, em conjunto com uma IDL estendida, para descrever interfaces do sistema operacional em uma maneira orientada a objetos. Finalmente, uma seção intitulada "sistema exemplar" descreve um sistema exemplar que pode ser utilizado para implementar uma ou mais modalidades.
[00014] Tendo fornecido uma visão geral das várias modalidades que serão descritas abaixo, considere agora um ambiente operacional exemplar no qual uma ou mais modalidades podem ser implementadas.
Ambiente operacional
[00015] A Fig. 1 ilustra um ambiente operacional de acordo com uma ou mais modalidades, de forma geral em 100. O ambiente 100 inclui um dispositivo de computação 102 tendo um ou mais processadores 104 e um ou mais meios de armazenamento legíveis por computador 106. Os meios de armazenamento legíveis por computador podem incluir, por meio de exemplo e não limitação, todas as formas de memória volátil e não volátil e/ou meios de armazenamento que são associados tipicamente com um dispositivo de computação. Tais meios podem incluir ROM RAM, memória flash, disco rígido, meios removíveis e assim por diante. Um exemplo específico de um dispositivo de computação é mostrado e descrito abaixo na Fig. 5.
[00016] Além disso, o dispositivo de computação 102 inclui o sistema operacional (OS) 108 e interface(s) associada do sistema operacional 110. Embora mostrado como módulos separados, deve ser verificado e entendido que o sistema operacional 108 e a interface(s) do sistema operacional 110 podem ser implementados como módulos separados, módulos combinados ou qualquer combinação desses sem se afastar do escopo da matéria em questão reivindicada. O sistema operacional 108 representa a funcionalidade configurada para gerenciar recurso(s) de software e/ou hardware do dispositivo de computação 102. A interface(s) do sistema operacional 110 representa o acesso programático a serviços e/ou funcionalidade proporcionada pelo sistema operacional 108, tais como o gerenciamento da memória, gerenciamento de arquivos, serviços, funções, gerenciamento de recursos, gerenciamento do dispositivo periférico e assim por diante.
[00017] O dispositivo de computação 102 também inclui um ou mais arquivos de linguagem descritivos 112, que representam um ou mais arquivos configurados para descrever uma ou mais interfaces. Em algumas modalidades, uma interface pode ser associada com um sistema operacional, tal como a interface(s) do sistema operacional 110. Os arquivos de linguagem descritivos podem descrever as interfaces usando qualquer descrição adequada, linguagem de marcação e/ou sintaxe, tal como com uma linguagem de definição de interface (IDL), linguagem de marcação extensível (XML) e assim por diante.
[00018] Além disso, o dispositivo de computação 102 também inclui um ou mais módulos de editor/compilador 114. Em algumas modalidades, o módulo de editor/compilador 114 representa a funcionalidade que lê e/ou interpreta o arquivo(s) de linguagem descritivo 112 e gera uma saída, tal como um ou mais arquivos de metadados binários 116, com base no arquivo(s) 112. O arquivo(s) de metadados binário 116 representa um ou mais arquivos legíveis por máquina que incluem informação associada com a interface(s) do sistema operacional 110 e/ou o sistema operacional 108, tais como tipos de parâmetros de entrada, a ordem de chamada do parâmetro, relações entre as interfaces e assim por diante.
[00019] Alternada ou adicionalmente, o módulo(s) de editor/compilador 114 representa a funcionalidade que lê e/ou decifra um ou mais arquivos do código-fonte 118. Arquivo(s) do código-fonte 118 corresponde com um ou mais arquivos contendo declarações de programação associadas com pelo menos uma linguagem de programação. Em alguns casos, o arquivo(s) de código-fonte 118 pode incluir declarações que chamam para uma ou mais interfaces do sistema operacional. O módulo(s) de editor/compilador 114 interpreta o arquivo(s) do código-fonte 118 e gera código executável por máquina com base no arquivo-fonte (s).
[00020] O dispositivo de computação 102 pode ser representado como qualquer dispositivo de computação adequado tal como, por meio de exemplo e não limitação, um computador de mesa, um computador portátil, um computador notebook, um computador de mão, tais como um assistente digital pessoal (PDA), telefone celular e assim por diante.
[00021] Tendo descrito um ambiente operacional exemplar, considere agora uma discussão da exposição dos componentes do sistema operacional, de modo programático, a uma ou mais linguagens de programação.
Acesso do componente do sistema operacional
[00022] Aplicações funcionando em um dispositivo de computação frequentemente utilizam recursos proporcionados pelo sistema operacional funcionando no dispositivo de computação. O sistema operacional pode possibilitar o acesso simplificado a recursos associados no dispositivo de computação, bem como proporcionar serviços. Algumas vezes, esses aspectos, serviços e/ou recursos podem ser acessados de modo programático. Entretanto, se o sistema operacional expõe essas funcionalidades em um formato de linguagem de programação que é diferente de uma linguagem de programação na qual uma aplicação é escrita, um programador escreverá tipicamente funções envoltórias para ajudar na transição entre as diferentes linguagens de programação. Por exemplo, considere uma interface que foi escrita e/ou exposta como uma função "C" simples, exportada. Um programador de C# ou Visual Basic desejando usar a função do estilo C pode incluir declarações especiais e/ou código adicional de modo a possibilitar que a sua linguagem de programação convoque com sucesso a função do estilo "C". Como uma consequência, as aplicações escritas em uma linguagem de programação diferente das interfaces expostas não têm acesso às interfaces até que as declarações adicionais e/ou funções envoltórias sejam escritas.
[00023] Várias modalidades proporcionam a capacidade de descrever, independente de uma linguagem de programação, uma ou mais interfaces associadas com um sistema operacional. A descrição de uma interface independente da linguagem de programação possibilita acesso fácil das linguagens de programação a interface. Quando uma linguagem de programação aprende como interpretar a descrição independente da linguagem da interface, esse conhecimento pode ser aplicado a interfaces existentes e futuras que usam uma descrição independente da linguagem. Em algumas modalidades, uma interface pode ser descrita usando um sistema do tipo abstrato. Por sua vez, uma linguagem de programação específica, ou um compilador associado da linguagem de programação, pode mapear o sistema do tipo abstrato para seu sistema do tipo associado para interpretar e/ou acessar a interface.
[00024] Considere a Fig. 2, que ilustra uma arquitetura 200, de acordo com uma ou mais modalidades. A arquitetura 200 inclui o sistema operacional 202, que pode ser configurado para executar em um dispositivo de computação. Deve ser entendido que, com o intuito de brevidade, o sistema operacional 202 não é ilustrado na sua íntegra. O sistema operacional 202 inclui um ou mais componentes do sistema operacional 204 configurados para gerenciar recursos associados com um dispositivo de computação. Em algumas modalidades, o componente(s) do sistema operacional 204 pode proporcionar acesso programático aos recursos, bem como um ou mais serviços e/ou aspectos associados com o gerenciamento dos recursos. O componente(s) do sistema operacional 204 pode também incluir elementos básicos associados com o sistema operacional 202, bem como elementos complexos construídos dos elementos básicos.
[00025] Em algumas modalidades, o componente(s) do sistema operacional 204 pode ser exposto através de uma ou mais interfaces, tal como uma API. Nesse exemplo, o sistema operacional 202 inclui novas famílias de API 206, famílias de API com base em COM 208 e famílias de API com base em exportação simples 210. Novas famílias de API 206 representam uma ou mais APIs relacionadas onde a funcionalidade (isto é, classes, interfaces, métodos, propriedades, eventos e assim por diante) é descrita diretamente usando o sistema do tipo abstrato, como ainda descrito abaixo. Famílias de API com base em COM 208 representam uma ou mais APIs onde a funcionalidade é descrita usando um sistema do tipo de modelo do objeto do componente (COM). Famílias de API com base em exportação simples 210 representam uma ou mais APIs onde a funcionalidade é descrita usando uma assinatura do método (isto é, uma assinatura do método incluindo o nome do método, a convenção de chamada, número e tipo de argumentos do método). APIs com base em exportação simples ainda representam as APIs que são somente identificadas por seu nome e não são dispostas em classes e/ou em uma maneira orientada a objetos. Um programador desejando determinar quais APIs estão disponíveis pode acessar de modo manual e/ou programático as descrições de cada API. Por exemplo, para determinar quais interfaces existem para novas famílias de API 206 e como chamá-las, o programador pode acessar metadados associados 212. Embora as famílias da API com base em COM 208 e famílias de API com base em exportação simples 210 tenham descrições associadas do sistema do tipo independente da linguagem nos metadados 214 e 216 respectivamente, o programador primeiro escreve o código envoltório para mapear a descrição do sistema do tipo independente da linguagem para as APIs com base em exportação simples e/ou com base em COM.
[00026] Os metadados 212, 214 e 216 podem ser configurados para incluir informação que descreve vários aspectos da interface(s) associada, tal como a informação da versão, quais métodos estão disponíveis, quais parâmetros a interface(s) pega, os tipos de dados dos parâmetros, a ordem na qual passar os parâmetros, etc. Em algumas modalidades, os metadados podem incluir informação hierárquica associada com uma interface, tal como informação descrevendo as relações entre a interface(s) e/ou descrevendo a interface(s) em uma maneira orientada a objetos. Os metadados podem ser configurados para incluir descrições de classe, métodos associados e parâmetros de uma classe e assim por diante. Em alguns casos, um ou mais arquivos da IDL podem ser estendidos para incluir algumas dessas descrições e usados na geração de um ou mais arquivos de metadados. Em alguns casos, os metadados podem ser baseados, pelo menos em parte, em um ou mais arquivos da IDL, como ainda descrito abaixo.
[00027] O sistema operacional 202 também inclui interface(s) binária da aplicação (ABI) 218. Uma ABI descreve, em um nível de máquina, um contrato binário para chamar funções, métodos, APIs e assim por diante. O contrato binário pode incluir uma identificação ou nome associado com uma função, uma assinatura que pode ser usada para chamar a função, uma ordem de parâmetros passados para a função e/ou os tipos de dados associados com os parâmetros, etc. Alternada ou adicionalmente, o contrato binário pode incluir definições e/ou regras para expor o comportamento associado com pelo menos um tipo de um sistema de tipo. Tipicamente, o comportamento associado com e/ou definido por um contrato binário não muda. Por exemplo, se uma assinatura e/ou identificação de um contrato binário permanece constante, o comportamento associado do contrato permanece constante também.
[00028] A interface binária da aplicação 218 representa a funcionalidade exposta através de um binário que pode ser invocado com segurança por outras aplicações. Nesse exemplo, a interface(s) binária da aplicação 218 inclui interfaces, tipos básicos e padrões básicos associados com o componente(s) do sistema operacional 204. Uma ou mais aplicações externas ao sistema operacional 202, tal como aplicação(ões) 220, podem acessar os componentes do sistema operacional 204 via uma ou mais interfaces binárias da aplicação 218.
[00029] As aplicações 220 podem incluir uma ou mais aplicações geradas de uma ou mais linguagens de programação, tais como HTML, JavaScript, Visual Basic, C#, C++ e assim por diante. Em algumas modalidades, as aplicações 220 incluem uma ou mais chamadas para um componente do sistema operacional. Em alguns casos, a aplicação (ões) 220 pode ser configurada para determinar, em primeiro lugar, de modo programático, quais interfaces estão disponíveis e depois fazer uma chamada para uma ou mais das interfaces determinadas. Em alguns casos, a aplicação(ões) 220 acessa a interface(s) através da interface(s) binária da aplicação 218, com a ajuda de um ou mais módulos gerados de projeção da linguagem 222 como ainda descrito abaixo.
[00030] Em uma ou mais modalidades, o módulo(s) gerado de projeção da linguagem 222 mapeia uma definição do sistema do tipo abstrato para uma linguagem de programação específica. Qualquer linguagem de programação adequada pode ser mapeada, exemplos das quais são fornecidos acima. Em algumas modalidades, um módulo gerado de projeção da linguagem pode ser único para cada linguagem de programação. Em outras modalidades, um módulo gerado de projeção da linguagem pode ser de múltiplas finalidades e utilizado por múltiplas linguagens de programação. Um mapeamento possibilita que as interfaces atuais e futuras que são descritas usando o sistema do tipo abstrato fiquem acessíveis para uma linguagem de programação específica sem declarações de programação adicionais (isto é, uma função envoltória). O mapeamento ainda permite que uma linguagem de programação específica chame uma interface em uma maneira que é nativa para a linguagem de programação específica. Qualquer tipo adequado de informação pode ser mapeado, tais como classes, tipos de dados, ponteiros de função, estruturas e assim por diante.
[00031] Considere um exemplo onde um programador deseja acessar um componente do sistema operacional. Quando escrevendo uma aplicação, tal como aplicação(ões) 220, o programador gera o código-fonte em um editor/compilador associado com pelo menos uma linguagem de programação específica. O editor/compilador pode ser configurado para acessar arquivo(s) de metadados a fim de obter informação associada com quais interfaces e/ou APIs associadas com o sistema operacional estão disponíveis. Por exemplo, em algumas modalidades, quando o programador escreve uma linha de código que inclui uma chamada para uma classe implementada como parte de um componente do sistema operacional, o compilador/editor pode consultar metadados associados com a classe e retornar para o programador uma lista de quais métodos, propriedades e assim por diante estão associados com a classe. A lista pode incluir qualquer tipo de informação, métodos associados e/ou propriedades de uma classe e assim por diante. Alternada ou adicionalmente, a lista pode incluir uma lista de classes disponíveis. Em algumas modalidades, a informação pode ser fornecida como parte de um aspecto de autoconclusão configurado para visualmente apresentar métodos relevantes, propriedades, etc. de uma interface para um usuário para seleção. Com a seleção de um método e/ou propriedade, o compilador/editor pode inserir a sintaxe correspondente no código- fonte para a geração mais eficiente e precisa do código-fonte.
[00032] Em algumas modalidades, o programador pode escrever o código-fonte configurado para instanciar um objeto de classe dos componentes do sistema operacional. Quando chamado no tempo de execução, o sistema operacional cria dinamicamente uma instância da classe para devolver para o código de chamada. Entretanto, a instância devolvida para o código de chamada pode ser um "objeto abstrato" ou um objeto descrito em um sistema do tipo abstrato associado com os componentes do sistema operacional, como descrito ainda abaixo. A fim de fazer a ligação entre um tipo de objeto abstrato e um tipo de dados concretos de uma linguagem de programação associada com o código da chamada, um compilador pode ser configurado para traduzir e/ou mapear o objeto abstrato para tipos comparáveis na sua linguagem de programação associada, tal como através do módulo(s) gerado de projeção da linguagem 222. Em alguns casos, um representante (proxy) pode ser usado para ligar as chamadas entre um objeto abstrato dos componentes do sistema operacional e um objeto concreto associado com uma linguagem de programação.
[00033] Considere um representante configurado para emular o comportamento de uma classe do componente do sistema operacional. Em alguns casos, um representante pode ser criado que inclui "stubs" de tipos associados, métodos, propriedades, eventos, interfaces, etc. da classe. O representante pode ser construído em uma linguagem de programação do código de chamada, assim possibilitando que o código chamando acesse o representante em uma maneira nativa para o código de chamada. Os stubs podem incluir conhecimento apropriado e/ou código para traduzir e/ou mapear essas células para (e de) o sistema operacional. Por exemplo, em algumas modalidades, o representante pode se comunicar com a interface(s) binária da aplicação 218.
[00034] Em algumas modalidades, uma linguagem de programação pode inserir uma função envoltória e/ou representante, como descrito acima, para mapear um tipo abstrato para um tipo que é nativo para a linguagem de programação. Um editor/compilador da linguagem de programação pode ser configurado para ler metadados, tal como arquivos de metadados 212, 214 e 216, determinar quais tipos abstratos estão sendo usados, mapear o tipo(s) abstrato para um ou mais tipos comparáveis na linguagem de programação associada e ligar uma função envoltória associada e/ou representante com o tipo abstrato associado com os componentes do sistema operacional. Depois que um mapeamento para cada tipo existe entre uma linguagem de programação e o sistema do tipo abstrato, quaisquer interfaces atuais ou futuras definidas pelo sistema do tipo abstrato podem ser acessadas automaticamente pela linguagem de programação sem codificação adicional de um programador.
[00035] Como um exemplo, considere a Fig. 3, que ilustra um diagrama de fluxo que descreve etapas em um método de acordo com uma ou mais modalidades. O método pode ser executado por qualquer hardware adequado, software, firmware ou combinação desses. Em pelo menos algumas modalidades, aspectos do método são executados pelo software, tal como módulo do editor/compilador 114, executando no dispositivo de computação 102.
[00036] A etapa 302 recebe uma solicitação por informação associada com interfaces disponíveis do sistema operacional. Por exemplo, a solicitação pode ser configurada para solicitar quais interfaces estão disponíveis e/ou outras informações associadas com as interfaces disponíveis. Isso pode ser realizado em qualquer maneira adequada. Em algumas modalidades, a solicitação pode ser gerada automaticamente por um editor do código-fonte no qual o código-fonte está sendo desenvolvido. O editor do código pode identificar uma chamada para uma interface do sistema operacional e/ou componente e, com a identificação, enviar uma solicitação para os métodos disponíveis, propriedades, etc. associados com a interface do sistema operacional. Em algumas modalidades, uma solicitação pode ser gerada manualmente através da seleção de um menu suspenso, botão de rádio e assim por diante. A solicitação pode ser configurada para solicitar informação associada com todas as interfaces disponíveis do sistema operacional, algumas interfaces disponíveis do sistema operacional, interfaces individuais do sistema operacional ou qualquer combinação disso. Em algumas modalidades, uma solicitação pode ser gerada através de uma aplicação corrente, tal como aplicação (ões) 220 da Fig. 2.
[00037] A etapa 304 obtém a informação associada com uma ou mais interfaces do sistema operacional. Por exemplo, em algumas modalidades, o sistema operacional pode ser consultado pela informação. Alternada ou adicionalmente, a informação pode ser incluída em um ou mais arquivos de metadados e obtida pela consulta e/ou leitura dos arquivos de metadados. Como descrito acima e abaixo, os arquivos de metadados podem estar em um formato legível por máquina e incluir informação hierárquica, tal como formação da relação do objeto associada com as interfaces.
[00038] Responsiva à obtenção da informação, a etapa 306determina um ou mais tipos abstratos associados com a uma ou mais interfaces do sistema operacional. Como descrito acima, em algumas modalidades, uma interface do sistema operacional pode ser descrita independente de uma linguagem de programação específica através do uso de um sistema do tipo abstrato. Responsiva à determinação do um ou mais tipos abstratos associados com a uma ou mais interfaces do sistema operacional, a etapa 308 mapeia cada um do um ou mais tipos abstratos para um tipo associado com uma linguagem de programação específica.
[00039] Considere um exemplo de uma linguagem de descrição da interface descrevendo uma ABI para uma classe do tempo de execução OpenPicker. Incluído na classe do tempo de execução OpenPicker está um método PickMultipleItems configurado para retornar uma coleção de objetos FileItem. Nesse exemplo particular, a classe FileItem contém um método GetProperties configurado para retornar um objeto FileItemProperties compreendendo um valor de nome. runtimeclass OpenPicker {interface lOpenPicker;interface lOpenPicker : Ilnspectable {HRESULT PickMultipleItems( [out, retval] IVector<IFileItem*>* folder);interface IFileltem : Ilnspectable {HRESULT GetProperties([out, retval] FileltemProperties** retVal);interface IFileltemProperties : Ilnspectable {[propget] HRESULT Name([out, retval] HSTRING *value);
[00040] Em algumas modalidades, um compilador da linguagem C# pode mapear uma descrição para os construtos da linguagem C#. Pelo mapeamento da descrição para construtos específicos da linguagem, as interfaces do sistema operacional podem ser acessadas em uma maneira nativa para a linguagem de programação C#, como ilustrado abaixo:OpenPicker picker = new OpenPickerQ;var items = picker.PickMultipleltemsQ;foreach (Fileitem item in items) {Display (item.GetPropertiesQ.Name);
[00041] Em ainda outro exemplo, uma estrutura definida na maneira independente da linguagem pode ser mapeada para um objeto JavaScript. Considere um exemplo de uma estrutura FrameRate definida usando: typedef struct FrameRate {UINT32 Numerator;UINT32 Denominator;} FrameRate;
[00042] A estrutura FrameRate inclui dois campos UINT32: numerador e denominador. Desde que a estrutura FrameRate é definida usando termos independentes da linguagem, a estrutura pode ser acessada por várias programações específicas da linguagem quando usando um mapeamento apropriado, tal como sendo acessado através de JavaScript. Entretanto, JavaScript não inclui um conceito de uma estrutura contendo campos ou um conceito de números inteiros de 32 bits sem sinais. No lugar disso, JavaScript inclui um conceito de um objeto com propriedades e um conceito de um número. Nesse exemplo, a definição de estrutura acima pode ser um objeto com duas propriedades chamadas numerador e denominador, ambos do tipo número:// JavaScript use of the abovevar framerate = videoType.Framerate; // Get a framerate object var ratio = framerate.Numerator / framerate.Denominator;
[00043] Tendo considerado, de modo programático, expor os componentes do sistema operacional a uma ou mais linguagens de programação, considere agora uma discussão da modelagem das linguagens orientadas a objeto com um sistema do tipo abstrato de acordo com uma ou mais modalidades.Modelagem de linguagens orientadas a objeto com um sistema do tipo abstrato
[00044] Quando uma interface do sistema operacional tiver sido definida usando uma linguagem de programação específica, os parâmetros associados com a interface são caracterizados por tipos de dados da linguagem de programação específica. Por sua vez, chamadores da interface se conformam com como a linguagem de programação específica define os tipos de dados. Para programas escritos na linguagem de programação específica como a interface, a conformação dos tipos de dados se torna trivial desde que os programas têm a mesma definição do tipo de dados. Programas não escritos na linguagem de programação específica que chamam a interface podem reduzir, algumas vezes, as suas capacidades a fim de se conformar com os tipos de dados. Por exemplo, um programador chamando a interface de uma linguagem de programação diferente pode adicionar código para converter e/ou fazer a ligação entre as linguagens de programação diferentes e/ou tipos de dados. Como uma consequência, o processo de ligação entre os tipos de dados pode, frequentemente, reduzir a funcionalidade inerente para os tipos de dados da linguagem de programação que chama. Adicionalmente, essa conversão pode ser complexa algumas vezes e, em alguns casos, não existente se as linguagens de programação diferentes têm conceitos diferentes do que é um objeto.
[00045] Várias modalidades apresentam a capacidade de modelar uma ou mais interfaces de um sistema operacional, em uma maneira orientada a objetos, utilizando um sistema do tipo abstrato. Em algumas modalidades, uma IDL estendida pode incluir sintaxe para descrever as relações entre a uma ou mais interfaces. Alternada ou adicionalmente, a IDL estendida pode incluir regras governando como uma interface pode ser descrita e/ou definida. Em algumas modalidades, um contrato binário pode ser configurado para expor o comportamento associado com o sistema do tipo abstrato e ainda configurado para incluir informação associada com tipos de dados agregados.
[00046] Um modelo orientado a objetos descreve objetos usando uma hierarquia de classe, onde uma classe pode incluir métodos, propriedades, herança, etc.. Tipicamente, mas não necessariamente, uma classe orientada a objetos inclui um ou mais construtores. Um construtor é uma função de classe que, quando chamada, cria uma instância/objeto da classe na memória para uso. Alguns construtores da classe contêm código adicional que prepara a instância/objeto criado para uso. Por exemplo, o código adicional pode inicializar variáveis do membro da classe, executar rotinas de partida associadas da classe, etc. Um construtor padrão não tem parâmetros de entrada, enquanto um construtor não padrão tem um ou mais parâmetros de entrada.
[00047] Em algumas modalidades, um ou mais construtores de um componente do sistema operacional podem ser restritos a seguir implementações particulares e/ou projetos. Seguindo implementações particulares, chamadores dos construtores podem depender de como o construtor e/ou o objeto resultante se comporta. Por exemplo, um construtor padrão de um componente do sistema operacional pode ser restrito e/ou mapeado para um construtor padrão de um método ActivateInstance de uma interface IActivationFactory de um objeto de fábrica de classe. Um objeto de fábrica de classe é um padrão de projeto modelado para criar objetos sem especificar uma classe exata do objeto criado. Pelo uso do modelo de fábrica de classe, o construtor padrão pode manter um nível suficiente de abstração. Construtores não padrões do componente do sistema operacional podem também ser restritos a ser colocados em uma ou mais interfaces especialmente projetadas, tal como interfaces alternadas da fábrica de classe.
[00048] Uma maneira para especificar uma descrição de uma interface é através do uso de um arquivo de linguagem descritivo, tal como uma linguagem de descrição estendida como uma IDL e/ou XML. Em algumas modalidades, a linguagem de descrição estendida pode ser configurada para possibilitar a capacidade de descrever e/ou projetar uma ou mais interfaces do construtor de um componente do sistema operacional. Por exemplo, considere uma classe Compressor, como ilustrado abaixo. Nesse exemplo, a classe Compressor declara que a sua interface ICompressorFactory contém pelo menos uma definição de um método(s) do construtor não padrão associado com a classe.[version(NTDDI_WIN8), activatableflCompressorFactory, NTDDI_WIN8)] runtimeclass Compressor {[default] interface ICompressor;}[version(NTDDI_WIN8), uuid(5F3D96A4-2CFB-442C-A8BA-D7D11B039DAO)] interface ICompressorFactory : Ilnspectable {HRESULT CrcatcComprcssor([in] Windows.Foundation.TOutputStream *UnderlyingStream, [in] CompressAlgorithm Algorithm, [out, retval] Compressor **CreatedCompressor);}
[00049] Essas descrições podem estar contidas em um ou mais arquivos e usadas em conjunto com pelo menos um compilador para gerar uma ou mais descrições de interface em um formato legível por máquina, como ainda descrito abaixo.
[00050] Uma classe orientada a objetos pode ser configurada para incluir pelo menos um método estático, pelo menos uma propriedade estática, pelo menos um evento estático ou qualquer combinação desses. Similar à restrição da definição de um construtor, os métodos estáticos, propriedades estáticas e/ou eventos estáticos podem ser projetados para se conformarem com uma ou mais interfaces especificamente projetadas. Considere um exemplo de uma classe CallControl que declara métodos estáticos, propriedades e eventos. Nesse exemplo, os métodos estáticos, propriedades e eventos são definidos na interface ICallControlStatics: [version(NTDDI_WIN8), uuid("03945AD5-85AB-40El-AF19-56C94303B019"), exclusiveto(CallControl)]interface ICallControl Statics: TTnspcctable {HRESULT GetDefault([out, rctval] CallControl **callControl);HRESULT Fromld([in] HSTRING devicelnterfaceld, [out, retval] CallControl **callControl);}// Runtime classes [version(NTDDI_W!N8), static(ICallControlStatics, NTDDI _WIN8)] runtimeclass CallControl { [default] interface ICallControl;
[00051] Uma classe orientada a objetos pode ser configurada para incluir pelo menos um método de instância, pelo menos uma propriedade da instância, pelo menos um evento da instância ou qualquer combinação desses. Membros da instância (métodos, propriedades e eventos) operam em uma instância especificada de uma classe enquanto membros estáticos são compartilhados por todos os membros de uma classe. Uma classe pode ser projetada para se conformar com uma ou mais interfaces especificamente projetadas, tal como o exemplo acima onde a classe CallControl declara que seus métodos de instância associados, propriedades e eventos são definidos na interface ICallControl. Em algumas modalidades, um ou mais componentes do sistema operacional podemmodelar/implementar essas interfaces depois de/no padrão de projeto da fábrica de classe.
[00052] Se uma linguagem de programação específica invoca um construtor específico da linguagem, membros estáticos ou instância, um módulo de projeção da linguagem, tal como o módulo de projeção de linguagem gerado 222 da Fig. 2, pode mapear as chamadas específicas da linguagem de programação para um método apropriado e/ou interface associada com o objeto ou instância de fábrica da classe apropriada. Em algumas modalidades, o objeto da fábrica de classe é associado com um componente do sistema operacional e/ou classe do tempo de execução. Por exemplo, uma assinatura do método do código direcionando o compilador para criar uma instância da classe do tempo de execução pode ser equiparada com um método de interface de construtor apropriado do objeto da fábrica de classe. Em ainda outro exemplo, o módulo de projeção da linguagem pode ser configurado para equiparar uma assinatura do método específico da linguagem direcionando o compilador a invocar um método estático para o método apropriado da interface de equiparação em uma interface estática associada com o componente do sistema operacional. Em ainda outro exemplo, o módulo de projeção da linguagem pode ser configurado para equiparar uma assinatura do método específico da linguagem direcionando o compilador a invocar um método de instância para um método apropriado da interface de equiparação em uma interface associada com uma instância particular do componente do sistema operacional.
[00053] Em algumas modalidades, um compilador da IDL pode ser configurado para ler um ou mais arquivos da IDL estendidos associados com pelo menos uma descrição da interface do componente do sistema operacional e gerar um arquivo associado legível por máquina. Qualquer tipo adequado de informação pode ser incluído no arquivo da IDL estendido, tal como informação descrevendo tipos, métodos, propriedades, eventos e interfaces de um componente associado do sistema operacional. Em alguns casos, o compilador pode gerar um arquivo de metadados legível por máquina. Uma ou mais aplicações podem ser configuradas para ler o arquivo associado legível por máquina para determinar, de modo programático, qual interface está disponível, descrições associadas e/ou declarações da interface, tipos de dados de parâmetros da interface, etc. A uma ou mais aplicações podem ser escritas em qualquer linguagem de programação adequada, cujos exemplos são fornecidos acima.
[00054] Em algumas modalidades, o compilador da IDL pode gerar um ou mais representantes de comunicação e/ou stubs de código associados com os tipos, métodos, propriedades, eventos e/ou interfaces. Os representantes de comunicação e/ou stubs de código podem ser configurados adicionalmente para acesso por um componente do sistema operacional.
[00055] Considere a Fig. 4, que ilustra a relação entre arquivo(s) da IDL estendido(s) 402, um compilador 404 e arquivo(s) de metadados 406 de acordo com uma ou mais modalidades. Aqui, arquivos da IDL estendidos 402 são recebidos e processados pelo compilador 404 para produzir arquivo(s) de metadados 406. Em pelo menos algumas modalidades, os módulos ilustrados na relação podem ser implementados como software, hardware ou qualquer combinação desses, tal como módulo de editor/compilador 114, executando no dispositivo de computação 102.
[00056] Na modalidade ilustrada e descrita, o arquivo(s) da IDL estendida 402 pode incluir um ou mais arquivos que definem uma ou mais interfaces do componente do sistema operacional, tal como uma API do sistema operacional. Qualquer tipo adequado de componente do sistema operacional pode ser descrito, tais como um objeto/classe de arquivo, um objeto/classe de cadeia, um objeto/classe gráfico, um objeto/classe de cultura e assim por diante. Cada objeto pode incluir métodos, propriedades, informação de herança, etc., que podem ser associados com uma classe orientada a objetos. A IDL estendida pode incluir sintaxe para possibilitar que esses tipos de relações entre a uma ou mais interfaces sejam descritos. Alternada ou adicionalmente, a IDL estendida pode descrever um sistema do tipo abstrato.
[00057] Em algumas modalidades, o sistema do tipo abstrato pode ser configurado para suportar e/ou descrever vários tipos de dados. Por exemplo, uma interface do método pode ser definida para mapear um requisito físico que todas as interfaces operam em uma instância de um objeto. Em outro exemplo, o sistema do tipo abstrato pode ser usado para definir um ponteiro de função que pode ser chamado através da linguagem de programação e limites de componente. Um primeiro componente pode originar um ponteiro de função, ou um delegado, que é ligado a um método. O delegado pode então ser passado através de um limiar da compilação binária para um segundo componente escrito em uma linguagem de programação arbitrária e invocado. Várias modalidades possibilitam que a IDL estendida defina e/ou descreva esses tipos de dados, para definir regras para compor tipos de dados fundamentais, bem como compor os tipos de dados em tipos agregados.
[00058] Na modalidade ilustrada e descrita, o compilador 404 aceita um ou mais arquivos de entrada, tal como arquivo(s) da IDL estendido 402 e produz um ou mais arquivos de metadados 406. O arquivo(s) de metadados 406 pode ser configurado para acesso automático. Por exemplo, os arquivos de metadados podem ser armazenados em um formato legível por máquina. Em algumas modalidades, os arquivos de metadados 406 são associados com um ou mais componentes do sistema operacional. Alternada ou adicionalmente, o compilador 404 pode gerar representantes de comunicação apagados, como descrito acima.
[00059] A(s) aplicação(ões) 408 pode determinar dinamicamente quais APIs estão disponíveis, tal como através da leitura do arquivo(s) de metadados 406. Em algumas modalidades, a(s) aplicação(ões) 408 pode ser configurada como o editor/compilador 114 da Fig. 1. Através do arquivo(s) de metadados 406, uma aplicação pode determinar se versões posteriores da funcionalidade estão presentes, quais parâmetros uma API pega, bem como informar para o usuário qual funcionalidade para uma API está presente no tempo de execução. Dessa maneira, incluindo as descrições da API em um formato legível por máquina, bem como descrevendo as APIs com um sistema do tipo abstrato, as aplicações e/ou linguagens que suportam o mapeamento entre um sistema do tipo abstrato e uma linguagem de programação específica têm acesso fácil às APIs com pouco esforço de um programador.
[00060] Tendo considerado a modelagem das linguagens orientadas a objeto com um sistema do tipo abstrato, considere agora uma discussão de um sistema exemplar de acordo com uma ou mais modalidades.
Sistema exemplar
[00061] A Fig. 5 ilustra um dispositivo de computação exemplar 500 que pode ser usado para implementar as várias modalidades descritas acima. O dispositivo de computação 500 pode ser, por exemplo, o dispositivo de computação 102 da Fig. 1 ou qualquer outro dispositivo de computação adequado.
[00062] O dispositivo de computação 500 inclui um ou mais processadores ou unidades de processamento 502, uma ou mais memórias e/ou componentes de armazenamento 504, um ou mais dispositivos de entrada/saída (I/O) 506 e um barramento 506 que permite que os vários componentes e dispositivos se comuniquem. O barramento 508 representa um ou mais de qualquer um de vários tipos de estruturas de barramento, incluindo um barramento de memória ou controlador de memória, um barramento periférico, uma porta gráfica acelerada e um processador ou barramento local usando qualquer uma de uma variedade de arquiteturas de barramento. O barramento 508 pode incluir barramentos por fiação e/ou sem fio.
[00063] O componente de memória/armazenamento 504 representa um ou mais meios de armazenamento no computador. O componente 504 pode incluir meios voláteis (tal como memória de acesso aleatório (RAM)) e/ou meios não voláteis (tais como memória de leitura (ROM), memória flash, discos óticos, discos magnéticos e assim por diante). O componente 504 pode incluir meios fixos (por exemplo, RAM, ROM, uma unidade rígida fixa, etc.), bem como meios removíveis (por exemplo, uma unidade de memória flash, uma unidade rígida removível, um disco ótico e assim por diante).
[00064] Um ou mais dispositivos de entrada/saída 506 permitem que um usuário insira comandos e informação no dispositivo de computação 500 e também permitem que a informação seja apresentada para o usuário e/ou outros componentes ou dispositivos. Exemplos de dispositivos de entrada incluem um teclado, umdispositivo de controle do cursor (por exemplo, um mouse), ummicrofone, um escâner e assim por diante. Exemplos de dispositivos de saída incluem um dispositivo de exibição (por exemplo, um monitor ou projetor), alto-falantes, uma impressora, uma placa de rede e assim por diante.
[00065] Várias técnicas podem ser descritas aqui no contexto geral de software ou módulos de programa. De forma geral, software inclui rotinas, programas, objetos, componentes, estrutura de dados e assim por diante que executam tarefas particulares ou implementam tipos de dados abstratos particulares. Uma implementação desses módulos e técnicas pode ser armazenada em ou transmitida através de alguma forma de meios legíveis por computador. Meios legíveis por computador podem ser qualquer meio adequado ou meios que possam ser acessados por um dispositivo de computação. Por meio de exemplo e não limitação, meios legíveis por computador podem compreender "meios de armazenamento legíveis por computador".
[00066] "Meios de armazenamento legíveis por computador" incluem meios voláteis e não voláteis, removíveis e não removíveis implementados em qualquer método ou tecnologia para armazenamento de informação, tais como instruções legíveis por computador, estruturas de dados, módulos do programa ou outros dados. Meios de armazenamento legíveis por computador incluem, mas não são limitados a, RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento ótico, cassetes magnéticos, fita magnética, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético ou qualquer outro meio que possa ser usado para armazenar a informação desejada e que possa ser acessado por um computador.
Conclusão
[00067] Várias modalidades apresentam a capacidade de descrever, independente de uma linguagem de programação, uma ou mais interfaces associadas com um sistema operacional. Alternada ou adicionalmente, um compilador associado com uma linguagem de programação específica pode ser configurado para mapear a descrição (ões) independente da interface para os construtos apropriados específicos para a linguagem de programação. Em algumas modalidades, uma aplicação pode ser configurada para determinar, de modo programático, uma ou mais interfaces do sistema operacional.
[00068] Embora a matéria em questão tenha sido descrita em linguagem específica para aspectos estruturais e/ou ações metodológicas, deve ser entendido que a matéria em questão definida nas reivindicações anexas não é necessariamente limitada aos aspectos específicos ou ações descritas acima. Ao invés disso, os aspectos específicos e ações descritos acima são revelados como formas exemplares de implementação das reivindicações.

Claims (12)

1. Método implementado em computador caracterizado pelo fato de que compreende as etapas de:receber (302) uma solicitação por informação associada com pelo menos uma ou mais interfaces disponível do sistema operacional,obter (304) a informação associada com a uma ou mais interfaces disponíveis do sistema operacional, as interfaces do sistema operacional (110) sendo descritas usando um sistema do tipo abstrato, em que o sistema do tipo abstrato é configurado para ativar descrições de interface que são independentes a partir linguagens de programação específicas, e em que pelo menos uma descrição da interface do sistema operacional inclui chamar descrições de tipo de parâmetro;determinar de forma programável um ou mais tipos abstratos associado com a uma ou mais interfaces disponíveis do sistema operacional usando pelo menos um contrato binário, em que determinar o um ou mais tipos abstratos compreende determinar o comportamento associado com um ou mais tipos abstratos, em que o contrato binário é configurado para incluir definições a nível de máquina; emapear (308) tipos abstratos determinados individuais para tipos respectivos individuais associados com pelo menos uma linguagem de programação específica.
2. Método implementado em computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a informação associada com uma ou mais interfaces disponíveis do sistema operacional (110) ainda compreende informação hierárquica.
3. Método implementado em computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a informação compreende a informação da versão associada com pelo menos uma interface, tipos de dados de parâmetros individuais associados com a pelo menos uma interface e uma ordem de chamada dos parâmetros individuais associados com a pelo menos uma interface.
4. Método implementado em computador, de acordo com a reivindicação 1, caracterizado pelo fato de que a informação de obtenção associada com a pelo menos uma interface disponível do sistema operacional (110) compreende obter informação, de modo programático, de pelo menos um arquivo de metadados (212, 214, 216, 406).
5. Método implementado em computador, de acordo com a reivindicação 1, caracterizado pelo fato de que o contrato binário inclui uma ou mais assinaturas de função.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que o contrato binário inclui um ou mais nomes de função.
7. Memória de armazenamento legível por computador caracterizada pelo fato de que compreende:expor pelo uma ou mais características associadas com um sistema operacional (110) usando uma ou mais interfaces;descrever a uma ou mais interfaces usando um sistema do tipo abstrato e uma linguagem de descrição, a linguagem de descrição configurada para permitir descrições hierárquicas da uma ou mais interfaces, o sistema de tipo abstrato configurado para permitir descrições que são independentes de linguagens de programação específicas, em que pelo menos uma descrição inclui chamar descrições do tipo de parâmetro associadas a uma ou mais interfaces;gerar pelo uma ou mais descrições legíveis por máquina da uma ou mais interfaces baseadas, pelo menos em parte, no sistema de tipo abstrato e linguagem de descrição; definir pelo um ou mais contratos binários associados com o sistema do tipo abstrato, o um ou mais contratos binários configurados para incluir uma ou mais regras que descrevem o comportamento associado com pelo menos um tipo de sistema de tipo abstrato, o um ou mais contratos binários compreendendo definições a nível de máquina; emapear o sistema de tipo abstrato para uma ou mais linguagens de programação específica com base, pelo menos em parte, no um ou mais contratos binários.
8. Memória de armazenamento legível por computador, de acordo com a reivindicação 7, caracterizada pelo fato de que as descrições legíveis por máquina compreendem pelo menos um arquivo de metadados (212, 214, 216, 406).
9. Memória de armazenamento legível por computador, de acordo com a reivindicação 7, caracterizada pelo fato de que o pelo menos um tipo do sistema do tipo abstrato compreende um ponteiro de função.
10. Memória de armazenamento legível por computador, de acordo com a reivindicação 7, caracterizada pelo fato de que a uma ou mais interfaces compreende pelo menos uma interface orientada a objetos.
11. Memória de armazenamento legível por computador, de acordo com a reivindicação 7, caracterizada pelo fato de que ainda compreende gerar pelo menos um proxy de comunicação associado com uma ou mais interfaces.
12. Memória de armazenamento legível por computador, de acordo com a reivindicação 7, caracterizada pelo fato de que a uma ou mais características associadas com o sistema operacional (110) limitado a uma implementação seguindo um padrão de projeto de fábrica de classe.
BR112014003123-1A 2011-08-11 2011-10-08 Método implementado em computador e memória de armazenamento legível por computador BR112014003123B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/207,806 2011-08-11
US13/207,806 US8776094B2 (en) 2011-08-11 2011-08-11 Runtime system
PCT/US2011/055492 WO2013022465A1 (en) 2011-08-11 2011-10-08 Runtime system

Publications (2)

Publication Number Publication Date
BR112014003123A2 BR112014003123A2 (pt) 2017-02-21
BR112014003123B1 true BR112014003123B1 (pt) 2021-07-20

Family

ID=47668756

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112014003123-1A BR112014003123B1 (pt) 2011-08-11 2011-10-08 Método implementado em computador e memória de armazenamento legível por computador

Country Status (13)

Country Link
US (2) US8776094B2 (pt)
EP (1) EP2742420B1 (pt)
JP (1) JP5933002B2 (pt)
KR (1) KR101795844B1 (pt)
CN (1) CN103718155B (pt)
AU (2) AU2011374897B2 (pt)
BR (1) BR112014003123B1 (pt)
CA (1) CA2844492C (pt)
IN (1) IN2014CN00797A (pt)
MX (1) MX336195B (pt)
RU (1) RU2601198C2 (pt)
TW (2) TWI533217B (pt)
WO (1) WO2013022465A1 (pt)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US20140237368A1 (en) * 2013-02-19 2014-08-21 Microsoft Corporation Proxying non-interactive controls to enable narration
US9442700B2 (en) * 2013-09-30 2016-09-13 MuleSoft, Inc. API notebook tool
US10228920B2 (en) * 2014-05-13 2019-03-12 Oracle International Corporation Automatic selection of an abstract data type
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US10452409B2 (en) * 2015-10-23 2019-10-22 Oracle International Corporation Universal adapter for native calling
US10120655B2 (en) * 2016-06-03 2018-11-06 Microsoft Technology Licensing, Llc. Seamless high performance interoperability between different type graphs that share a garbage collector
US11343352B1 (en) * 2017-06-21 2022-05-24 Amazon Technologies, Inc. Customer-facing service for service coordination
US11050607B2 (en) * 2017-06-21 2021-06-29 Red Hat, Inc. Proxy with a function as a service (FAAS) support
CN109814861A (zh) * 2017-11-21 2019-05-28 海云数据 为终端用户提供能力的开放平台
US10635416B2 (en) * 2018-07-31 2020-04-28 Microsoft Technology Licensing, Llc Property filtering
CN111400162B (zh) * 2019-01-02 2023-04-25 阿里巴巴集团控股有限公司 一种测试方法及测试系统
DE112019006805A5 (de) * 2019-01-31 2021-11-04 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Ausführen von Programmkomponenten auf einem Steuergerät, ein computerlesbares-Speichermedium, ein Steuergerät und ein System
CN111857662B (zh) * 2020-07-15 2023-06-30 曹蕤 基于map和接口来描述对象特定构成的程序设计方法
CN111949253B (zh) * 2020-08-07 2023-12-01 抖音视界有限公司 组合idl文件的方法、装置、计算机设备和存储介质
US10963228B1 (en) * 2020-12-22 2021-03-30 Temper Systems, Inc. Preventing garbage object accumulation on minimal runtimes
US11036482B1 (en) 2020-12-22 2021-06-15 Temper Systems, Inc. Deriving many idiomatic programming language interfaces
US11163559B1 (en) * 2020-12-28 2021-11-02 Temper Systems, Inc. Cross-publishing software libraries to module repositories
CN117453708A (zh) * 2023-12-25 2024-01-26 成都深瑞同华科技有限公司 一种gis图形与cad图形的双向联动互转方法

Family Cites Families (156)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5097533A (en) 1988-11-29 1992-03-17 International Business Machines Corporation System and method for interfacing computer application programs written in different languages to a software system
US5371885A (en) 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
JPH0540682A (ja) 1990-06-08 1993-02-19 Internatl Business Mach Corp <Ibm> アトミシテイを有する記憶装置の高可用性耐故障再配置
US5339422A (en) 1991-03-07 1994-08-16 Digital Equipment Corporation System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment
US5964835A (en) 1992-12-17 1999-10-12 Tandem Computers Incorporated Storage access validation to data messages using partial storage address data indexed entries containing permissible address range validation for message source
US5594863A (en) 1995-06-26 1997-01-14 Novell, Inc. Method and apparatus for network file recovery
US5910180A (en) 1995-11-21 1999-06-08 Diamond Multimedia Systems, Inc. Context virtualizing device driver architecture
US5887172A (en) 1996-01-10 1999-03-23 Sun Microsystems, Inc. Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends
CA2199675C (en) 1996-05-08 2002-03-26 John C. Goodwin, Iii System and method for managing electronic price label overlays
US6035342A (en) * 1997-03-19 2000-03-07 Microsoft Corporation Method and computer program product for implementing object relationships
US6026238A (en) 1997-08-18 2000-02-15 Microsoft Corporatrion Interface conversion modules based upon generalized templates for multiple platform computer systems
US6269431B1 (en) 1998-08-13 2001-07-31 Emc Corporation Virtual storage and block level direct access of secondary storage for recovery of backup data
US6920537B2 (en) 1998-12-31 2005-07-19 Emc Corporation Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel
US20050182828A1 (en) 1999-04-21 2005-08-18 Interactual Technologies, Inc. Platform specific execution
US6745385B1 (en) 1999-09-01 2004-06-01 Microsoft Corporation Fixing incompatible applications by providing stubs for APIs
EP1117033A1 (en) * 2000-01-14 2001-07-18 Sun Microsystems, Inc. Dynamic dispatch function
US6629264B1 (en) 2000-03-30 2003-09-30 Hewlett-Packard Development Company, L.P. Controller-based remote copy system with logical unit grouping
JP3562435B2 (ja) 2000-04-12 2004-09-08 日本電気株式会社 コンポーネントの自動生成装置
US7783720B1 (en) * 2000-04-21 2010-08-24 Oracle America, Inc. CORBA metadata gateway to telecommunications management network
US6813770B1 (en) 2000-04-21 2004-11-02 Sun Microsystems, Inc. Abstract syntax notation to interface definition language converter framework for network management
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US6691302B1 (en) 2000-05-31 2004-02-10 Siemens Information & Communications Networks, Inc. Interfacing a service component to a native API
US6643672B1 (en) 2000-07-31 2003-11-04 Hewlett-Packard Development Company, Lp. Method and apparatus for asynchronous file writes in a distributed file system
US6925476B1 (en) 2000-08-17 2005-08-02 Fusionone, Inc. Updating application data including adding first change log to aggreagate change log comprising summary of changes
US6928555B1 (en) 2000-09-18 2005-08-09 Networks Associates Technology, Inc. Method and apparatus for minimizing file scanning by anti-virus programs
US7574346B2 (en) 2000-10-30 2009-08-11 Microsoft Corporation Kernel emulator for non-native program modules
US7065742B1 (en) 2000-10-30 2006-06-20 Microsoft Corporation System and method for dynamically processing declarative language instance data
US7730213B2 (en) 2000-12-18 2010-06-01 Oracle America, Inc. Object-based storage device with improved reliability and fast crash recovery
US6993744B2 (en) 2000-12-19 2006-01-31 Tajen Corporation Method for enabling a compiler or interpreter to use identifiers found at run time in a map container object in a manner similar or identical to identifiers declared at compile time
US20020161596A1 (en) 2001-04-30 2002-10-31 Johnson Robert E. System and method for validation of storage device addresses
US6996832B2 (en) 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
CA2349905A1 (en) 2001-06-07 2002-12-07 Ibm Canada Limited-Ibm Canada Limitee System and method of mapping between software objects and structured language element based documents
US6643612B1 (en) 2001-06-28 2003-11-04 Atrica Ireland Limited Mechanism and protocol for per connection based service level agreement measurement
US7546602B2 (en) 2001-07-10 2009-06-09 Microsoft Corporation Application program interface for network software platform
US7581231B2 (en) 2001-07-10 2009-08-25 Microsoft Corporation Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer
US7165239B2 (en) 2001-07-10 2007-01-16 Microsoft Corporation Application program interface for network software platform
US7631084B2 (en) 2001-11-02 2009-12-08 Juniper Networks, Inc. Method and system for providing secure access to private networks with client redirection
US20040201600A1 (en) 2001-12-14 2004-10-14 Microsoft Corporation Methods and system for providing an XML-based interface description language
US7330971B1 (en) 2002-01-11 2008-02-12 Microsoft Corporation Delegated administration of namespace management
US7072915B2 (en) 2002-01-22 2006-07-04 International Business Machines Corporation Copy method supplementing outboard data copy with previously instituted copy-on-write logical snapshot to create duplicate consistent with source data as of designated time
JP2003223350A (ja) 2002-01-29 2003-08-08 Ricoh Co Ltd データベースシステム
US20030188043A1 (en) 2002-03-27 2003-10-02 Woodall Thomas R. Two layer middleware architecture with an intermediate target independent interface
US7320123B2 (en) 2002-04-01 2008-01-15 Sun Microsystems, Inc. Method and system for detecting deprecated elements during runtime
US7424717B2 (en) 2002-05-01 2008-09-09 Bea Systems, Inc. Systems and methods for business process plug-in development
US7334124B2 (en) 2002-07-22 2008-02-19 Vormetric, Inc. Logical access block processing protocol for transparent secure file storage
US7219339B1 (en) 2002-10-29 2007-05-15 Cisco Technology, Inc. Method and apparatus for parsing and generating configuration commands for network devices using a grammar-based framework
US7412658B2 (en) 2002-11-14 2008-08-12 Sap Ag Modeling system for graphic user interface
US7171539B2 (en) 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
US7546607B2 (en) 2002-11-19 2009-06-09 Microsoft Corporation Native code exposing virtual machine managed object
US7784044B2 (en) 2002-12-02 2010-08-24 Microsoft Corporation Patching of in-use functions on a running computer system
US6993603B2 (en) 2002-12-09 2006-01-31 Microsoft Corporation Managed file system filter model and architecture
US7020746B2 (en) 2003-01-28 2006-03-28 Microsoft Corporation Method and system for an atomically updated, central cache memory
US7197417B2 (en) 2003-02-14 2007-03-27 Advantest America R&D Center, Inc. Method and structure to develop a test program for semiconductor integrated circuits
US7846023B2 (en) 2003-03-27 2010-12-07 Microsoft Corporation Application-centric user interface techniques
US7322029B2 (en) 2003-05-08 2008-01-22 American Megatrends, Inc. Method and system for recovering program code in a computer system
US7383255B2 (en) * 2003-06-23 2008-06-03 Microsoft Corporation Common query runtime system and application programming interface
US7380235B1 (en) 2003-06-27 2008-05-27 Microsoft Corporation Application program interface call replay tool
US7519951B2 (en) 2003-09-30 2009-04-14 International Business Machines Corporation Multi-attribute dynamic link library packaging
US20050091271A1 (en) 2003-10-23 2005-04-28 Kasy Srinivas Systems and methods that schematize audio/video data
US7721254B2 (en) 2003-10-24 2010-05-18 Microsoft Corporation Programming interface for a computer platform
US8055907B2 (en) * 2003-10-24 2011-11-08 Microsoft Corporation Programming interface for a computer platform
US7493592B2 (en) 2003-10-24 2009-02-17 Microsoft Corporation Programming interface for a computer platform
US20050114832A1 (en) 2003-11-24 2005-05-26 Microsoft Corporation Automatically generating program code from a functional model of software
US7392527B2 (en) 2003-12-10 2008-06-24 Microsoft Corporation Driver-specific context for kernel-mode shimming
GB2409735A (en) 2003-12-30 2005-07-06 Ibm Method and system for change management of interfaces in distributed computer systems
US7440966B2 (en) 2004-02-12 2008-10-21 International Business Machines Corporation Method and apparatus for file system snapshot persistence
US7694315B2 (en) 2004-02-13 2010-04-06 Microsoft Corporation Schema-based machine generated programming models
US7444621B2 (en) 2004-02-20 2008-10-28 Microsoft Corporation Method and system for providing a common operating system
US20050216552A1 (en) 2004-03-24 2005-09-29 Samuel Fineberg Communication-link-attached persistent memory system
US7707583B2 (en) 2004-05-20 2010-04-27 Sap Ag Robust sharing of runtime systems
EP1759313A2 (en) 2004-05-21 2007-03-07 Computer Associates Think, Inc. Method and apparatus for updating a database using table staging and queued relocation and deletion
US20050268308A1 (en) 2004-05-28 2005-12-01 Nokia Corporation System and method for implementing a general application program interface
US8306991B2 (en) * 2004-06-07 2012-11-06 Symantec Operating Corporation System and method for providing a programming-language-independent interface for querying file system content
US7941402B2 (en) 2004-09-24 2011-05-10 Sap Ag Storing and using classes in databases
JP4104586B2 (ja) 2004-09-30 2008-06-18 株式会社東芝 ファイル管理機能を備えたファイルシステム及びファイル管理方法
JP4956922B2 (ja) 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
US8898123B2 (en) * 2005-06-07 2014-11-25 Rockwell Automation Technologies, Inc. Method and system for interface configuration via device-side scripting
US8060856B2 (en) 2004-11-18 2011-11-15 Aol Inc. Native objects accessible by platform neutral API
US7464124B2 (en) 2004-11-19 2008-12-09 International Business Machines Corporation Method for autonomic data caching and copying on a storage area network aware file system using copy services
US20060129745A1 (en) 2004-12-11 2006-06-15 Gunther Thiel Process and appliance for data processing and computer program product
US7617259B1 (en) 2004-12-31 2009-11-10 Symantec Operating Corporation System and method for managing redundant storage consistency at a file system level
US20060161910A1 (en) 2005-01-14 2006-07-20 International Business Machines Corporation Method, system and program product for automatically ensuring compatability of a code module loaded into a program-code environment
US7519713B2 (en) 2005-02-04 2009-04-14 Microsoft Corporation Mapping between object oriented and service oriented representations of a distributed application
US7950023B2 (en) * 2005-02-04 2011-05-24 Microsoft Corporation Utilizing abstract descriptions to generate, exchange, and configure service and client runtimes
US20060195460A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Data model for object-relational data
US7325007B2 (en) 2005-03-07 2008-01-29 Microsoft Corporation System and method for supporting non-native data types in a database API
US7685635B2 (en) 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US7716661B2 (en) 2005-03-16 2010-05-11 Microsoft Corporation Embedded device update service
JP4591148B2 (ja) 2005-03-25 2010-12-01 富士ゼロックス株式会社 機能変換装置、機能変換方法、機能変換プログラム、デバイスデータ生成装置、デバイスデータ生成方法、及びデバイスデータ生成プログラム
US20060287890A1 (en) 2005-06-15 2006-12-21 Vanderbilt University Method and apparatus for organizing and integrating structured and non-structured data across heterogeneous systems
US7992140B2 (en) 2005-07-29 2011-08-02 Microsoft Corporation Compiler supporting programs as data objects
US20070039010A1 (en) 2005-08-15 2007-02-15 Microsoft Corporation Automatic generation of software code to facilitate interoperability
CN1936853B (zh) 2005-09-22 2010-05-05 康佳集团股份有限公司 嵌入式设备的数据掉电保护和修复方法
KR101198583B1 (ko) 2005-10-12 2012-11-06 한국과학기술원 메타데이터를 이용한 멀티미디어 미들웨어 장치와 그 관리방법 및 기록 매체
US7624257B2 (en) * 2005-11-30 2009-11-24 International Business Machines Corporation Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads
US7716246B2 (en) 2005-11-30 2010-05-11 Microsoft Corporation Dynamic mechanism for providing metadata
US7890659B2 (en) 2005-12-15 2011-02-15 Microsoft Corporation Conforming web services to an updated contract
AU2006331932B2 (en) 2005-12-19 2012-09-06 Commvault Systems, Inc. Systems and methods for performing data replication
US20070156913A1 (en) 2005-12-30 2007-07-05 Hiroyuki Miyamoto Method for enabling extension points through plug-ins
US8082555B2 (en) 2006-02-21 2011-12-20 Microsoft Corporation Routing calls via reflective interfaces and a proxy
US7552148B2 (en) 2006-02-28 2009-06-23 Microsoft Corporation Shutdown recovery
US7620721B2 (en) 2006-02-28 2009-11-17 Microsoft Corporation Pre-existing content replication
US9081585B1 (en) 2006-03-31 2015-07-14 The Mathworks, Inc. Interfacing a device driver with an application using a virtual driver interface and a strategy
EP1845444B1 (en) 2006-04-13 2010-05-19 Microsoft Corporation Virtual execution system for ressource-constrained devices
US7730351B2 (en) 2006-05-15 2010-06-01 Oracle America, Inc. Per file dirty region logging
JP2007316944A (ja) 2006-05-25 2007-12-06 Toshiba Corp データ処理装置、データ処理方法、およびデータ処理プログラム
US8104048B2 (en) 2006-08-04 2012-01-24 Apple Inc. Browsing or searching user interfaces and other aspects
EP2293230B1 (en) 2006-09-11 2014-05-07 Software AG System for managing the lifecycle of a service oriented architecture
US20080077590A1 (en) 2006-09-22 2008-03-27 Honeywell International Inc. Efficient journaling and recovery mechanism for embedded flash file systems
GB0619147D0 (en) 2006-09-28 2006-11-08 Ibm A method, apparatus or software for managing software component version identifications in a componentised software system
KR101046304B1 (ko) 2006-10-20 2011-07-05 후지쯔 가부시끼가이샤 메모리 장치 및 리프레시 조정 방법
US7840752B2 (en) 2006-10-30 2010-11-23 Microsoft Corporation Dynamic database memory management policies
US7971208B2 (en) 2006-12-01 2011-06-28 Microsoft Corporation Developing layered platform components
US8370818B2 (en) 2006-12-02 2013-02-05 Time Warner Cable Inc. Methods and apparatus for analyzing software interface usage
JP2010512584A (ja) 2006-12-06 2010-04-22 フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法
US7956721B2 (en) 2007-01-09 2011-06-07 Homerun Holdings Corporation Power conserving mobile transmitter
JP2008293218A (ja) 2007-05-23 2008-12-04 Nec Corp ファイル管理システム、ファイル管理方法、ファイル管理プログラム
CN101051324A (zh) 2007-05-23 2007-10-10 中兴通讯股份有限公司 一种内存数据库的事务管理方法
WO2009004620A2 (en) 2007-07-03 2009-01-08 Xeround Systems Ltd. Method and system for data storage and management
US7720800B2 (en) 2007-07-06 2010-05-18 International Business Machines Corporation Method and approach to hosting versioned web services
JP2009020705A (ja) 2007-07-12 2009-01-29 Hitachi Ltd Guiアプリケーション開発支援装置及び開発支援方法
US20090024986A1 (en) 2007-07-19 2009-01-22 Microsoft Corporation Runtime code modification
US8667482B2 (en) 2007-08-10 2014-03-04 Microsoft Corporation Automated application modeling for application virtualization
KR100927442B1 (ko) 2007-08-16 2009-11-19 주식회사 마크애니 가상 응용프로그램 생성 시스템, 가상 응용프로그램 설치방법, 네이티브 api 호출 처리 방법 및 가상응용프로그램 수행 방법
US8364683B2 (en) 2007-08-30 2013-01-29 International Business Machines Corporation Importing and reconciling resources from disjoint name spaces to a common namespace
US20090132285A1 (en) 2007-10-31 2009-05-21 Mckesson Information Solutions Llc Methods, computer program products, apparatuses, and systems for interacting with medical data objects
KR101528853B1 (ko) 2007-12-14 2015-07-01 삼성전자주식회사 Api 서비스 방법과 api 매쉬업 생성 방법, 장치 및기록매체
US8250524B2 (en) 2007-12-21 2012-08-21 Microsoft Corporation Contract programming for code error reduction
US9058407B2 (en) 2008-01-22 2015-06-16 Oracle International Corporation Persistent multimedia content versioning
EP2088506A1 (en) * 2008-02-06 2009-08-12 Software AG Method and system for calling services from a remote client
US8732386B2 (en) 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
JP5386111B2 (ja) 2008-05-22 2014-01-15 株式会社日立ソリューションズ ファイルシステムの記録方法
US8484204B2 (en) 2008-08-28 2013-07-09 Microsoft Corporation Dynamic metadata
US9639375B2 (en) 2008-08-28 2017-05-02 Red Hat, Inc. Generation of language bindings for libraries using data from compiler generated debug information
US8595714B1 (en) 2009-03-04 2013-11-26 Amazon Technologies, Inc. User controlled environment updates in server cluster
GB0907171D0 (en) 2009-04-27 2009-06-10 Springsource Ltd Method and apparatus for automatically generating source code files in a storage unit
WO2010135696A1 (en) 2009-05-21 2010-11-25 Salesforce.Com, Inc. System, method and computer program product for versioning components of an application
US9075667B2 (en) 2009-05-21 2015-07-07 Microsoft Technology Licensing, Llc Dynamic binding directed by static types
US8495621B2 (en) 2009-06-15 2013-07-23 Microsoft Corporation Catalog-based software component management
US8539475B2 (en) 2009-09-29 2013-09-17 Oracle America, Inc. API backward compatibility checking
US8433865B2 (en) 2009-12-11 2013-04-30 Microsoft Corporation Consistency without ordering dependency
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US8983982B2 (en) 2009-12-22 2015-03-17 Bmc Software, Inc. Mechanism for deprecating object oriented data
US8572591B2 (en) 2010-06-15 2013-10-29 Microsoft Corporation Dynamic adaptive programming
US8224780B2 (en) 2010-06-15 2012-07-17 Microsoft Corporation Checkpoints for a file system
US8793440B2 (en) 2010-06-17 2014-07-29 Microsoft Corporation Error detection for files
US9411634B2 (en) 2010-06-21 2016-08-09 Microsoft Technology Licensing, Llc Action framework in software transactional memory
US9483284B2 (en) 2011-02-25 2016-11-01 Red Hat, Inc. Version compatibility determination
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US9619779B2 (en) 2011-08-26 2017-04-11 Apple Inc. Client-side policy enforcement of developer API use
US20130055291A1 (en) 2011-08-31 2013-02-28 Microsoft Corporation Describing native application programming interfaces of an operating system with metadata
US9262183B2 (en) 2012-04-23 2016-02-16 Microsoft Technology Licensing, Llc Self-service composed web APIs
US8954479B2 (en) 2012-06-13 2015-02-10 International Business Machines Corporation End-to-end interoperability and workflows from building architecture design to one or more simulations
US9444899B2 (en) 2012-12-26 2016-09-13 Microsoft Technology Licensing, Llc Use of internet information services logging to collect user information in an asynchronous manner
US8793359B1 (en) 2013-11-25 2014-07-29 Software Ag Systems and/or methods for intelligently detecting API key domains
US9110770B1 (en) 2014-03-04 2015-08-18 Amazon Technologies, Inc. Assessing quality of code in an open platform environment

Also Published As

Publication number Publication date
US8776094B2 (en) 2014-07-08
TWI577539B (zh) 2017-04-11
AU2017200899A1 (en) 2017-03-02
MX2014001629A (es) 2014-05-28
IN2014CN00797A (pt) 2015-04-03
CA2844492A1 (en) 2013-02-14
US20130042258A1 (en) 2013-02-14
CN103718155A (zh) 2014-04-09
EP2742420A4 (en) 2015-02-11
EP2742420B1 (en) 2020-09-02
CN103718155B (zh) 2017-09-26
JP5933002B2 (ja) 2016-06-08
JP2014522063A (ja) 2014-08-28
MX336195B (es) 2016-01-11
CA2844492C (en) 2018-11-20
RU2601198C2 (ru) 2016-10-27
KR20140057547A (ko) 2014-05-13
TWI533217B (zh) 2016-05-11
TW201308209A (zh) 2013-02-16
US20140325534A1 (en) 2014-10-30
RU2014104582A (ru) 2015-08-20
WO2013022465A1 (en) 2013-02-14
AU2011374897A1 (en) 2014-02-27
TW201609366A (zh) 2016-03-16
US9563487B2 (en) 2017-02-07
BR112014003123A2 (pt) 2017-02-21
EP2742420A1 (en) 2014-06-18
KR101795844B1 (ko) 2017-11-08
AU2011374897B2 (en) 2016-11-10
AU2017200899B2 (en) 2017-12-07

Similar Documents

Publication Publication Date Title
BR112014003123B1 (pt) Método implementado em computador e memória de armazenamento legível por computador
KR101046035B1 (ko) 동적 코드 실행을 용이하게 하는 컴퓨터 시스템 및 태그 데이터형 프로세싱을 용이하게 하는 컴퓨터로 구현된 방법
US11366643B2 (en) Generating dynamic modular proxies
TWI536263B (zh) 將作業系統之原始應用程式介面投射至其它程式語言
US20180018163A1 (en) Overriding a migrated method in an updated type
JP6338714B2 (ja) 柔軟性の高いメタデータの合成
US11687388B2 (en) Implementing optional specialization when executing code
US9311111B2 (en) Programming environment with support for handle and non-handle user-created classes
US8661425B1 (en) Method, apparatus, and computer-readable medium for storing data associated with a firmware program
US10346225B2 (en) Synthesized modules for module renaming
Lavieri Mastering Java 11: Develop modular and secure Java applications using concurrency and advanced JDK libraries
Wilmet The glib/gtk+ development platform
Ali iPhone SDK 3 programming: advanced mobile development for Apple iPhone and iPod touch
Ali iPhone SDK 3 Programming
Lee et al. Expert Section: Error Handling

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B09W Correction of the decision to grant [chapter 9.1.4 patent gazette]

Free format text: O PRESENTE PEDIDO TEVE UM PARECER DE DEFERIMENTO NOTIFICADO NA RPI NO 2628 DE18/05/2021. ATRAVES DA MENSAGEM FALE CONOSCO 938442, A REQUERENTE SOLICITA CORRIGIR O QUADRO4 DO PARECER DE DEFERIMENTO QUE APRESENTA EQUIVOCADAMENTE 13 REIVINDICACOES QUANDO OCORRETO SAO 12. DIANTE DISTO, CONCLUO PELA RETIFICACAO DO PARECER DE DEFERIMENTO, DEVENDOINTEGRAR A CARTA PATENTE O NUMERO DE REIVINDICACOES QUE CONSTAM NO QUADRO 4 DESTE PARECER.

B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 08/10/2011, OBSERVADAS AS CONDICOES LEGAIS.