#pragma data_seg DLL에서 데이터 공유 응용 프로그램
왜냐하면 (MSDN):
The default segment in the .obj file for initialized variables is .data. Variables initialized to zero are considered uninitialized and are stored in .bss.
Example
// pragma_directive_data_seg.cpp
int h = 1; // stored in .data
int i = 0; // stored in .bss
#pragma data_seg(".my_data1")
int j = 1; // stored in "my_data1"
data_seg with no parameters resets the segment to .data
#pragma data_seg 프리처리 명령은 공유 데이터 세그먼트를 설정하는 데 사용됩니다.예를 들면 다음과 같습니다.
#pragma data_seg("SharedDataName")
HHOOK hHook=NULL;
#pragma data_seg()
#pragma dataseg("SharedDataName") 및 #pragma dataseg () 사이의 모든 변수는 Dll에 액세스하는 모든 프로세스에서 보고 공유됩니다.여기에 명령 #pragma comment(linker, "/section:.Shared DataName, rws")를 더하면 알파벳 RWS는 세그먼트가 읽기, 쓰기, 공유 속성을 가지고 있음을 나타낸다.그러면 이 데이터 섹션의 데이터는 모든 DLL 인스턴스 간에 공유할 수 있습니다.모든 이 데이터에 대한 작업은 프로세스의 주소 공간에 있는 것이 아니라 같은 실례를 겨냥한 것이다.
There are restrictions to consider before using a shared data segment:
· Any variables in a shared data segment must be statically initialized. In the above example,
i is initialized to 0(이전 MSDN의 설명과 모순됨) and a is 32 characters initialized to hello world.
· All shared variables are placed in the compiled DLL in the specified data segment. Very large arrays can result in very large DLLs. This is true of all initialized global variables.
· Never store process-specific information in a shared data segment. Most Win32 data structures or values (such as HANDLEs) are really valid only within the context of a single process.
· Each process gets its own address space. It is very important that pointers are never stored in a variable contained in a shared data segment. A pointer might be perfectly valid in one application but not in another.
· It is possible that the DLL itself could get loaded at a different address in the virtual address spaces of each process. It is not safe to have pointers to functions in the DLL or to other shared variables.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.