;************************************************************** ;*** XMS0E.ASM *** ;*** *** ;*** function XMS_XmBlk.getHandInfo( *** ;*** var blockSize: Word; *** ;*** var handlesLeft:Word; *** ;*** var lockCount: Word) *** ;*** : Boolean; *** ;*** *** ;*** Gets information about an allocated XM block. *** ;*** *** ;************************************************************** .model large,pascal include xmsdefs.asm extrn errno:WORD extrn xmsHandler:DWord ; ; Define entry point ; public XMS_XmBlk@getHandInfo .code XMS_XmBlk@getHandInfo proc blSz:Far Ptr Word, nHand:Far Ptr Word, locks:Far Ptr Word, handle:Far Ptr Word les bx,handle mov dx,es:[bx] ; get the handle mov ah,XMSGetHandInfo ; Function code call xmsHandler ; call the guy or ax,ax ; AX=0 means error jz errorReturn ; ; Now return the values. ; mov cx,bx ; save BH and BL contents les bx,blSz ; Return the block size (KB) mov es:[bx],dx les bx,nHand ; Return the number of free handles mov al,cl ; Zero extend to 16 bits xor ah,ah mov es:[bx],ax les bx,locks ; Return the number of locks on block mov al,ch ; Zero extend to 16 bits xor ah,ah mov es:[bx],ax mov ax,XMSErrOK ; No error ret errorReturn: mov al,bl ; Move error code to AL xor ah,ah ; Zero extend to 16 bits mov errno,ax ; Copy to errno ret XMS_XmBlk@getHandInfo endp ; end of procedure end