Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Шаред секция

5.2K
14 декабря 2003 года
RomahA
7 / / 08.12.2003
Я знаю что в VC++ есть такая структуга для объявления глобальных переменных в библиотеках подключаемых к разным процессам. То-есть чёб эти переменные были доступны любому экземпляру библиотеки.

Вот так она выглядит:

#pragma data_seg("SData")
// Тут объявляем переменные

#pragma data_seg( )
#pragma comment(linker,"/SECTION:SData,RWS")

Внимание! Вопрос: =)
Есть ли что-нить похожее в CBuilder++???
1.9K
15 декабря 2003 года
ILS
100 / / 28.01.2003
Цитата:
Originally posted by RomahA
Я знаю что в VC++ есть такая структуга для объявления глобальных переменных в библиотеках подключаемых к разным процессам. То-есть чёб эти переменные были доступны любому экземпляру библиотеки.

Вот так она выглядит:

#pragma data_seg("SData")
// Тут объявляем переменные

#pragma data_seg( )
#pragma comment(linker,"/SECTION:SData,RWS")

Внимание! Вопрос: =)
Есть ли что-нить похожее в CBuilder++???


cм файл - это из
community.borland.com
C++ Frequently Asked Questions
(сам не проверял)

1.9K
15 декабря 2003 года
ILS
100 / / 28.01.2003
пардон за прредыдущее сообщение - файл не запоковал - он и не принялся. Вставляю как есть:
community.borland.com

Article #17405: Using File Mapping for Shared Data.

Question and Answer Database

FAQ2405C.txt Using File Mapping for Shared Data.
Category :Windows API
Platform :All
Product :C++Builder ALL

Question:
With the introduction of Win32 we can no longer use DLL's to
share memory between proccesses. I was told to use FileMapping.
What is FileMapping and how do I do this?

Answer:
You use file maping to set segments into shared spaces so that 2
or more different processes have access to the same segment to
share data. Below is an example that walks you though filemapping.

#include
#include
#include
#pragma hdrstop

//structure that will be shared
typedef struct INFO_TAG {
int nThing;
char sThing[256];
}INFO, *LPINFO;

//globals to store the mapped info
static HANDLE hMemMap;
static HANDLE hFile;
static void *pMapView;

//this function will create the file mapping
bool __stdcall SetupFileMap(void)
{
bool bExists;

//create a file to map to
hFile = CreateFile("temp",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_HIDDEN | FILE_FLAG_DELETE_ON_CLOSE,
NULL);

//create the mapping to the file
hMemMap = CreateFileMapping(hFile,
NULL,
PAGE_READWRITE,
0,
sizeof(INFO),
"FM_MemMap");

//see weather this is the first time this file has been mapped to
bExists = (GetLastError() == ERROR_ALREADY_EXISTS);

//Map a view into the Mapped file
pMapView = MapViewOfFile(hMemMap,
FILE_MAP_ALL_ACCESS,
0,
0,
sizeof(INFO));

if (!bExists)
{
//if it is the first time this map has been made,
//set all the members of our struct to NULL
memset (reinterpret_cast(pMapView), NULL, sizeof(INFO));
}

return true;
}

LPINFO __stdcall GetSharedInfo (void)
{
//return a pointer to the mapped file
return (reinterpret_cast(pMapView));
}

void __stdcall ShutdownFileMap(void)
{
//clean up after yourself
UnmapViewOfFile(pMapView);
CloseHandle(hMemMap);
CloseHandle(hFile);
}

//test to show how to access the mapped file
int main(int, char**)
{
LPINFO Map = NULL;
char cInput = NULL;
SetupFileMap();
Map = GetSharedInfo();

cInput = 'z';
do
{
switch(cInput)
{
case 'c': cout << "Enter integer: ";
cin >> Map->nThing;
cout << "Enter string: ";
cin >> Map->sThing;
cInput = 'z';
break;

case 'd': cout << "Integer = " << Map->nThing << endl;
cout << "String = " << Map->sThing << endl;
cInput = 'z';
break;

default : cout << "Enter e to exit" << endl;
cout << " c to change data in the mapped file" << endl;
cout << " d to display the data in the mapped file" << endl;
cin >> cInput;
break;

}
} while(cInput != 'e');

ShutdownFileMap();
return 0;
}







7/2/98 10:32:32 AM


Last Modified: 01-SEP-99
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог