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)