Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La méthode IStiUSD ::Initialize d’un minidriver image continue initialise une instance de l’objet COM qui définit l’interface IStiUSD.
Syntaxe
HRESULT Initialize(
PSTIDEVICECONTROL pHelDcb,
DWORD dwStiVersion,
HKEY hParametersKey
);
Paramètres
pHelDcb
Pointeur fourni par l’appelant vers l’interface COM IStiDeviceControl.
dwStiVersion
Numéro de version STI fourni par l’appelant. Cette valeur est définie par STI_VERSION dans Sti.h.
hParametersKey
Handle fourni par l’appelant à la clé de Registre sous laquelle les informations spécifiques à l’appareil doivent être stockées.
Valeur de retour
Si l’opération réussit, la méthode doit retourner S_OK. Sinon, il doit retourner l’un des codes d’erreur préfixés STIERR définis dans stierr.h.
Remarques
La méthode IStiUSD ::Initialize, exportée par des minidrivers toujours image, est la première méthode IStiUSD appelée après le chargement d’un minidriver. La méthode doit initialiser le pilote et le périphérique.
La méthode doit stocker l’interface COM IStiDeviceControl reçue pointeur et appeler la méthode IStiDeviceControl ::AddRef de cette interface.
Pour les appareils connectés aux ports dédiés (tels que les appareils SCSI), la méthode crée généralement un chemin d’accès en lecture/écriture à l’appareil en appelant CreateFile (décrit dans la documentation du Kit de développement logiciel (SDK) Microsoft Windows), à l’aide d’un nom de port d’appareil obtenu en appelant IStiDeviceControl ::GetMyDevicePortName.
Pour les appareils sur des ports partagés (tels que les appareils de port série), l’ouverture du port dans la méthode IStiUSD ::Initialize n’est pas recommandée, car l’accès à d’autres appareils sur le port sera verrouillé. Pour ces appareils, il est préférable d’appeler createFile à partir de la méthode IStiUSD ::LockDevice.
Si l’appareil ouvert est un pour lequel plusieurs appels à CreateFile ne sont pas autorisés (tels que les appareils connectés à un port série), le pilote n’appelle généralement pas CreateFile, sauf si l’appelant a ouvert l’appareil pour les transferts de données, comme illustré dans le CodeExamplesuivant.
La méthode IStiUSD ::Initialize doit valider le numéro de version STI reçu et retourner une erreur si la version reçue ne correspond pas à la version du pilote.
L’exemple suivant ouvre un port d’appareil uniquement si un appel à IStiDeviceControl ::GetMyDeviceOpenMode indique qu’une application a ouvert l’appareil pour les transferts de données. Ce code peut être utilisé pour un appareil qui ne peut pas prendre en charge plusieurs appels CreateFile, tels qu’un appareil de port série.
Exemples
STDMETHODIMP MyUSDDevice::Initialize(
PSTIDEVICECONTROL pDcb,
DWORD dwStiVersion,
HKEY hParametersKey)
{
HRESULT hres = STI_OK;
DWORD dwMode = 0;
if (!pDcb)
{
hres = STIERR_INVALID_PARAM;
}
else
{
// Store IStiDeviceControl object pointer
m_pDcb = pDcb;
m_pDcb->AddRef();
// If we opened in data mode - should open device right now,
// otherwise postpone open till lock
m_pDcb->GetMyDeviceOpenMode(&dwMode);
if (dwMode & STI_DEVICE_CREATE_DATA)
hres = OpenMyPort();
}
return hres;
}
Exigences
| Exigence | Valeur |
|---|---|
| plateforme cible | Bureau |
| d’en-tête | stiusd.h (include Stiusd.h) |