Función SetupDiGetDeviceInterfaceDetailW (setupapi.h)

La función SetupDiGetDeviceInterfaceDetail devuelve detalles sobre una interfaz de dispositivo.

Sintaxis

WINSETUPAPI BOOL SetupDiGetDeviceInterfaceDetailW(
  [in]            HDEVINFO                           DeviceInfoSet,
  [in]            PSP_DEVICE_INTERFACE_DATA          DeviceInterfaceData,
  [out, optional] PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData,
  [in]            DWORD                              DeviceInterfaceDetailDataSize,
  [out, optional] PDWORD                             RequiredSize,
  [out, optional] PSP_DEVINFO_DATA                   DeviceInfoData
);

Parámetros

[in] DeviceInfoSet

Puntero al conjunto de información del dispositivo que contiene la interfaz para la que se van a recuperar los detalles. Este identificador normalmente lo devuelve SetupDiGetClassDevs.

[in] DeviceInterfaceData

Puntero a una estructura de SP_DEVICE_INTERFACE_DATA que especifica la interfaz en DeviceInfoSet para la que se van a recuperar los detalles. Un puntero de este tipo normalmente lo devuelve SetupDiEnumDeviceInterfaces.

[out, optional] DeviceInterfaceDetailData

Puntero a una estructura de SP_DEVICE_INTERFACE_DETAIL_DATA para recibir información sobre la interfaz especificada. Este parámetro es opcional y puede ser NULL. Este parámetro debe ser NULL si DeviceInterfaceDetailSize es cero. Si se especifica este parámetro, el autor de la llamada debe establecer DeviceInterfaceDetailData.cbSize en sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA) antes de llamar a esta función. El miembro cbSize siempre contiene el tamaño de la parte fija de la estructura de datos, no un tamaño que refleje la cadena de longitud variable al final.

[in] DeviceInterfaceDetailDataSize

Tamaño del búfer DeviceInterfaceDetailData . El búfer debe ser al menos (offsetof(SP_DEVICE_INTERFACE_DETAIL_DATA, DevicePath) + sizeof(TCHAR)) bytes, para contener la parte fija de la estructura y un valor NULL único para finalizar una cadena de MULTI_SZ vacía.

Este parámetro debe ser cero si DeviceInterfaceDetailData es NULL.

[out, optional] RequiredSize

Puntero a una variable de tipo DWORD que recibe el tamaño necesario del búfer DeviceInterfaceDetailData . Este tamaño incluye el tamaño de la parte fija de la estructura más el número de bytes necesarios para la cadena de ruta de acceso del dispositivo de longitud variable. Este parámetro es opcional y puede ser NULL.

[out, optional] DeviceInfoData

Puntero a un búfer que recibe información sobre el dispositivo que admite la interfaz solicitada. El llamador debe establecer DeviceInfoData.cbSize en sizeof(SP_DEVINFO_DATA). Este parámetro es opcional y puede ser NULL.

Valor devuelto

SetupDiGetDeviceInterfaceDetail devuelve TRUE si la función se completó sin error. Si la función se completó con un error, se devuelve FALSE y se puede recuperar el código de error llamando a GetLastError.

Comentarios

El uso de esta función para obtener detalles sobre una interfaz suele ser un proceso de dos pasos:

  1. Obtenga el tamaño de búfer necesario. Llame a SetupDiGetDeviceInterfaceDetail con un puntero DeviceInterfaceDetailDataNULL, deviceInterfaceDetailDataSize de cero y una variable RequiredSize válida. En respuesta a esta llamada, esta función devuelve el tamaño de búfer necesario en RequiredSize y produce un error con GetLastError que devuelve ERROR_INSUFFICIENT_BUFFER.
  2. Asigne un búfer de tamaño adecuado y vuelva a llamar a la función para obtener los detalles de la interfaz.
El detalle de la interfaz devuelto por esta función consta de una ruta de acceso del dispositivo que se puede pasar a funciones win32 como CreateFile. No intente analizar el nombre simbólico de la ruta de acceso del dispositivo. La ruta de acceso del dispositivo se puede reutilizar en los inicios del sistema.

SetupDiGetDeviceInterfaceDetail se puede usar para obtener solo DeviceInfoData. Si la interfaz existe pero DeviceInterfaceDetailData es NULL, se produce un error en esta función, GetLastError devuelve ERROR_INSUFFICIENT_BUFFER y la estructura DeviceInfoData se rellena con información sobre el dispositivo que expone la interfaz.

Nota

El encabezado setupapi.h define SetupDiGetDeviceInterfaceDetail como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Microsoft Windows 2000 y versiones posteriores de Windows.
Plataforma de destino Escritorio
Encabezado setupapi.h (incluya Setupapi.h)
Library Setupapi.lib
Conjunto de API ext-ms-win-setupapi-classinstallers-l1-1-2 (introducido en Windows 10, versión 10.0.14393)

Consulte también

SetupDiEnumDeviceInterfaces

SetupDiGetClassDevs