From: mohan AT stealth DOT net (Mohan Khurana) Newsgroups: comp.os.msdos.djgpp Subject: VESA Programming -- oh boy. Date: Tue, 22 Oct 1996 02:14:00 GMT Organization: Stealth Communications, NYC. Lines: 49 Message-ID: <54h0j2$hu3@news.stealth.net> NNTP-Posting-Host: mohan.nyc.stealth.net To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp I have a structure, which is the VbeInfoBlock structure that contains the VESA spec version, memory, etc. I make a structure like this: struct VbeInfoBlock vesastruct; Then I go through the normal procedure for getting a pointer to the structure, using dpmi functions. If I print the version number, defined in the struct as: short VbeVersion PACKED; I will get a successful and expected result of 200, here is the line I used: print("%x", vesastruct->VbeVersion); Inside this structure there is a pointer called "OemStringPtr" defined in the struct statement as: char *OemStringPtr PACKED; If I try to print this pointer to a null terminated string, using the following line: printf("%s", vesastruct->OemStringPtr); I get the following error: Exiting due to signal SIGSEGV General Protection Fault at eip=00004a5a eax=00000000 ebx=00000000 ecx=ffffffff edx=00000025 esi=c00074ac edi=c00074ac ebp=00047624 esp=0004626c cs=00a7 ds=00af es=00af fs=0087 gs=00c7 ss=00af Call frame traceback EIPs: 0x00004a5a 0x00001fc1 0x000015c1 0x000015f5 0x00001b33 The specs say that OemStringPtr is a real mode far pointer in protected mode. How do I access it? Please help. I have been trying to figure this out for a while now.