DevHelp PullParticular
Appearance
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 );