IDirectInputEffectDriver::D ownloadEffect, méthode (dinputd.h)

La méthode IDirectInputEffectDriver::D ownloadEffect envoie un effet à l’appareil.

Syntaxe

HRESULT DownloadEffect(
  DWORD       unnamedParam1,
  DWORD       unnamedParam2,
  LPDWORD     unnamedParam3,
  LPCDIEFFECT unnamedParam4,
  DWORD       unnamedParam5
);

Paramètres

unnamedParam1

Spécifie le numéro de la manette de jeu externe en cours d’adresse.

unnamedParam2

Spécifie le membre dwEffectId de la structure DIEFFECTATTRIBUTES associée à l’effet que l’application tente de créer. La structure DIEFFECTATTRIBUTES est stockée dans le Registre sous la clé de Registre d’effet correspondante et peut être n’importe quelle valeur 32 bits. DirectInput transmet la valeur 32 bits au pilote sans interprétation.

unnamedParam3

Lors de l’entrée, ce paramètre est un pointeur vers le handle de l’effet téléchargé. Si ce paramètre pointe vers un zéro, un nouvel effet est téléchargé. À la sortie, ce paramètre est un pointeur vers un DWORD qui contient le nouveau handle d’effet. En cas d’échec, le DWORD pointé par ce paramètre est défini sur zéro si l’effet est perdu, ou laissé seul si l’effet est toujours valide avec ses anciens paramètres. Notez que zéro n’est jamais un handle d’effet valide.

unnamedParam4

Pointe vers une structure DIEFFECT qui décrit le nouvel effet. Les valeurs de l’axe et du bouton ont été converties en identificateurs d’objet, qui se composent des éléments suivants :

Spécificateur d’un type :

DIDFT_RELAXIS
DIDFT_ABSAXIS
DIDFT_PSHBUTTON
DIDFT_TGLBUTTON
DIDFT_POV

Un identificateur instance :

DIDFT_MAKEINSTANCE(n)

Les autres bits de l’identificateur d’objet sont réservés et doivent être ignorés.

Par exemple, 0x02000104 = DIDFT_PSHBUTTON | DIDFT_MAKEINSTANCE(1) | autres choses

Cette valeur indique que l’effet utilise le bouton 1.

unnamedParam5

Spécifie les parties des informations d’effet qui ont changé par rapport à l’effet déjà appliqué à l’appareil. Ces informations sont transmises aux pilotes pour permettre l’optimisation de la modification d’effet. Si un effet est en cours de modification, un pilote peut être en mesure de mettre à jour l’effet dans sa position d’origine et de transmettre à l’appareil uniquement les informations qui ont changé. Toutefois, les pilotes ne sont pas nécessaires pour implémenter cette optimisation. Tous les membres de la structure DIEFFECT pointés par le paramètre peff sont valides, et un pilote peut choisir simplement de mettre à jour tous les paramètres de l’effet à chaque téléchargement. (Pour plus d’informations sur la structure DIEFFECT, consultez la section DirectInput du Kit de développement logiciel (SDK) DirectX autonome.)

Ce paramètre peut être égal à zéro, un ou plusieurs des éléments suivants :

DIEP_DURATION

Indique que le membre dwDuration de la structure DIEFFECT est en cours de téléchargement pour la première fois ou a changé depuis son dernier téléchargement.

DIEP_SAMPLEPERIOD

Indique que le membre dwSamplePeriod de la structure DIEFFECT est en cours de téléchargement pour la première fois ou a changé depuis son dernier téléchargement.

DIEP_GAIN

Indique que le membre dwGain de la structure DIEFFECT est en cours de téléchargement pour la première fois ou a changé depuis son dernier téléchargement.

DIEP_TRIGGERBUTTON

Indique que le membre dwTriggerButton de la structure DIEFFECT est en cours de téléchargement pour la première fois ou a changé depuis son dernier téléchargement.

DIEP_TRIGGERREPEATINTERVAL

Indique que le membre dwTriggerRepeatInterval de la structure DIEFFECT est en cours de téléchargement pour la première fois ou a changé depuis son dernier téléchargement.

DIEP_AXES

Indique que les membres cAxes et rgdwAxes de la structure DIEFFECT sont en cours de téléchargement pour la première fois ou ont changé depuis leur dernier téléchargement.

DIEP_DIRECTION

Indique que les membres cAxes et rglDirection de la structure DIEFFECT sont en cours de téléchargement pour la première fois ou ont changé depuis leur dernier téléchargement. (Le membre dwFlags de la structure DIEFFECT spécifie, par DIEFF_CARTESIAN ou DIEFF_POLAR, le système de coordonnées dans lequel les valeurs doivent être interprétées.)

DIEP_ENVELOPE

Indique que le membre lpEnvelope de la structure DIEFFECT est en cours de téléchargement pour la première fois ou a changé depuis son dernier téléchargement. Si cet indicateur est défini et que le membre lpEnvelope est un pointeur NULL , l’effet est créé sans enveloppe ou l’enveloppe existante est supprimée.

DIEP_TYPESPECIFICPARAMS

Indique que les membres cbTypeSpecificParams et lpTypeSpecificParams de la structure DIEFFECT sont en cours de téléchargement pour la première fois ou ont changé depuis leur dernier téléchargement.

DIEP_START

Indique que l’effet doit être redémarré à partir du début après la mise à jour des paramètres de l’effet. Notez que l’indicateur DIEP_NODOWNLOAD remplace l’indicateur DIEP_START.

DIEP_NORESTART

Si cet indicateur n’est pas spécifié, le pilote de périphérique d’effet est autorisé à redémarrer l’effet si cela est nécessaire pour modifier les paramètres spécifiés. Notez que les indicateurs DIEP_NODOWNLOAD et DIEP_START remplacent cet indicateur.

DIEP_NODOWNLOAD

Supprime le téléchargement automatique qui est normalement effectué après la mise à jour des paramètres. Si cet indicateur est défini, le pilote doit valider les paramètres sans effectuer de téléchargement réel.

Valeur retournée

Retourne S_OK en cas de réussite, ou une valeur d’erreur dans le cas contraire.

Spécifications

   
Plateforme cible Desktop (Expérience utilisateur)
En-tête dinputd.h (inclure Dinputd.h)