Форум программистов, компьютерный форум, киберфорум
Наши страницы

Преобразование void* в структуру - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Аргументы командной строки http://www.cyberforum.ru/cpp-beginners/thread634979.html
Здравствуйте, у меня вопрос, почему программа сбрасывается, так и не выполнив никаких действий? Я знаю , что она возвращает 0 и выходит, но почему она не выполняет действие? #include "stdafx.h"...
C++ Запись в текстовый файл адресов вместо строк Всем привет. Ребята, читаю из бинарного файла структуру и хочу все записать в текстовый файл. Структура struct Client { wchar_t strname;//ФИО клиента http://www.cyberforum.ru/cpp-beginners/thread634976.html
Найти число пассажиров, имеющих более двух вещей и... C++
Тема: Записи. Работа с текстовыми файлами. Дан файл f, содержащий сведения о багаже нескольких пассажиров. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Сведения о багаже...
C++ Не появляются файлы в каталоге проекта
Почему когда я добавляю в проект заранее подготовленные файлы(.cpp, .h, .rc), они не появляются в каталоге проекта? P.S. Visual Studio 2008
C++ Комбинаторика! Число сочитаний http://www.cyberforum.ru/cpp-beginners/thread634917.html
Доброго времени суток. Так как я глубоко начинающий программист, столкнулся с проблемой решения задач по комбинаторике (на данный момент формула числа сочитаний). Каким образом можно записать эту...
C++ Цикл Начал изучать C++ неделю назад. Теперь начал решать некоторые задачи. И возникли у меня некоторые сложности с циклами... Требуется ваша помощь... Задача: Переведите натуральное число из двоичной... подробнее

Показать сообщение отдельно
bytephone32
1 / 1 / 0
Регистрация: 08.08.2012
Сообщений: 21

Преобразование void* в структуру - C++

08.08.2012, 22:42. Просмотров 1347. Ответов 14
Метки (Все метки)

Как преобразовать HANDLE в структуру? В C# возможно написание следующего кода:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
[DllImport("kernel32.dll")]
        public static extern IntPtr OpenFileMapping(int dwDesiredAccess, bool bInheritHandle, string lpName);
 
        [DllImport("kernel32.dll")]
        public static extern IntPtr MapViewOfFile(IntPtr hFileMappingObject, int dwDesiredAccess, int dwFileOffsetHigh, int dwFileOffsetLow, int dwNumberOfbytesToMap);
 
        [DllImport("kernel32.dll")]
        public static extern int UnmapViewOfFile(IntPtr lpBaseAddress);
 
        [DllImport("kernel32.dll")]
        public static extern int CloseHandle(IntPtr hObject);
   
        public void Button1Click(System.Object Sender, System.EventArgs _e1)
        {
            IntPtr AFile;
            IntPtr AInfo;
            TAIMP2FileInfo _AInfo = new TAIMP2FileInfo();     //TAIMP2FileInfo   
            string S;
            string ABuf;
            ListBox1.Items.Clear();
            AFile = OpenFileMapping(4, true, AIMP_SDK.Units.Units.AIMP2_RemoteClass);
            AInfo = MapViewOfFile(AFile, 4, 0, 0, AIMP_SDK.Units.Units.AIMP2_RemoteFileSize);
            _AInfo = (TAIMP2FileInfo)Marshal.PtrToStructure(AInfo, typeof(TAIMP2FileInfo));
            try {
                if ((object)AInfo != null)
                {
                    unsafe
                    {
                        AInfo = new IntPtr(AInfo.ToInt32() + _AInfo.cbSizeOf);
                        ABuf = Marshal.PtrToStringUni(AInfo);
                        ListBox1.Items.Add(String.Format("{0:d} Hz, {1:d} kbps, {2:d} chans", _AInfo.nSampleRate, _AInfo.nBitRate, _AInfo.nChannels));
                        ListBox1.Items.Add(String.Format("{0:d} seconds, {1:d} bytes", _AInfo.nDuration / 1000, _AInfo.nFileSize));
                        // Read Album
                        S = ABuf.Substring(0, _AInfo.nAlbumLen);
                        ListBox1.Items.Add(String.Format("Album: {0}", S ));
                        ABuf = ABuf.Substring(_AInfo.nAlbumLen);
                        //// Read Artist
                        S = ABuf.Substring(0, _AInfo.nArtistLen);
                        ListBox1.Items.Add(String.Format("Artist: {0}", S));
                        ABuf = ABuf.Substring(_AInfo.nArtistLen);
                        //// Read Date info
                        S = ABuf.Substring(0, _AInfo.nDateLen);
                        ListBox1.Items.Add(String.Format("Date: {0}", S ));
                        ABuf = ABuf.Substring(_AInfo.nDateLen);
                        //// Read FileName
                        S = ABuf.Substring(0, _AInfo.nFileNameLen);
                        ListBox1.Items.Add(String.Format("FileName: {0}", S ));
                        ABuf = ABuf.Substring(_AInfo.nFileNameLen);
                        //// Read Genre
                        S = ABuf.Substring(0, _AInfo.nGenreLen);
                        ListBox1.Items.Add(String.Format("Genre: {0}", S));
                        ABuf = ABuf.Substring(_AInfo.nGenreLen);
                        //// Read Title
                        S = ABuf.Substring(0, _AInfo.nTitleLen);
                        ListBox1.Items.Add(String.Format("Title: {0}", S ));
                    }
                }
            } finally {
                UnmapViewOfFile(AInfo);
                CloseHandle(AFile);
            }
        }
Интересеут именно
C#
1
_AInfo = (TAIMP2FileInfo)Marshal.PtrToStructure(AInfo, typeof(TAIMP2FileInfo));
Как это возможно написать на С++?
C++
1
2
3
4
5
6
7
8
9
10
HANDLE AFile;
        HANDLE AInfo;
        TAIMPFileInfo *_AInfo;
 
        string S;
        string ABuf;
        AFile = OpenFileMappingA(FILE_MAP_READ, TRUE, AIMPRemoteAccessClass);
        AInfo = MapViewOfFile(AFile, FILE_MAP_READ, 0, 0, AIMPRemoteAccessMapFileSize);
        _AInfo = (TAIMPFileInfo *)&AInfo;
        cout<<(*(TAIMPFileInfo*) AInfo).Artist;
пробовал так не получается...

Добавлено через 1 минуту
Нашел похожую тему: [ссылки на сторонние форумы запрещены]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.