Up ] Docs Home ]

Call PHARLAPX VxD entry point with

Back ] Next ]

Data:
AX = function
0001h get PHARLAP.386 version
Return: AH = major version
AL = minor version

---queue functions---

0101h allocate a new message queue
Data: CX = size of queue data buffer in bytes
Return: DX:AX = handle for new queue, or 0000h:0000h on error
0102h allocate a new key queue
Data: CX = size of queue data buffer in bytes
EDX = VM handle into which keys will be pasted
Return: DX:AX = handle for new queue, or 0000h:0000h on error
0103h free message queue
Data:
EDX = queue handle
Return: AX = status (0000h,0003h,0007h) (see #02695)
0104h free key queue
Data:
EDX = queue handle
Return: AX = status (0000h,0003h,0005h) (see #02695)
0105h add message to communications queue
Data:
EDX = queue handle
BX = length of message data in bytes
CX = length of message header in bytes
ES:(E)SI message header
GS:(E)DI message data
Return: AX = status (0000h-0003h,0007h) (see #02695)
0106h remove message from queue
Data:
EDX = queue handle
CX = length of buffer in bytes
ES:(E)SI buffer for message
Return: AX = status (0000h,0003h,0006h,0007h,0008h) (see #02695)
CX = length of returned message (if AX=0000h or 0008h)
0107h flush queue (remove all data)
Data:
EDX = queue handle
Return: AX = status (0000h,0003h) (see #02695)
0108h add PasteKey structure(s) to key queue
Data:
EDX = queue handle
CX = number of PasteKey structures in buffer
ES:(E)SI PasteKey array (see #02696)
Return: AX = status (0000h-0003h) (see #02695)
0109h register enqueueing callback function
Data:
EDX = queue handle
ECX = function argument
ES:(E)SI callback function
Return: AX = status (0000h,0003h,0009h) (see #02695)
010Ah register dequeueing callback function
Data:
EDX = queue handle
ECX = function argument
ES:(E)SI callback function
Return: AX = status (0000h,0003h,0009h) (see #02695)
010Bh unregister enqueueing callback function
Data:
EDX = queue handle
Return: AX = status (0000h,0003h,0009h) (see #02695)
010Ch unregister dequeueing callback function
Data:
EDX = queue handle
Return: AX = status (0000h,0003h,0009h) (see #02695)
010Dh get message queue status
Data:
EDX = queue handle
Return: AX = status (0000h,0003h) (see #02695)
CX = number of pending messages
010Eh peek at message in queue
Data:
EDX = queue handle
BX = number of message in queue (0000h = first)
CX = size of buffer in bytes
ES:(E)SI buffer for message
Return: AX = status (0000h,0003h,0006h,0008h) (see #02695)
CX = length of returned message (if AX=0000h or 0008h)
010Fh peek at last message in queue
Data:
EDX = queue handle
CX = size of buffer in bytes
ES:(E)SI buffer for message
Return: AX = status (0000h,0003h,0006h,0008h) (see #02695)
CX = length of returned message (if AX=0000h or 0008h)
0110h replace last message in queue
Data:
EDX = queue handle
CX = length of message header in bytes
BX = length of message data in bytes
ES:(E)SI message header
GS:(E)DI message data
Return: AX = status (0000h,0002h,0003h) (see #02695)
0111h set permitted message count for queue
Data:
EDX = queue handle
CX = maximum number of messages to enqueue (FFFFh = unlimited)
Return: AX = status (0000h,0003h) (see #02695)
 

---generalized VxD services---

0202h call VxD function
Data:
ES:(E)BX in/out register-set buffer
Return: buffer updated
0203h map flat
Data:
???
Return: ???

--system register functions---

0301h read system registers into buffer
Data:
ES:(E)SI 512-byte buffer
Return: AX

=

0000h buffer filled (mostly zeros)
0302h copy linear memory into buffer
Data:
EDX = linear address
CX = number of bytes to copy
ES:(E)SI buffer
Return: AX = 0000h
0303h copy data into linear memory
Data:
EDX = linear address
CX = number of bytes to copy
ES:(E)SI buffer
Return: AX = 0000h
0304h freeze VM
Data:
???
Return: ???
0305h unfreeze VM
Data:
???
Return: ???

---name registration functions---

0401h register name
Data:
EDX = magic number to associate with name
ES:(E)SI name to register
Return: AX = status (0000h,0009h) (see #02695)
0402h unregister name
Data:
ES:(E)SI name to be unregistered
Return: AX = status (0000h,0009h) (see #02695)
0403h look up name
Data:
ES:(E)SI name to look up
Return: DX:AX = magic number or 0000h:0000h if not registered
0404h get name list handle
Return: DX:AX = name list handle
0000h:0000h if not initialized

---special DOS server routines (undocumented)---

0501h register
0502h unregister
0503h validate VM
0504h get INT9 count
0505h get screen line
0506h get shift status
0507h get server PB pointer
0508h initialize DOS shell
0509h get last VM handle