INF: Using Windows Global Heap Buffers

ID Number: Q44730

1.10 1.11 4.20

OS/2

Summary:

Although the Windows version of DB-LIBRARY (db-lib) is compiled with

the medium memory model (near data pointers), all of the db-lib

functions use far pointers for buffer parameters. This means that you

can pass a far pointer to a buffer allocated with GlobalAlloc() to

dbbind.

Be sure to use both the db-lib and the Windows LOCK and UNLOCK

functions around the code that references the global heap buffers.

The following code fragment illustrates how this might be done:

HANDLE hMem1;

HANDLE hMem2;

LPSTR lpMem1;

LPSTR lpMem2;

DBLOCKLIB();

while( dbresults(dbproc)!=NO_MORE_RESULTS )

{

lpMem1 = GlobalLock(hMem1);

lpMem2 = GlobalLock(hMem2);

dbbind( dbproc, 1, ???, ??L, (LPSTR)lpMem1 );

dbbind( dbproc, 2, ???, ??L, (LPSTR)lpMem2 );

while( dbnextrow(dbproc)!=NO_MORE_ROWS )

{

TextOut(hDC,?,????, lpMem1, ??? );

TextOut(hDC,?,????, lpMem2, ??? );

}

GlobalUnlock(hMem1);

GlobalUnlock(hMem2);

}

DBUNLOCKLIB();

Additional reference words: dblib 1.10 1.11 4.20