Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.143.228.40] |
|
Сообщ.
#1
,
|
|
|
Народ кто работал с этим в VB? Очень надо хоть какой-нибудь пример.
|
Сообщ.
#2
,
|
|
|
Необходимые константы и прочие апи
Private Declare Function CreateFileMapping& Lib "kernel32" Alias "CreateFileMappingA" _ (ByVal hFile As Long, lpFileMappingAttributes As SECURITY_ATTRIBUTES, ByVal _ flProtect As Long, ByVal dwMaximumSizeHigh As Long, ByVal dwMaximumSizeLow As _ Long, ByVal lpName As String) Private Declare Function OpenFileMapping& Lib "kernel32" Alias "OpenFileMappingA" _ (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal lpName As _ String) Private Declare Function MapViewOfFile& Lib "kernel32" (ByVal hFileMappingObject As _ Long, ByVal dwDesiredAccess As Long, ByVal dwFileOffsetHigh As Long, ByVal _ dwFileOffsetLow As Long, ByVal dwNumberOfBytesToMap As Long) Private Declare Function UnmapViewOfFile& Lib "kernel32" (ByVal lpBaseAddress As Long) Private Declare Function CloseHandle& Lib "kernel32" (ByVal hObject As Long) Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpDest As Any, lpSource As Any, ByVal cBytes As Long) Const INVALID_HANDLE_VALUE = -1 Const PAGE_READWRITE = 4& Const STANDARD_RIGHTS_REQUIRED = &HF0000 Const SECTION_QUERY = &H1 Const SECTION_MAP_WRITE = &H2 Const SECTION_MAP_READ = &H4 Const SECTION_MAP_EXECUTE = &H8 Const SECTION_EXTEND_SIZE = &H10 Const SECTION_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SECTION_QUERY Or SECTION_MAP_WRITE Or SECTION_MAP_READ Or SECTION_MAP_EXECUTE Or SECTION_EXTEND_SIZE Const FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS Private Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type создать файл так: Dim hGlobalData As Long Dim hMapFile As Long Dim sa As SECURITY_ATTRIBUTES sa.bInheritHandle = 0 sa.lpSecurityDescriptor = 0 sa.nLength = Len(sa) hMapFile = CreateFileMapping(INVALID_HANDLE_VALUE, sa, PAGE_READWRITE, 0, Len(GlobalData), "Название файла") If hMapFile = 0 Then MsgBox ("Ошибка создания файла") hGlobalData = MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, LenB(наши данные)) If hGlobalData = 0 Then MsgBox ("Ошибка доступа к файлу") Теперь есть два хэндла - файла и области памяти. Работать с ними штатными апи, есть в гиде. К примеру записать в файл, используя хэндл памяти можно так: CopyMemory ByVal hGlobalData, наши данные, LenB(наши данные) прочитать так: CopyMemory наши данные, ByVal hGlobalData, LenB( hGlobalData) Добавлено в : а. потом после использование надо закрывать : UnmapViewOfFile hGlobalData CloseHandle hMapFile |
Сообщ.
#3
,
|
|
|