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 PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program 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
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
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)
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)
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 |
-
2011
- 2011-08-11 US US13/207,806 patent/US8776094B2/en active Active
- 2011-10-07 TW TW100136563A patent/TWI533217B/zh not_active IP Right Cessation
- 2011-10-07 TW TW104140190A patent/TWI577539B/zh not_active IP Right Cessation
- 2011-10-08 EP EP11870789.2A patent/EP2742420B1/en active Active
- 2011-10-08 JP JP2014524995A patent/JP5933002B2/ja active Active
- 2011-10-08 CA CA2844492A patent/CA2844492C/en active Active
- 2011-10-08 AU AU2011374897A patent/AU2011374897B2/en active Active
- 2011-10-08 WO PCT/US2011/055492 patent/WO2013022465A1/en active Application Filing
- 2011-10-08 MX MX2014001629A patent/MX336195B/es unknown
- 2011-10-08 RU RU2014104582/08A patent/RU2601198C2/ru active
- 2011-10-08 BR BR112014003123-1A patent/BR112014003123B1/pt active IP Right Grant
- 2011-10-08 IN IN797CHN2014 patent/IN2014CN00797A/en unknown
- 2011-10-08 CN CN201180072813.6A patent/CN103718155B/zh active Active
- 2011-10-08 KR KR1020147003539A patent/KR101795844B1/ko active IP Right Grant
-
2014
- 2014-06-06 US US14/298,679 patent/US9563487B2/en active Active
-
2017
- 2017-02-09 AU AU2017200899A patent/AU2017200899B2/en active Active
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. |