DevHelp Register

This service adds a monitor to the chain of monitors for a class of device.

C
 USHORT APIENTRY DevHelp_Register(USHORT MonitorHandle,                                 USHORT  MonitorPID,                                 PBYTE   InputBuffer,                                 NPBYTE  OutputBuffer,                                 USHORT  ChainFlag); 

Assembler
 LES  SI,input_buffer          ; Address of input buffer MOV  DI,output_buffer_offset  ; Offset of output buffer MOV  CX,monitor_PID           ; Process ID of monitor task MOV  AX,monitor_handle        ; Handle for chain returned from previous MonitorCreate call MOV  DH,placement_flag        ; High or Low place in chain MOV  DL,DevHlp_Register

CALL [Device_Help] 

C

 * MonitorHandle (USHORT)      : input - from MonCreate
 * MonitorPID (USHORT)          : input - Process Id retrieved by way of GetDosvar
 * InputBuffer (PBYTE)          : input - Far pointer to Mon in buffer
 * OutputBuffer (NPBYTE)        : input - Near pointer to Mon out buffer
 * ChainFlag (USHORT)           : input - Chain placement (high or low in chain)

Assembler
 LES  SI,input_buffer          ; Address of input buffer MOV  DI,output_buffer_offset  ; Offset of output buffer MOV  CX,monitor_PID           ; Process ID of monitor task MOV  AX,monitor_handle        ; Handle for chain returned from previous MonitorCreate call MOV  DH,placement_flag        ; High or Low place in chain 

C
Success indicator: 0

Possible errors: ERROR_MON_INVALID_HANDLE (381) ERROR_NOT_ENOUGH_MEMORY (8) ERROR_MON_INVALID_PARMS (379)

Assembler
 'C' Clear if successful.

'C' Set if error. AX = Error code. Possible errors: ERROR_MON_INVALID_HANDLE   (381) ERROR_INVALID_PARAMETER    (87) ERROR_NOT_ENOUGH_MEMORY    (8) 

Remarks
This function can be called only at task time in the OS/2 mode. If this function is called in a DOS session context, an invalid parameter error is returned to the physical device driver.

A monitor chain must have previously been created with MonitorCreate. A single process can register more than one monitor (with different input and output buffers) with the same monitor chain. The first WORD of each of the input and output buffers must contain the length in bytes (length WORD inclusive) of the buffers. The length of the input and output buffers of the monitor must be greater than the length of the monitor chain buffer of the physical device driver plus 20 bytes. The input buffer, output buffer offset, and placement flag are supplied to the physical device driver by the monitor application that is requesting monitor registration (that is, calling DosMonReg).

The physical device driver must identify the monitor chain with the monitor handle returned from a previous MonitorCreate call. The physical device driver can determine the Process ID of the requesting monitor task from the Local InfoSeg. See GetDOSVar.

C

 * 1) include "dhcalls.h"
 * 2) define  CHAIN_AT_TOP    0
 * 3) define  CHAIN_AT_BOTTOM 1

USHORT APIENTRY DevHelp_Register(USHORT MonitorHandle,                                 USHORT  MonitorPID,                                 PBYTE   InputBuffer,                                 NPBYTE  OutputBuffer,                                 USHORT  ChainFlag); 