2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Ancillary Function Driver
5 * PURPOSE: File object read/write functions
6 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * CSH 01/09-2000 Created
13 PDEVICE_EXTENSION DeviceExt
,
14 PFILE_OBJECT FileObject
,
19 * FUNCTION: Reads data from a file
24 return STATUS_UNSUCCESSFUL
;
29 PDEVICE_OBJECT DeviceObject
,
35 Irp
->IoStatus
.Status
= STATUS_UNSUCCESSFUL
;
36 Irp
->IoStatus
.Information
= 0;
37 return STATUS_UNSUCCESSFUL
;
39 PDEVICE_EXTENSION DeviceExt
= DeviceObject
->DeviceExtension
;
40 PIO_STACK_LOCATION IoSp
= IoGetCurrentIrpStackLocation(Irp
);
41 PFILE_OBJECT FileObject
= IoSp
->FileObject
;
47 Length
= IoSp
->Parameters
.Read
.Length
;
48 Buffer
= MmGetSystemAddressForMdl(Irp
->MdlAddress
);
49 Offset
= IoSp
->Parameters
.Read
.ByteOffset
.u
.LowPart
;
51 Status
= AfdReadFile(DeviceExt
, FileObject
, Buffer
, Length
, Offset
);
53 Irp
->IoStatus
.Status
= Status
;
54 Irp
->IoStatus
.Information
= Length
;
55 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
62 PDEVICE_OBJECT DeviceObject
,
65 PDEVICE_EXTENSION DeviceExt
= DeviceObject
->DeviceExtension
;
66 PIO_STACK_LOCATION IoSp
= IoGetCurrentIrpStackLocation(Irp
);
67 PFILE_OBJECT FileObject
= IoSp
->FileObject
;
75 FCB
= FileObject
->FsContext
;
76 CCB
= FileObject
->FsContext2
;
78 Length
= IoSp
->Parameters
.Write
.Length
;
79 Buffer
= MmGetSystemAddressForMdl(Irp
->MdlAddress
);
80 Offset
= IoSp
->Parameters
.Write
.ByteOffset
.u
.LowPart
;
82 AFD_DbgPrint(MIN_TRACE
, ("Called. Length (%d) Buffer (0x%X) Offset (0x%X)\n",
83 Length
, Buffer
, Offset
));
85 /* FIXME: Connectionless communication only */
86 //Status = TdiSendDatagram(FCB->TdiAddressObject, WH2N(2000), 0x7F000001, Buffer, Length);
87 //if (!NT_SUCCESS(Status))
90 Irp
->IoStatus
.Status
= Status
;
91 Irp
->IoStatus
.Information
= Length
;
92 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
94 AFD_DbgPrint(MIN_TRACE
, ("Leaving.\n"));