Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var OpenedFile = File.Open("file.bin", FileMode.Open);
- var PointerTableStream = new SliceStream(OpenedFile, 0x300);
- var SpaceAssigner1D = new SpaceAssigner1D();
- var SpaceAssigner1DUniqueAllocatorStream = new SpaceAssigner1DUniqueAllocatorStream(SpaceAssigner1D, new SliceStream(OpenedFile, 0x20000));
- // Esto crea dos espacios utilizables: 0x1000-0x1020 y 0x1030-0x1100
- {
- SpaceAssigner1D.AddAvailable(0x1000, 0x1010);
- SpaceAssigner1D.AddAvailable(0x1010, 0x1020);
- SpaceAssigner1D.AddAvailable(0x1030, 0x1100);
- }
- // UsedSpace1 y UsedSpace2 coinciden porque al tener el mismo contenido se reutiliza la dirección.
- {
- var UsedSpace1 = SpaceAssigner1DUniqueAllocatorStream.AllocateUnique("Prueba", Encoding.UTF8);
- var UsedSpace2 = SpaceAssigner1DUniqueAllocatorStream.AllocateUnique("Prueba", Encoding.UTF8);
- var UsedSpace3 = SpaceAssigner1DUniqueAllocatorStream.AllocateUnique("Una prueba que no entra en el primer espacio por ser excesivamente larga", Encoding.UTF8);
- // UsedSpace2 = UsedSpace1 = SpaceAssigner1D.Space(Min=0x1000, Max=0x1007)
- // UsedSpace2 = SpaceAssigner1D.Space(Min=0x1030, Max=0x1030 + Longitud de la cadena + 1)
- // Además en la posición 0x20000 + 0x1000 se habrá escrito "Prueba\0" y en 0x20000 + 0x1000 "Una prueba que no entra en el primer espacio por ser excesivamente larga\0"
- // Escribimos en la tabla de punteros.
- PointerTableStream.Write((uint)UsedSpace1.Min);
- PointerTableStream.Write((uint)UsedSpace2.Min);
- PointerTableStream.Write((uint)UsedSpace3.Min);
- }
Add Comment
Please, Sign In to add comment