INF: Using Windows Global Heap Buffers

ID: Q44730


The information in this article applies to:
  • Microsoft SQL Server Programmer's Toolkit, version 4.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.


MORE INFORMATION

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 query words: dblib

Keywords : kbprg SSrvDB_Lib
Version : 4.2
Platform : OS/2
Issue type :


Last Reviewed: March 6, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.