Jump to content

DevHelp_PullParticular

From EDM2
Revision as of 03:22, 23 May 2025 by Martini (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This service pulls the specified packet from the selected request packet linked list. If the packet is not found, then an indicator is set on return.

Syntax

C

USHORT APIENTRY DevHelp_PullParticular( NPBYTE Queue,
                                        PBYTE  ReqPktAddr );

Assembler

MOV   SI,OFFSET DS:queue        ; Location of queue head (should match
                                        PushRequest value)
LES   BX,request_packet         ; Pointer to request packet.
MOV   DL,DevHlp_PullParticular

CALL  [Device_Help]

Parameters

C

Queue (NPBYTE)
Location of queue head (should match PushRequest value).
ReqPktAddr (PBYTE)
Pointer to request packet.

Assembler

MOV   SI,OFFSET DS:queue        ; Location of queue head (should match
                                        PushRequest value)
LES   BX,request_packet         ; Pointer to request packet.

Return Code

C

Success Indicator: 0

Possible errors: None.

Assembler

   'C' Clear if successful.

   'C' Set if the specified request is not found.

Remarks

A physical device driver uses PushRequest and PullRequest to maintain a work queue for each of its devices. PullParticular is used to remove a specific request packet from the work queue, typically when a process has terminated before finishing its I/O. PullParticular can also be used to remove request packets that were allocated by AllocReqPacket from the request packet linked list.

Example Code

C

#include  "dhcalls.h"

USHORT APIENTRY DevHelp_PullParticular( NPBYTE Queue,
                                        PBYTE  ReqPktAddr );

Related Functions