SVC_DUPHANDLE

Duplicate a file handle. This call creates a new file handle that refers to the same open file, pipe, or device as an existing handle.

Brief

Duplicate file handle (INT 21h AH=45h)

Input

BX = existing file handle

Return

CF clear if successful

AX = new handle

CF set on error

AX = error code (04h, 06h)

Notes

Both handles refer to the same system file table entry. Moving the file pointer for one handle also moves it for the other.

Closing one handle does not affect the other until both are closed.

The new handle has the same access rights and sharing mode as the original.

Binding

MASM

include macrolib.inc mov bx, handle @SvcDupHandle handle dw 1234h

C

#include <svc.h> unsigned short newhandle; unsigned short oldhandle = 0x1234; newhandle = SvcDupHandle(oldhandle);

The underlying pragma is defined as:

extern unsigned short SvcDupHandle(unsigned short handle); #pragma aux SvcDupHandle = \ "hlt" \ "db 0" \ "db NOT 0" \ parm [bx] \ value [ax] \ modify [ax bx cx dx];

See also

INT 21h AH=45h – DOS duplicate handle

SVC API
Supervisor calls	en:docs:mvm:api:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
Structures	FCB XFCB FILETIME FILEDATE