SwDeviceCreate-Funktion (swdevice.h)
Initiiert die Enumeration eines Softwaregeräts.
Syntax
HRESULT SwDeviceCreate(
[in] PCWSTR pszEnumeratorName,
[in] PCWSTR pszParentDeviceInstance,
[in] const SW_DEVICE_CREATE_INFO *pCreateInfo,
[in] ULONG cPropertyCount,
[in, optional] const DEVPROPERTY *pProperties,
[in] SW_DEVICE_CREATE_CALLBACK pCallback,
[in, optional] PVOID pContext,
[out] PHSWDEVICE phSwDevice
);
Parameter
[in] pszEnumeratorName
Eine Zeichenfolge, die den Enumerator des Softwaregeräts benennt. Wählen Sie einen Namen aus, der die Komponente darstellt, die die Geräte aufzählt.
[in] pszParentDeviceInstance
Eine Zeichenfolge, die das Gerät instance ID des Geräts angibt, das das übergeordnete Gerät des Softwaregeräts ist.
Dies kann HTREE\ROOT\0 sein, es wird jedoch empfohlen, untergeordnete Elemente des Stammgeräts auf ein Minimum zu beschränken. Außerdem wird empfohlen, dass das bevorzugte übergeordnete Element eines Softwaregeräts ein echtes Gerät ist, für das das Softwaregerät die Funktionalität erweitert. Erstellen Sie in Situationen, in denen ein Softwaregerät nicht über ein solches natürliches übergeordnetes Element verfügt, ein Gerät als untergeordnetes Element des Stammes, das alle Softwaregeräte sammeln kann, die eine Komponente aufzählt. enumerieren Sie dann die tatsächlichen Softwaregeräte als untergeordnete Elemente dieses Gerätegruppierungsknotens. Dadurch bleiben die untergeordneten Elemente des Stammgeräts auf einer verwaltbaren Zahl.
[in] pCreateInfo
Ein Zeiger auf eine SW_DEVICE_CREATE_INFO-Struktur , die Informationen beschreibt, die PnP zum Erstellen des Geräts verwendet.
[in] cPropertyCount
Die Anzahl der DEVPROPERTY-Strukturen im pProperties-Array .
[in, optional] pProperties
Ein optionales Array von DEVPROPERTY-Strukturen . Diese Eigenschaften werden auf dem Gerät festgelegt, nachdem es erstellt wurde, aber bevor eine Benachrichtigung gesendet wird, dass das Gerät erstellt wurde. Weitere Informationen finden Sie unter Hinweise. Dieser Zeiger kann NULL sein.
[in] pCallback
Die SW_DEVICE_CREATE_CALLBACK Rückruffunktion, die das Betriebssystem aufruft, nachdem PnP das Gerät aufgezählt hat.
[in, optional] pContext
Ein optionaler Clientkontext, den das Betriebssystem an die Rückruffunktion übergibt. Dieser Zeiger kann NULL sein.
[out] phSwDevice
Ein Zeiger auf eine Variable, die das HSWDEVICE-Handle empfängt, das das Gerät darstellt. Rufen Sie SwDeviceClose auf, um dieses Handle zu schließen, nachdem die Client-App PnP das Gerät entfernen möchte.
DECLARE_HANDLE(HSWDEVICE);
typedef HSWDEVICE *PHSWDEVICE;
Rückgabewert
S_OK wird zurückgegeben, wenn die Geräteenumeration erfolgreich initiiert wurde. Dies bedeutet nicht, dass das Gerät erfolgreich aufgezählt wurde. Überprüfen Sie den CreateResult-Parameter der SW_DEVICE_CREATE_CALLBACK Rückruffunktion, um festzustellen, ob das Gerät erfolgreich aufgezählt wurde.
Hinweise
SwDeviceCreate gibt ein Handle zurück, das das Gerät darstellt. Nachdem dieses Handle geschlossen wurde, entfernt PnP das Gerät.
Der aufrufende Prozess muss über Administratorzugriff verfügen, um die Enumeration eines Softwaregeräts zu initiieren.
PnP bildet das Gerät instance ID eines Softwaregeräts als "SWD< pszEnumeratorName>< pszInstanceId>", aber diese Zeichenfolge kann sich ändern, oder PnP könnte den Namen schmücken. Rufen Sie immer die Geräte-instance-ID aus der Rückruffunktion ab.
Es gibt einen geringfügigen Unterschied zwischen Eigenschaften, die als Teil eines SwDeviceCreate-Aufrufs festgelegt werden, und Eigenschaften, die später durch Aufrufen von SwDevicePropertySet festgelegt werden. Eigenschaften, die als Teil von SwDeviceCreate festgelegt werden, werden im Arbeitsspeicher gespeichert. Wenn das Gerät deinstalliert wird oder ein NULL-Treiber die Eigenschaftenspeicher löscht, werden diese Eigenschaften von der Softwaregeräte-API-Funktion erneut geschrieben, wenn PnP die Geräte erneut aufzählt. Dies alles ist für den Client transparent. Eigenschaften, die mit SwDevicePropertySet nach der Enumeration festgelegt werden, bleiben nicht im Arbeitsspeicher erhalten. Wenn Sie jedoch eine Eigenschaft mithilfe von SwDeviceCreate festlegen, können Sie den Wert mit SwDevicePropertySet aktualisieren, und dieses Update wird sowohl auf den Wert im Arbeitsspeicher als auch auf den persistenten Speicher angewendet.
Es wird empfohlen, nach Möglichkeit alle Eigenschaften im Rahmen des Aufrufs von SwDeviceCreate anzugeben und diese Eigenschaften für jeden Aufruf von SwDeviceCreate anzugeben.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 8 |
Unterstützte Mindestversion (Server) | Windows Server 2012 |
Zielplattform | Universell |
Header | swdevice.h |
Bibliothek | Swdevice.lib; OneCoreUAP.lib auf Windows 10 |
DLL | Cfgmgr32.dll |