Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die IStiUSD::Initialize Methode eines Stillbild-Minidrivers initialisiert eine Instanz des COM-Objekts, die die IStiUSD- Schnittstelle definiert.
Syntax
HRESULT Initialize(
PSTIDEVICECONTROL pHelDcb,
DWORD dwStiVersion,
HKEY hParametersKey
);
Parameter
pHelDcb
Vom Aufrufer bereitgestellter Zeiger auf die IStiDeviceControl COM Interface.
dwStiVersion
Vom Anrufer bereitgestellte STI-Versionsnummer. Dieser Wert wird durch STI_VERSION in Sti.h-definiert.
hParametersKey
Vom Aufrufer bereitgestelltes Handle für den Registrierungsschlüssel, unter dem gerätespezifische Informationen gespeichert werden sollen.
Rückgabewert
Wenn der Vorgang erfolgreich ist, sollte die Methode S_OK zurückgeben. Andernfalls sollte eine der STIERR-präfixierten Fehlercodes zurückgegeben werden, die in stierr.hdefiniert sind.
Bemerkungen
Die IStiUSD::Initialize-Methode, die von immer noch Bild-Minidrivern exportiert wird, ist die erste IStiUSD--Methode, die aufgerufen wird, nachdem ein Minidriver geladen wurde. Die Methode muss den Treiber und das Gerät initialisieren.
Die Methode sollte die empfangene IStiDeviceControl COM-Schnittstelle Zeiger speichern, und sie sollte die IStiDeviceControl::AddRef-Methode aufrufen.
Für Geräte, die mit dedizierten Ports (z. B. SCSI-Geräten) verbunden sind, erstellt die Methode in der Regel einen Lese-/Schreibpfad zum Gerät, indem sie CreateFile- aufruft (in der Dokumentation des Microsoft Windows SDK beschrieben), mithilfe eines Geräteportnamens, der durch Aufrufen von IStiDeviceControl::GetMyDevicePortNameabgerufen wird.
Für Geräte auf gemeinsam genutzten Ports (z. B. serielle Portgeräte) wird das Öffnen des Ports im IStiUSD::Initialize Methode nicht empfohlen, da der Zugriff auf andere Geräte auf dem Port gesperrt wird. Für solche Geräte ist es besser, CreateFile- innerhalb der IStiUSD::LockDevice-Methode aufzurufen.
Wenn das geöffnete Gerät einer ist, für den mehrere Aufrufe an CreateFile- nicht zulässig sind (z. B. Geräte, die mit einem seriellen Anschluss verbunden sind), ruft der Treiber in der Regel nicht CreateFile auf, es sei denn, der Aufrufer hat das Gerät für Datenübertragungen geöffnet, wie im folgenden CodeExampledargestellt.
Die IStiUSD::Initialize Methode sollte die empfangene STI-Versionsnummer überprüfen und einen Fehler zurückgeben, wenn die empfangene Version nicht mit der Version des Treibers übereinstimmt.
Im folgenden Beispiel wird ein Geräteport nur geöffnet, wenn ein Aufruf von IStiDeviceControl::GetMyDeviceOpenMode angibt, dass eine Anwendung das Gerät für Datenübertragungen geöffnet hat. Dieser Code kann für ein Gerät verwendet werden, das nicht mehrere CreateFile- Aufrufe unterstützt, z. B. ein serielles Portgerät.
Beispiele
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;
}
Anforderungen
| Anforderung | Wert |
|---|---|
| Zielplattform- | Desktop |
| Header- | stiusd.h (einschließlich Stiusd.h) |