コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        internal static void ChangeImagePathName(string newFileName)
        {
            Pointers ptrs = GetPointers();

            ChangeImagePathName(newFileName, ptrs);
        }