UcmConnectorCreate, fonction (ucmmanager.h)
Crée un objet connecteur.
Syntaxe
NTSTATUS UcmConnectorCreate(
[in] WDFDEVICE WdfDevice,
[in] PUCM_CONNECTOR_CONFIG Config,
[in] PWDF_OBJECT_ATTRIBUTES Attributes,
[out] UCMCONNECTOR *Connector
);
Paramètres
[in] WdfDevice
Handle d’un objet d’appareil d’infrastructure que le pilote client a reçu lors de l’appel précédent à WdfDeviceCreate.
[in] Config
Pointeur vers une structure de UCM_CONNECTOR_CONFIG fournie par l’appelant qui est initialisée en appelant UCM_CONNECTOR_CONFIG_INIT.
[in] Attributes
Pointeur vers une structure de WDF_OBJECT_ATTRIBUTES fournie par l’appelant qui contient des attributs pour le nouvel objet connecteur. Ce paramètre est facultatif et peut être WDF_NO_OBJECT_ATTRIBUTES.
[out] Connector
Pointeur vers un emplacement qui reçoit un handle vers le nouvel objet connecteur.
Valeur retournée
UcmConnectorCreate retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner une valeur NTSTATUS appropriée.
Remarques
Si le pilote client spécifie un identificateur de connecteur déjà utilisé, la méthode échoue avec STATUS_INVALID_PARAMETER code d’erreur.
Si le connecteur Type-C est spécifié comme étant un port Dual-Role (DRP), le pilote client doit inscrire son rappel d’événement EVT_UCM_CONNECTOR_SET_DATA_ROLE .
L’objet parent est WdfDevice. Vous pouvez définir le membre ParentObject de WDF_OBJECT_ATTRIBUTES sur NULL ou le handle WDFDEVICE. L’objet connector est supprimé lorsque l’objet WDFDEVICE parent est supprimé.
Un emplacement approprié pour qu’un pilote client UCM appelle UcmConnectorCreate se trouve dans EvtDevicePrepareHardware ou EvtDeviceD0Entry. À l’inverse, le pilote doit libérer le handle UCMCONNECTOR dans EvtDeviceReleaseHardware ou EvtDeviceD0Exit.
Exemples
Cet exemple de code montre comment créer un connecteur Type-C prenant en charge pdd.
UCMCONNECTOR Connector;
UCM_CONNECTOR_CONFIG_INIT(&connCfg, 0);
UCM_CONNECTOR_TYPE_C_CONFIG_INIT(
&connCfg.TypeCConfig,
UcmTypeCOperatingModeDrp,
UcmTypeCCurrentDefaultUsb | UcmTypeCCurrent1500mA | UcmTypeCCurrent3000mA);
connCfg.EvtSetDataRole = EvtSetDataRole;
UCM_CONNECTOR_PD_CONFIG_INIT(&connCfg.PdConfig, UcmPowerRoleSink | UcmPowerRoleSource);
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attr, CONNECTOR_CONTEXT);
status = UcmConnectorCreate(Device, &connCfg, &attr, &Connector);
if (!NT_SUCCESS(status))
{
TRACE_ERROR(
"UcmConnectorCreate failed with %!STATUS!.",
status);
goto Exit;
}
TRACE_INFO("UcmConnectorCreate() succeeded.");
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 |
Serveur minimal pris en charge | Windows Server 2016 |
Plateforme cible | Windows |
Version KMDF minimale | 1.15 |
Version UMDF minimale | 2.15 |
En-tête | ucmmanager.h (inclure Ucmcx.h) |
Bibliothèque | UcmCxstub.lib |
IRQL | PASSIVE_LEVEL |