ID do artigo: 67692 - Última revisão: segunda-feira, 11 de julho de 2005 - Revisão: 1.1 INFO: Sistema de grupo de multimídia e diretrizes de design de API
Nesta páginaSumárioO grupo de sistemas multimídia do Microsoft está fazendo uma grande quantidade de design de sistema e a implementação. Este artigo comentários nas áreas de design de sistema. Mais InformaçõesDefinições
Term Definition
---- ----------
Module A module provides a set of functions and the interface to
access those functions. The interface is called the API.
Client A client uses a module. A client might be an application
or a dynamic-link library (DLL).
Prefix The initialization portion of the module that must be
called before any of the other functions can be accessed.
Postfix The closing portion of the module that must be called
after the client has finished using the functions of the
module.
Channel A channel is created by calling a module's prefix
function. It is used by the rest of the functions of the
module (including the postfix function).
Duas observações sobre um canal:
Separar a interface do driver de interface do móduloSeparar o aplicativo o hardware é uma das principais tarefas do software do sistema. Camadas do sistema operacional são separadas do hardware por meio do uso de drivers. A interface de sistema para o aplicativo deve ocultar mecanismos dos drivers tanto quanto possível. Isso permite alterar a mecânica de um driver em uma versão posterior do software de sistema. Isso também preserva a formalidade da interface; aplicativos são impedidos de acessar diretamente o hardware.Cada aplicativo também deve ser separado de drivers no sistema. O driver API não deve depender onde o driver está localizado, o que ele é denominado ou qual formulário demora (DLL, VxD e assim por diante). Um driver deve proteger o gravador de aplicativo do seu funcionamento interno para aplicar o princípio de ocultar informações. Se houver muitas informações, o gravador de aplicativo pode optar por acessar diretamente o hardware, que compromete a separação da funcionalidade fornecida pelo driver de mecanismo e o sistema API. Cada módulo deve ter uma função de inicializaçãoSolicitando o aplicativo para chamar uma função de prefixo antes de usar um módulo de sistema e uma função postfix depois usar um módulo de sistema fornece três benefícios principais, da seguinte maneira:
Nome da interfaceDurante o processo de criação de um novo módulo, use a interface as convenções de um módulo existente de nomenclatura com funcionalidade semelhante. Por exemplo, uma interface que negociações com arquivos teria uma interface de prefixo que contenham a palavra "abrir" e uma interface postfix contendo a palavra "Fechar". Estenda convenções de nomenclatura para áreas funcionais semelhantes. Uma interface de fluxo também teria um "abrir" e uma função "Fechar".Se o módulo tem novas funcionalidades, as funções podem ter nomes exclusivos, como função de midiOutStop do driver de MIDI. Se o módulo é semelhante, mas não o mesmo que outro módulo, use o nome da função para distinguir entre módulos. Por exemplo, as funções de CreateWindow e CreateWindowEx no Windows criar janelas, mas CreateWindowEx também permite que um aplicativo especificar outros atributos. O objetivo é fornecer os programadores familiarizados com módulos existentes uma base pela qual a aprender rapidamente a nova interface. Prefixo nomes de função com o nome do módulo (abreviado, se necessário). Isso permite que a documentação para classificar em ordem alfabética, nomes de função mantendo funções relacionadas juntas. Mais importante, ele permite a facilitar a identificação do módulo ao qual pertence uma função. Nome de definiçãoPrefixo os nomes de constantes e estruturas de dados com o nome do módulo (abreviado, se necessário). Por exemplo, STRM_SEEK é uma constante no grupo STRM. Isso permite que facilitar a identificação do módulo ao qual pertence uma estrutura de dados ou definição.Como outro exemplo, MIDIOUTCAPS é a estrutura de recursos do dispositivo para o módulo de saída de MIDI. Usando a convenção de nomenclatura desenvolvido aqui e simetria (discutido detalhadamente na segunda parte deste artigo), o módulo de entrada de MIDI estrutura de recursos do dispositivo deve ser chamado MIDIINCAPS. Use prefixos adicionais conforme apropriado para identificar o uso da definição. Por exemplo, MOERR_NODRIVER é uma definição no módulo de saída de MIDI para descrever um erro, que nenhum driver apresentam. Registrando drivers com o móduloA maioria dos sistemas desenvolvidos por grupo multimídia permitem que os drivers de dispositivo para ser instalado pelo fabricante original do equipamento (OEM) ou até mesmo pelo usuário final (concedida a um programa de instalação apropriado). Existem duas maneiras principais para esses drivers para se comunicar com o módulo principal.A primeira é colocar uma entrada no arquivo System.ini. Quando o módulo pai for carregado, ele carrega o driver do filho e inicia a comunicação com o filho. Outro método é para o driver filho chamar o pai ao se registrar como um cliente. Este segundo método presume que há um método adequado disponível para carregar o filho. O Windows fornece esse mecanismo. Exigir um driver para se registrar com o módulo manipulador fornece quatro benefícios:
Simetria de nomes de função
Simetria de convenções de nomeação
Design para implementação em etapasA maioria das implementações de qualquer tamanho deve ser feito em etapas incrementais de funcionalidade. Mais e mais recursos são adicionados os módulos até que todo o design é implementado completamente. Para módulos grandes ou complexos, esse processo pode ocorrer nos vários anos. No entanto, o design original deve prever a funcionalidade completa, final, não apenas as metas de curto prazo. Por exemplo, mesmo que permitir que vários usuários de um módulo não será implementada na primeira fase, esse recurso deve ser criado na API do. Dessa forma, o impacto sobre os usuários do módulo será ser mínimo uma vez concluída a implementação.Evite colocar limites arbitrários na funcionalidade devido aos detalhes de implementação atual. Por exemplo, mesmo se somente um usuário pode ter um recurso alocado hoje, isso pode não ser true. Especificamente, a função abrir deve retornar um identificador para o recurso que é então passado para funções que manipulam o recurso. No futuro, quando vários usuários do recurso é implementado, não será necessário alterar outras funções ou outros aplicativos. Em um sistema com base em mensagem, funções devem retornar um código de "mensagem não reconhecida" para mensagens inesperadas que é diferente do código "Ocorreu um erro". Em seguida, quando uma versão futura do driver contém funcionalidade estendida, um aplicativo pode determinar se a versão instalada do driver oferece suporte aos novos recursos. Caso contrário, o aplicativo pode executar ação alternativa apropriada. Um projeto criado para ser criado em fases também definiu etapas de andamento. Isso torna muito mais fácil controlar o progresso enquanto o módulo está em construção. Criar um módulo em fases também torna mais fácil verificar que o módulo foi criado corretamente. Teste recebe incrementos de funcionalidade em vez do produto inteiro para o fim do ciclo de desenvolvimento. Relatório de errosUma chamada de função pode falhar por várias razões. É melhor se a chamada pode retornar a causa específica do erro ao observar que a chamada falhou. Funções que retornam outros dados, estrutura ou uma alça de causar problemas de determinado porque há um conjunto limitado de valores que sempre são inválidos.Três abordagens para relatório de erros são:
Buffers fornecidos pelo clienteÉ desejável para o aplicativo cliente fornecer todos os buffers que irá acessar. Se um módulo de sistema aloca e mantém buffers, muitos problemas de implementação podem ocorrer quando um buffer é tornado visível para o aplicativo cliente. Três vantagens de buffers fornecidos pelo cliente são:
A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 67692
(http://support.microsoft.com/kb/67692/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesTraduções deste artigo |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar para o início