¿Cómo obtiene vc información del disco?
Si está ejecutando Windows, puede buscar el contenido en el sistema de archivos del Capítulo 4 de "Competente en Windows.API: funciones, interfaces y ejemplos de programación.pdf".
4.2.1 Recorrer volúmenes y obtener propiedades
Hay dos formas de obtener una lista de todas las unidades en un host, una es usar GetLogicalDrives o
GetLogicalDriveStrings. Otra es utilizar la combinación FindFirstVolume y FindNextVolume.
El primer método obtiene la unidad lógica en el host, es decir, la unidad de todos los volúmenes asignados, y el resultado devuelto es la ruta raíz de la unidad.
El segundo método devuelve el nombre del dispositivo de unidad en el formato "\\?\volume{GUID}".
Utilice la API GetDriveType para obtener el tipo de unidad y GetVolumeInformation para obtener las propiedades de la unidad
.
1. API clave
(1) GetLogicalDrives.
Obtenga todas las unidades lógicas en el host y devuélvalas en forma de BitMap. El prototipo de función es el siguiente:
◇Valor de retorno
La función GetLogicalDrive. devuelve un valor de tipo DWORD, el primer dígito indica si existe la unidad correspondiente.
Generalmente, la longitud de los datos de DWORD es de 32 bits. En este DWORD, cada bit corresponde a si existe una unidad lógica
o no. Si el segundo bit es "1", significa que existe la unidad "B:", si el cuarto bit es "1", significa que existe la unidad "D:", y así sucesivamente.
(2) Obtener cadenas de controladores lógicos.
Obtenga todas las unidades en el host y devuélvalas como la cadena de ruta raíz de la unidad. El prototipo de función es el siguiente:
◇Parámetros
nBufferLength: el. memoria señalada por el parámetro lpBuffer El tamaño del espacio, en bytes.
lpBuffer: apunta al espacio de memoria donde se almacena la cadena de resultado devuelta.
◇Valor de retorno
El valor de retorno de la función indica si la llamada a la función es exitosa. Si tiene éxito, se devuelve la longitud total del resultado devuelto en el búfer.
Si el valor de retorno es mayor que nBufferLength, significa que el tamaño del búfer dado no es suficiente y el valor de retorno es el tamaño real requerido.
Si se devuelve 0, se produjo un error mientras se ejecutaba la función.
◇Instrucciones de uso
Esta API implementa la misma función que GetLogicalDrives, pero devuelve los resultados de la ejecución de una manera más intuitiva
. El resultado de la ejecución de la función se coloca en el área de memoria señalada por lpBuffer. El tamaño de esta área de memoria se especifica mediante el parámetro nBufferLength
para que el resultado de retorno de la función no se desborde. Es necesario garantizar la asignación de memoria antes de llamar a esta función.
Después de que la llamada a la función sea exitosa, la cadena de ruta raíz de la unidad propiedad de la máquina local se completará en el búfer en secuencia. Por ejemplo, en el sistema
del autor hay 5. unidades lógicas "C :\", "D:\", "E:\", "F:\", "I:\". Después de la ejecución, los resultados en el área de buffer
son los siguientes:
Es decir, "C:\", "D:\", "E:\", "F :\" se colocan continuamente. ", "I:\" estas cinco cadenas (
agregará un terminador 'o' después de cada cadena y agregará un terminador al final de todas las cadenas de etiquetas).
(3) BuscarPrimerVolumen.
Busque la primera unidad en el host y devuelva el nombre del dispositivo de la unidad. El prototipo de función es el siguiente:
◇Parámetros
lpszVolumeName: búfer de memoria que apunta. el nombre de la unidad distrito.
cchBufferLength: el tamaño del búfer al que apunta el parámetro lpszVolumeName, en bytes.
◇Valor de retorno
Controlador de búsqueda de unidad, parámetros F cat NextVolume y FindVolumeColse, si la ejecución falla, devuelve NULL.
(4) FindNextVolume
Busque la unidad lógica posterior en el host. El prototipo de función es el siguiente:
◇Parámetros
. hFindVolume: FindFirstVolume Se devolvió el identificador de búsqueda de unidad.
lpszVolumeName: apunta al búfer de memoria que contiene el nombre de la unidad.
cchBufferLength: el tamaño del búfer al que apunta el parámetro lpszVolumeName, en bytes.
◇Valor de retorno
Devuelve BOOL para indicar si tuvo éxito. Si falla, significa que se han buscado todas las unidades lógicas.
(5) BuscarVo1umeCerrar.
\Cerrar el controlador de recorrido de volumen abierto por FindFirstVolume. Su prototipo de función es el siguiente:
◇Parámetros
hFindVolume: el controlador de búsqueda de unidad que se cerrará.
◇Valor de retorno
El valor BOOL devuelto indica si el identificador se cerró correctamente.
(6) GetDriveType.
Obtenga el tipo de unidad, su prototipo de función es el siguiente:
◇Parámetros
lpRootPathIName: ruta raíz de la unidad, como "C:\".
◇Valor de retorno /
El tipo de unidad, como DRIVE' FIXED significa disco duro, DRIVE_CDROM significa disco óptico, etc. Consulte la función GetDirverInfo en el ejemplo 4-2
para obtener más detalles.
(7) Obtener información de volumen.
Obtenga información de la unidad lógica, el prototipo de función es el siguiente:
◇Parameters
lpRootPathName: parámetro de entrada, que apunta a la cadena de ruta raíz de la unidad cuyo se van a obtener atributos.
lpVolumeNameBuffer: parámetro de salida, devuelve el nombre de la unidad.