Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[Manipulando Drivers #1]Driver de Som


AceStryker
 Compartilhar

Posts Recomendados

Introdução

Olá a todos!Hoje será meu primeiro tutorial de como manipular drivers do windows, uma coisa muito simples(geralmente o windows te da tudo na mão), e que não se encontra muito na internet...Iremos usar o Media Control Interface(MCI), ele funciona por enviar/receber comandos, ou seja, você irá conversar com o driver...Para mais informações sobre MCI

É necessário se cadastrar para acessar o conteúdo.
.

 

Primeiras Impressões

Neste tutorial usaremos as funções mais simples desta ferramenta, que será Play, Pause.Se você quiser aperfeiçoar seus conhecimentos no assunto, sugiro que

É necessário se cadastrar para acessar o conteúdo.

 

As APIs que usaremos será basicamente a mciSendCommand().Segundo o MSDN:

The mciSendCommand function sends a command message to the specified MCI device.

 

Syntax

MCIERROR mciSendCommand(

MCIDEVICEID IDDevice,

UINT uMsg,

DWORD_PTR fdwCommand,

DWORD_PTR dwParam

);

 

Parameters

 

IDDevice

Device identifier of the MCI device that is to receive the command message. This parameter is not used with the MCI_OPEN command message.

 

uMsg

Command message. For a list, see Multimedia Commands.

 

fdwCommand

Flags for the command message.

 

dwParam

Pointer to a structure that contains parameters for the command message.

 

Return value

Returns zero if successful or an error otherwise. The low-order word of the returned DWORD value contains the error return value. If the error is device-specific, the high-order word of the return value is the driver identifier; otherwise, the high-order word is zero. For a list of possible return values, see MCIERR Return Values.

To retrieve a text description of return values, pass the return value to the mciGetErrorString function.

 

Remarks

Error values that are returned when a device is being opened are listed with the MCI_OPEN command message. In ***ition to the MCI_OPEN error return values, this function can return the values listed in MCIERR Return Values.

Use MCI_OPEN to obtain the device identifier specified by the IDDevice parameter.

Para tópico completo

É necessário se cadastrar para acessar o conteúdo.

.

 

Mãos a Obra

 

Abra seu WinASM, agora vá como nas imagens:

knHfY.png

0uZnm.png

 

Pronto, agora precisamos usar 2 structures para se comunicar com o driver de som:

MCI_OPEN_PARMS

typedef struct {

DWORD_PTR dwCallback;

MCIDEVICEID wDeviceID;

LPCTSTR lpstrDeviceType;

LPCTSTR lpstrElementName;

LPCTSTR lpstrAlias;

} MCI_OPEN_PARMS;

 

Para mais informações:

É necessário se cadastrar para acessar o conteúdo.

 

e MCI_PLAY_PARMS

typedef struct {

DWORD_PTR dwCallback;

DWORD dwFrom;

DWORD dwTo;

 

} MCI_PLAY_PARMS;

 

Para mais informações:

É necessário se cadastrar para acessar o conteúdo.

 

Então, vamos adicionar no base.inc

É necessário se cadastrar para acessar o conteúdo.

 

Agora vamos controlar o driver de verdade, vá em base.asm e comece a digitar:

 

É necessário se cadastrar para acessar o conteúdo.

 

Sequencer:

O Sequencer é o valor que vamos usar para executar o MIDI, caso queria usar outro, sugiro que

É necessário se cadastrar para acessar o conteúdo.

 

Teste, o driver já terá reproduzido sua música, ;)!! Agora vamos configurar o pause:

É necessário se cadastrar para acessar o conteúdo.

 

E pronto!Terminamos tudinho!Espero que tenham gostado!

 

Projeto Pronto

 

Download:

É necessário se cadastrar para acessar o conteúdo.

 

Scan:

É necessário se cadastrar para acessar o conteúdo.

 

 

Créditos

AceStryker

MSDN pelas estruturas e explicações de funções

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.