Вызов WinAPI функции............
От: dmibr  
Дата: 07.08.07 11:49
Оценка:
Не подскажите решение следующей задачи?

Есть код:

[DllImport("kernel32.dll")]
static extern IntPtr OpenFileMapping(uint dwDesiredAccess, bool bInheritHandle, string lpName);
[DllImport("kernel32.dll", SetLastError = true)]
static extern IntPtr MapViewOfFile(IntPtr hFileMappingObject, uint dwDesiredAccess, uint dwFileOffsetHigh, uint dwFileOffsetLow, IntPtr dwNumberOfBytesToMap);
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool CloseHandle(IntPtr hObject);
[DllImport("Kernel32.dll", EntryPoint="RtlMoveMemory", SetLastError=false)]
static extern void CopyMemory(IntPtr dest, IntPtr src, uint size);
 ...............................
CurrentUser curUser; // это экземпляр пользовательского класса
IntPtr pCurUser; //Calling 'OpenFileMapping' WinApi
IntPtr hHandle = OpenFileMapping(FILE_MAP_ALL_ACCESS, true, "CUI");
if (IntPtr.Zero == hHandle){ return; }

//Calling 'MapViewOfFile' WinApi
pCurUser = MapViewOfFile(hHandle, FILE_MAP_ALL_ACCESS, 0, 0, (IntPtr) 4096);
if (IntPtr.Zero == pCurUser){if (IntPtr.Zero == hHandle) { CloseHandle(hHandle); } return; }
           
//Calling 'RtlMoveMemory' WinApi
uint szOfCurUser = (uint) Microsoft.VisualBasic.Strings.Len(curUser);
CopyMemory(curUser, pCurUser, szOfcurUser ); // вот здесь загвоздка


Как у экземпляра класса CurrentUser (первый аргумент ф-ии CopyMemory) получить указатель типа IntPtr?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.