Función SetupDiSetClassPropertyExW (setupapi.h)

La función SetupDiSetClassPropertyEx establece una propiedad de dispositivo para una clase de configuración de dispositivo o una clase de interfaz de dispositivo en un equipo local o remoto.

Sintaxis

WINSETUPAPI BOOL SetupDiSetClassPropertyExW(
  [in]           const GUID       *ClassGuid,
  [in]           const DEVPROPKEY *PropertyKey,
  [in]           DEVPROPTYPE      PropertyType,
  [in, optional] const PBYTE      PropertyBuffer,
  [in]           DWORD            PropertyBufferSize,
  [in]           DWORD            Flags,
  [in, optional] PCWSTR           MachineName,
                 PVOID            Reserved
);

Parámetros

[in] ClassGuid

Puntero a un GUID que identifica la clase de configuración del dispositivo o la clase de interfaz de dispositivo para la que se va a establecer una propiedad de dispositivo. Para obtener información sobre cómo especificar el tipo de clase, vea el parámetro Flags .

[in] PropertyKey

Puntero a una estructura DEVPROPKEY que representa la clave de propiedad del dispositivo de la propiedad de clase de dispositivo que se va a establecer.

[in] PropertyType

Valor con tipo DEVPROPTYPE que representa el identificador property-data-type para la propiedad de clase. Para obtener más información sobre el identificador property-data-type, vea la sección Comentarios más adelante en este tema.

[in, optional] PropertyBuffer

Puntero a un búfer que contiene el valor de la propiedad de clase. Si se elimina la propiedad o el valor de la propiedad, este puntero debe establecerse en NULL y PropertyBufferSize debe establecerse en cero. Para obtener más información sobre los requisitos de valor de propiedad, vea la sección Comentarios más adelante en este tema.

[in] PropertyBufferSize

Tamaño, en bytes, del búfer PropertyBuffer . El tamaño del búfer de propiedades debe ser coherente con el identificador property-data-type proporcionado por PropertyType. Si PropertyBuffer está establecido en NULL, PropertyBufferSize debe establecerse en cero.

[in] Flags

Uno de los siguientes valores, que especifica si la clase es una clase de configuración de dispositivo o una clase de interfaz de dispositivo:

DICLASSPROP_INSTALLER

ClassGuid especifica una clase de configuración de dispositivo. Esta marca no se puede usar con DICLASSPROP_INTERFACE.

DICLASSPROP_INTERFACE

ClassGuid especifica una clase de interfaz de dispositivo. Esta marca no se puede usar con DICLASSPROP_INSTALLER.

[in, optional] MachineName

Puntero a una cadena Unicode terminada en NULL que contiene el nombre UNC, incluido el prefijo "\" de un equipo. Este puntero se puede establecer en NULL. Si el puntero es NULL, SetupDiSetClassPropertyEx establece la propiedad de clase para una clase instalada en el equipo local.

Precaución

No se admite el uso de esta función para acceder a máquinas remotas a partir de Windows 8 y Windows Server 2012, ya que esta funcionalidad se ha quitado.

Reserved

Este parámetro debe establecerse en NULL.

Valor devuelto

SetupDiSetClassPropertyEx devuelve TRUE si se realiza correctamente. De lo contrario, devuelve FALSE y el error registrado se puede recuperar llamando a GetLastError.

En la tabla siguiente se incluyen algunos de los códigos de error más comunes que esta función podría registrar.

Código devuelto Descripción
ERROR_INVALID_FLAGS
El valor de Flags no es válido.
ERROR_INVALID_CLASS
La clase de instalación del dispositivo especificada por ClassGuid no es válida. Este error solo puede producirse si se especifica la marca DICLASSPROP_INSTALLER.
ERROR_INVALID_REFERENCE_STRING
La cadena de referencia de la interfaz de dispositivo no es válida. Este error solo puede producirse si se especifica la marca DICLASSPROP_INTERFACE.
ERROR_INVALID_REG_PROPERTY
La clave de propiedad proporcionada por PropertyKey no es válida.
ERROR_INVALID_DATA
Un valor de datos interno no especificado no era válido. Este error se puede registrar si el valor ClassGuid no es un GUID válido o el valor de propiedad no coincide con el tipo de propiedad especificado por PropertyType.
ERROR_INVALID_USER_BUFFER
Un búfer de usuario no es válido. Una posibilidad es que PropertyBuffer sea NULL y PropertyBufferSize no sea cero.
ERROR_INVALID_MACHINENAME
El nombre de equipo especificado por MachineName no es válido.
ERROR_NO_SUCH_INTERFACE_CLASS
La clase de interfaz de dispositivo especificada por ClassGuid no existe. Este error solo puede producirse si se especifica la marca DICLASSPROP_INTERFACE.
ERROR_INSUFFICIENT_BUFFER
Un búfer de datos interno que se pasó a una llamada del sistema era demasiado pequeño.
ERROR_NOT_ENOUGH_MEMORY
No había suficiente memoria del sistema disponible para completar la operación.
ERROR_NOT_FOUND
No se encontró un elemento no especificado. Una posibilidad es que la propiedad que se va a eliminar no exista.
ERROR_ACCESS_DENIED
El autor de la llamada no tiene privilegios de administrador.

Comentarios

SetupDiSetClassPropertyEx forma parte del modelo de propiedades de dispositivo unificado.

SetupAPI solo admite una versión Unicode de SetupDiSetClassPropertyEx.

Un autor de llamada de SetupDiSetClassPropertyEx debe ser miembro del grupo Administradores para establecer una propiedad de interfaz de dispositivo.

SetupDiSetClassPropertyEx exige requisitos en el identificador property-data-type y el valor de propiedad.

Para obtener las claves de propiedad del dispositivo que representan las propiedades del dispositivo que se establecen para una clase de dispositivo en un equipo remoto, llame a SetupDiGetClassPropertyKeysEx.

Para recuperar una propiedad de clase de dispositivo en un equipo local, llame a SetupDiGetClassPropertyy, para recuperar una propiedad de clase de dispositivo en un equipo remoto, llame a SetupDiGetClassPropertyEx.

Para establecer una propiedad de clase de dispositivo en un equipo local, llame a SetupDiSetClassProperty.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de Windows.
Plataforma de destino Escritorio
Encabezado setupapi.h (incluya Setupapi.h)
Library Setupapi.lib

Consulte también

SetupDiGetClassProperty

SetupDiGetClassPropertyEx

SetupDiGetClassPropertyKeysEx

SetupDiSetClassProperty