[DLL] Drive 1.0.0.0
Publicado: 10 Abr 2013 10:29


Buenas amigos de AMSSpecialist, a petición de un usuario del foro he echo esta DLL para poder modificar las etiquetas de las unidades, he puesto 2 funciones una que devuelva la etiqueta de una unidad y otra que permite modificar dicha etiqueta, espero que os guste y os sea de gran utilidad.
Funciones:
- GetDriveLabel - Retorno String "devuelve un string con el nombre de la etiqueta, si esta funcion falla devuelve "ERROR"."
- SetDriveLabel - Retorno Number "devuelve un numero si el resultado es 1 significa que la operacion de etiquetado se a realizado con exito si devuelve 0 es que existe algun fallo."
- GetDriveInfo - Retorno String "devuelve un string con toda la informacion de esa unidad separado por comas en el ejemplo se ve que valores son los que devuelve."
UnmanagedExports.cs:
using System;
using System.IO;
using RGiesecke.DllExport;
namespace Drive
{
internal static class DriveClass
{
/// <summary>
/// Esta función es para leer el nombre de una unidad, simplemente tienes que hacer la llamada a esta
/// función y decir la unidad a la que deseas.
/// </summary>
/// <param name="DriveLetter">La letra de la unidad que deseas.
/// Ejemplo: "D:\\"</param>
/// <returns>Devuelve un string con la etiqueta de la unidad si ocurre un error devuelve "ERROR".</returns>
[DllExport("GetDriveLabel", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
static string GetDriveLabel(string DriveLetter)
{
string returnval = "ERROR";
if (DriveLetter != "")
{
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
if (d.Name == DriveLetter)
{
returnval = d.VolumeLabel;
}
}
}
return returnval;
}
/// <summary>
/// Esta función es para cambiar el nombre de una unidad, simplemente tienes que hacer la llamada a esta
/// función y decir la unidad a la que deseas cambiarle es nombre y el nuevo nombre que deseas fijarle.
/// </summary>
/// <param name="DriveLetter">La letra de la unidad que deseas.
/// Ejemplo: "D:\\"</param>
/// <param name="NewLabel">La nueva etiqueta que se fijara en la unidad que as seleccionado.
/// Ejemplo: "LaNuevaEtiqueta"</param>
/// <returns>Devuelve un numero.
/// 0: Si existe algun error.
/// 1: Si se a realizado con exito.</returns>
[DllExport("SetDriveLabel", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
static int SetDriveLabel(string DriveLetter, string NewLabel)
{
int returnval = 0;
if (DriveLetter != "" && NewLabel != "")
{
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
if (d.Name == DriveLetter)
{
if (d.IsReady == true)
{
d.VolumeLabel = NewLabel;
returnval = 1;
}
}
}
}
return returnval;
}
[DllExport("GetDriveInfo", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
static string GetDriveInfo(string DriveLetter)
{
string Info = "";
if (DriveLetter != "")
{
DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
if (d.Name == DriveLetter)
{
Info = d.Name;
Info = Info + "," + d.VolumeLabel;
Info = Info + "," + d.DriveType;
Info = Info + "," + d.DriveFormat;
Info = Info + "," + d.TotalSize;
Info = Info + "," + d.TotalFreeSpace;
}
}
}
return Info;
}
}
}
Descarga: