usar una particion msi memoria mega full disco crear como windows ram

windows - una - ¿Cómo puedo crear un disco RAM programáticamente?



ramdisk windows 10 (3)

No hay API para crear un disco RAM per se. Debe escribir su propio controlador de dispositivo que presenta un nuevo disco al sistema y hacer que el controlador de dispositivo funcione con la memoria asignada.

EDITAR (después de la edición del OP)

Lo que está intentando hacer normalmente se haría con el directorio ''temp'', que se supone que reside en el disco más rápido disponible en el sistema. Por lo tanto, un sistema que ya tiene un RAMdisk probablemente tendrá su variable de entorno temporal configurada para apuntar a una carpeta en el RAMdisk, y los sistemas sin un RAMdisk simplemente asumirían la penalización del rendimiento, es su problema.

Ahora, si por alguna razón no puede confiar en la presencia de un RAMdisk en un sistema, Y absolutamente necesita el rendimiento más rápido posible, no veo otra opción que instalar un tercero (tal vez descargable, quizás incluso de código abierto) Disco RAM, utilícelo temporalmente, y luego desinstálelo. Pero eso es muy torpe.

No estoy buscando un código que invoque una utilidad de línea de comandos, que hace el truco. Estoy realmente interesado en saber la API utilizada para crear un disco RAM.

EDITAR

Motivación: Tengo una biblioteca de terceros que espera un nombre de directorio para procesar los archivos de ese directorio de una manera determinada. Tengo estos archivos comprimidos en un archivo. Deseo extraer el archivo en un disco RAM y pasar al tercero la ruta al directorio correspondiente en ese disco RAM. Como puede ver, los archivos mapeados en memoria no me sirven .


no mencionaste el idioma, por lo que mi respuesta está en c #:

Un archivo asignado en memoria contiene el contenido de un archivo en la memoria virtual. Esta asignación entre un archivo y el espacio de memoria permite que una aplicación, incluidos varios procesos, modifique el archivo leyendo y escribiendo directamente en la memoria. A partir de .NET Framework versión 4, puede usar el código administrado para acceder a los archivos asignados en memoria de la misma manera que las funciones nativas de Windows acceden a los archivos asignados en memoria, como se describe en Administración de archivos asignados en memoria en Win32 en MSDN Library.

http://msdn.microsoft.com/en-us/library/dd997372.aspx

MemoryMappedFile MemoryMapped = MemoryMappedFile.CreateOrOpen( new FileStream(@"C:/temp/Map.mp", FileMode.Create), // Any stream will do it "MyMemMapFile", // Name 1024 * 1024, // Size in bytes MemoryMappedFileAccess.ReadWrite); // Access type

// Crea la vista del mapa y léelo:

using (MemoryMappedViewAccessor FileMap = MemoryMapped.CreateViewAccessor()) { Container NewContainer = new Container(); FileMap.Read<Container>(4, out NewContainer); }


ImDisk es una aplicación de disco RAM que crea una unidad virtual desde un sector de memoria y tiene una API a la que se puede llamar desde .NET.

class RamDisk { public const string MountPoint = "X:"; public void createRamDisk() { try { string initializeDisk = "imdisk -a "; string imdiskSize = "-s 1024M "; string mountPoint = "-m "+ MountPoint + " "; ProcessStartInfo procStartInfo = new ProcessStartInfo(); procStartInfo.UseShellExecute = false; procStartInfo.CreateNoWindow = true; procStartInfo.FileName = "cmd"; procStartInfo.Arguments = "/C " + initializeDisk + imdiskSize + mountPoint; Process.Start(procStartInfo); formatRAMDisk(); } catch (Exception objException) { Console.WriteLine("There was an Error, while trying to create a ramdisk! Do you have imdisk installed?"); Console.WriteLine(objException); } } /** * since the format option with imdisk doesn''t seem to work * use the fomat X: command via cmd * * as I would say in german: * "Von hinten durch die Brust ins Auge" * **/ private void formatRAMDisk(){ string cmdFormatHDD = "format " + MountPoint + "/Q /FS:NTFS"; SecureString password = new SecureString(); password.AppendChar(''0''); password.AppendChar(''8''); password.AppendChar(''1''); password.AppendChar(''5''); ProcessStartInfo formatRAMDiskProcess = new ProcessStartInfo(); formatRAMDiskProcess.UseShellExecute = false; formatRAMDiskProcess.CreateNoWindow = true; formatRAMDiskProcess.RedirectStandardInput = true; formatRAMDiskProcess.FileName = "cmd"; formatRAMDiskProcess.Verb = "runas"; formatRAMDiskProcess.UserName = "Administrator"; formatRAMDiskProcess.Password = password; formatRAMDiskProcess.Arguments = "/C " + cmdFormatHDD; Process process = Process.Start(formatRAMDiskProcess); sendCMDInput(process); } private void sendCMDInput(Process process) { StreamWriter inputWriter = process.StandardInput; inputWriter.WriteLine("J"); inputWriter.Flush(); inputWriter.WriteLine("RAMDisk for valueable data"); inputWriter.Flush(); } public string getMountPoint() { return MountPoint; } }