Método IDirectInputEffectDriver::D ownloadEffect (dinputd.h)
O método IDirectInputEffectDriver::D ownloadEffect envia um efeito para o dispositivo.
Sintaxe
HRESULT DownloadEffect(
DWORD unnamedParam1,
DWORD unnamedParam2,
LPDWORD unnamedParam3,
LPCDIEFFECT unnamedParam4,
DWORD unnamedParam5
);
Parâmetros
unnamedParam1
Especifica o número do joystick externo que está sendo endereçado.
unnamedParam2
Especifica o membro dwEffectId da estrutura DIEFFECTATTRIBUTES associada ao efeito que o aplicativo está tentando criar. A estrutura DIEFFECTATTRIBUTES é armazenada no Registro sob a chave do Registro de efeito correspondente e pode ser qualquer valor de 32 bits. DirectInput passa o valor de 32 bits para o driver sem interpretação.
unnamedParam3
Na entrada, esse parâmetro é um ponteiro para o identificador do efeito que está sendo baixado. Se esse parâmetro apontar para um zero, um novo efeito será baixado. Na saída, esse parâmetro é um ponteiro para um DWORD que contém o novo identificador de efeito. Em caso de falha, o DWORD apontado por esse parâmetro será definido como zero se o efeito for perdido ou deixado sozinho se o efeito ainda for válido com seus parâmetros antigos. Observe que zero nunca é um identificador de efeito válido.
unnamedParam4
Aponta para uma estrutura DIEFFECT que descreve o novo efeito. Os valores de eixo e botão foram convertidos em identificadores de objeto, que consistem no seguinte:
Um especificador de tipo:
DIDFT_RELAXIS
DIDFT_ABSAXIS
DIDFT_PSHBUTTON
DIDFT_TGLBUTTON
DIDFT_POV
Um identificador de instância:
DIDFT_MAKEINSTANCE(n)
Outros bits no identificador de objeto são reservados e devem ser ignorados.
Por exemplo, 0x02000104 = DIDFT_PSHBUTTON | DIDFT_MAKEINSTANCE(1) | outras coisas
Esse valor indica que o efeito usa o botão 1.
unnamedParam5
Especifica quais partes das informações de efeito foram alteradas do efeito já aplicado ao dispositivo. Essas informações são passadas aos drivers para permitir a otimização da modificação de efeito. Se um efeito estiver sendo modificado, um driver poderá atualizar o efeito em sua posição original e transmitir para o dispositivo apenas as informações que foram alteradas. No entanto, os drivers não são necessários para implementar essa otimização. Todos os membros na estrutura DIEFFECT apontados pelo parâmetro peff são válidos e um driver pode optar simplesmente por atualizar todos os parâmetros do efeito em cada download. (Para obter informações sobre a estrutura DIEFFECT, consulte a seção DirectInput do SDK autônomo do DirectX.)
Esse parâmetro pode ser zero, um ou mais dos seguintes:
DIEP_DURATION
Indica que o membro dwDuration da estrutura DIEFFECT está sendo baixado pela primeira vez ou foi alterado desde seu último download.
DIEP_SAMPLEPERIOD
Indica que o membro dwSamplePeriod da estrutura DIEFFECT está sendo baixado pela primeira vez ou foi alterado desde o último download.
DIEP_GAIN
Indica que o membro dwGain da estrutura DIEFFECT está sendo baixado pela primeira vez ou foi alterado desde o último download.
DIEP_TRIGGERBUTTON
Indica que o membro dwTriggerButton da estrutura DIEFFECT está sendo baixado pela primeira vez ou foi alterado desde o último download.
DIEP_TRIGGERREPEATINTERVAL
Indica que o membro dwTriggerRepeatInterval da estrutura DIEFFECT está sendo baixado pela primeira vez ou foi alterado desde o último download.
DIEP_AXES
Indica que os membros cAxes e rgdwAxes da estrutura DIEFFECT estão sendo baixados pela primeira vez ou foram alterados desde o último download.
DIEP_DIRECTION
Indica que os membros cAxes e rglDirection da estrutura DIEFFECT estão sendo baixados pela primeira vez ou foram alterados desde o último download. (O membro dwFlags da estrutura DIEFFECT especifica, por meio de DIEFF_CARTESIAN ou DIEFF_POLAR, o sistema de coordenadas no qual os valores devem ser interpretados.)
DIEP_ENVELOPE
Indica que o membro lpEnvelope da estrutura DIEFFECT está sendo baixado pela primeira vez ou foi alterado desde seu último download. Se esse sinalizador estiver definido e o membro lpEnvelope for um ponteiro NULL , o efeito será criado sem envelope ou o envelope existente será excluído.
DIEP_TYPESPECIFICPARAMS
Indica que os membros cbTypeSpecificParams e lpTypeSpecificParams da estrutura DIEFFECT estão sendo baixados pela primeira vez ou foram alterados desde o último download.
DIEP_START
Indica que o efeito deve ser reiniciado desde o início depois que os parâmetros do efeito tiverem sido atualizados. Observe que o sinalizador DIEP_NODOWNLOAD substitui o sinalizador DIEP_START.
DIEP_NORESTART
Se esse sinalizador não for especificado, o driver de dispositivo de efeito terá permissão para reiniciar o efeito se isso for necessário para alterar os parâmetros especificados. Observe que os sinalizadores DIEP_NODOWNLOAD e DIEP_START substituem esse sinalizador.
DIEP_NODOWNLOAD
Suprime o download automático que normalmente é executado depois que os parâmetros são atualizados. Se esse sinalizador for definido, o driver deverá validar parâmetros sem executar um download real.
Valor retornado
Retorna S_OK se tiver êxito; caso contrário, um valor de erro.
Requisitos
Plataforma de Destino | Área de Trabalho |
Cabeçalho | dinputd.h (include Dinputd.h) |