[Back to NETWORK SWAG index] [Back to Main SWAG index] [Original]
{
> Is there a way to detect if a system is running under Novell
> Netware? There must be an interrupt to do that, but wich one?
Yes there is. Although this is in assembly, I'm sure you can dig
out what you need and convert it to Pascal or inline ASM. I've also
included for the more common multitaskers. I always try to check for
each at the beginning of a program so I can code to take advantage of
the features of whatever system it's operating under, or at least
prevent problems.
}
;*****************************************************************
;* Check to see if we are running under a Novell Network *
;*****************************************************************
.public chk_novell
.proc chk_novell auto
.push es,di ; Protect the registers well use
xor ax,ax ; and clear them
push ax
push ax
.pop es,di
mov ax,07A00H ; Novel Netware installation check
int 2FH ; Check it
or al,al ; If installed, al = 0FFH
; ES:DI ptr -> far entry point for
; routines otherwise accessed through
; INT 21H
jnz double_check ; Appears to be installed, see if there
; is a far address in ES:DI
stc ; Set carry to indicate no network
.pop es,di ; restore what we used
ret ; and exit
double_check:
push di ; Check
pop ax
or ax,ax ; Is it empty
jnz in_novell ; No has pointer so were in a network
push es
pop ax
or ax,ax ; Is it empty
jnz in_novell ; No has pointer
stc ; No pointer to far address so no network
; Chance of a ptr to 0000:0000 are
; basically non-existant
in_novell:
.pop es,di ; Clean up after ourselves
ret ; and go home
.endp chk_novell
;***********************************************************************
;* Check to see if we are running under Desqview, TopView, or TaskView *
;***********************************************************************
.public chk_desq
.proc chk_desq auto
.push ax,bx ; Save registers we will use
mov ax,1022H ; This is the get version function
; that TopView installs for Int 15H.
; Most TopView compatibles use the
; same function so we can check for
; several with just one call
xor dx,dx ; Clear dx
int 15H ; Make the call
cmp bx,0a01H ; DesqView 2.x returns 0A01H
jnz try_task ; Did we get it
mov @dataseg:Desqview,1 ; YES, save it and go home
jmp short No_View
try_task: ; No, Try TaskView
cmp bx,0001H ; TaskView Returns 0001H
jnz try_top ; Get it
mov @dataseg:TaskView,1 ; Yes
jmp short No_View
try_top: ; No, try TopView. Top View returns it's
or bx,bx ; version so just test for non-zero
jz No_View ; is it non-zero
mov @dataseg:TopView,1 ; Yes, save it
No_View:
.pop ax,bx ; Restore regs and go home
ret
.endp chk_desq
{
Hope this helps. BTW, I don't know about the later versions of
Windows, but the older versions respected the Desqview installation
check.
}
[Back to NETWORK SWAG index] [Back to Main SWAG index] [Original]