internal static string GetImagePathName(Pointers ptrs) { //Read original data var imageLen = Marshal.ReadInt16(ptrs.ImageOffset); string currentImagePathName = Marshal.PtrToStringUni(ptrs.ImageBuffer, imageLen / 2); return(currentImagePathName); }
public static void WriteImagePathName(string imagePathName, Pointers ptrs) { //Write the string, char by char foreach (var unicodeChar in imagePathName) { Marshal.WriteInt16(ptrs.ImageBuffer, unicodeChar); ptrs.ImageBuffer = ptrs.ImageBuffer.Increment(2); } Marshal.WriteInt16(ptrs.ImageBuffer, 0); //Write the new length Marshal.WriteInt16(ptrs.ImageOffset, (short)(imagePathName.Length * 2)); }
internal static void ChangeImagePathName(string newFileName, Pointers ptrs) { string originalImagePathName = GetImagePathName(ptrs); var newImagePathName = Path.Combine(Path.GetDirectoryName(originalImagePathName), newFileName); if (newImagePathName.Length > originalImagePathName.Length) { throw new Exception("new ImagePathName cannot be longer than the original one"); } WriteImagePathName(newImagePathName, ptrs); }
internal static void ChangeImagePathName(string newFileName) { Pointers ptrs = GetPointers(); ChangeImagePathName(newFileName, ptrs); }