INF: How to Determine if DBNMPIPE.EXE Is Loaded from C Program

ID: Q66677


The information in this article applies to:
  • Microsoft SQL Server Programmer's Toolkit, version 4.2


SUMMARY

This article discusses how a DB-Library (DB-Lib) application can determine whether the Dbnmpipe.exe terminate-and-stay-resident (TSR) program is loaded.


MORE INFORMATION

The following program uses Interrupt 21h Function 35H to find the address of the current interrupt handler for Interrupt 62h, where the Dbnmpipe.exe TSR program installs itself. It then compares 9 bytes from that address, after an initial offset of 2 bytes, to "DBLIBRARY". If the TSR program is loaded, these bytes will match.


#include <dos.h>
#include <memory.h>
#include <stdio.h>

void main(void) {
    union REGS inregs, outregs;
    struct SREGS segregs;
    int result;
    char *ptr;

    inregs.h.ah = 0x35;
    inregs.h.al = 0x62;
    result = int86x(0x21,&inregs,&outregs,&segregs);
    FP_OFF(ptr) = outregs.x.bx + 2;
    FP_SEG(ptr) = segregs.es;
    result = memcmp((char *)ptr,"DBLIBRARY",9);
    if (result == 0)
        printf("\nDBNMPIPE is loaded\n");
    else
        printf("\nDBNMPIPE is not loaded\n");
} 

Additional query words: dblib DBNMPIPE TSR

Keywords : kbprg SSrvDB_Lib
Version : WINDOWS:4.2
Platform : WINDOWS
Issue type :


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