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;
31 PDEVICE_OBJECT DeviceObject,
37 Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;
38 Irp->IoStatus.Information = 0;
39 return STATUS_UNSUCCESSFUL;
41 PDEVICE_EXTENSION DeviceExt = DeviceObject->DeviceExtension;
42 PIO_STACK_LOCATION IoSp = IoGetCurrentIrpStackLocation(Irp);
43 PFILE_OBJECT FileObject = IoSp->FileObject;
49 Length = IoSp->Parameters.Read.Length;
50 Buffer = MmGetSystemAddressForMdl(Irp->MdlAddress);
51 Offset = IoSp->Parameters.Read.ByteOffset.u.LowPart;
53 Status = AfdReadFile(DeviceExt, FileObject, Buffer, Length, Offset);
55 Irp->IoStatus.Status = Status;
56 Irp->IoStatus.Information = Length;
57 IoCompleteRequest(Irp, IO_NO_INCREMENT);
66 PDEVICE_OBJECT DeviceObject,
69 PDEVICE_EXTENSION DeviceExt = DeviceObject->DeviceExtension;
70 PIO_STACK_LOCATION IoSp = IoGetCurrentIrpStackLocation(Irp);
71 PFILE_OBJECT FileObject = IoSp->FileObject;
79 FCB = FileObject->FsContext;
80 CCB = FileObject->FsContext2;
85 Length = IoSp->Parameters.Write.Length;
86 Buffer = MmGetSystemAddressForMdl(Irp->MdlAddress);
87 Offset = IoSp->Parameters.Write.ByteOffset.u.LowPart;
89 AFD_DbgPrint(MAX_TRACE, ("Called. Length (%d) Buffer (0x%X) Offset (0x%X)\n",
90 Length, Buffer, Offset));
92 assert((FCB->SocketType == SOCK_STREAM) || (FCB->SocketType == SOCK_DGRAM));
94 switch (FCB->SocketType) {
96 /* FIXME: Support connectionful communication */
99 /* Connectionless communication */
100 //Status = TdiSendDatagram(FCB->TdiAddressObject, WH2N(2000), 0x7F000001, Buffer, Length);
101 //if (!NT_SUCCESS(Status)) {
106 /* FIXME: Support raw communication */
110 Irp->IoStatus.Status = Status;
111 Irp->IoStatus.Information = Length;
112 IoCompleteRequest(Irp, IO_NO_INCREMENT);
114 AFD_DbgPrint(MAX_TRACE, ("Leaving.\n"));