Some work on winsock stack
[reactos.git] / reactos / drivers / net / afd / afd / rdwr.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Ancillary Function Driver
4 * FILE: afd/rdwr.c
5 * PURPOSE: File object read/write functions
6 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
7 * REVISIONS:
8 * CSH 01/09-2000 Created
9 */
10 #include <afd.h>
11
12 NTSTATUS AfdReadFile(
13 PDEVICE_EXTENSION DeviceExt,
14 PFILE_OBJECT FileObject,
15 PVOID Buffer,
16 ULONG Length,
17 ULONG Offset)
18 /*
19 * FUNCTION: Reads data from a file
20 */
21 {
22 UNIMPLEMENTED
23
24 return STATUS_UNSUCCESSFUL;
25 }
26
27
28 NTSTATUS AfdRead(
29 PDEVICE_OBJECT DeviceObject,
30 PIRP Irp)
31 {
32 #if 1
33 UNIMPLEMENTED
34
35 Irp->IoStatus.Status = STATUS_UNSUCCESSFUL;
36 Irp->IoStatus.Information = 0;
37 return STATUS_UNSUCCESSFUL;
38 #else
39 PDEVICE_EXTENSION DeviceExt = DeviceObject->DeviceExtension;
40 PIO_STACK_LOCATION IoSp = IoGetCurrentIrpStackLocation(Irp);
41 PFILE_OBJECT FileObject = IoSp->FileObject;
42 NTSTATUS Status;
43 ULONG Length;
44 PVOID Buffer;
45 ULONG Offset;
46
47 Length = IoSp->Parameters.Read.Length;
48 Buffer = MmGetSystemAddressForMdl(Irp->MdlAddress);
49 Offset = IoSp->Parameters.Read.ByteOffset.u.LowPart;
50
51 Status = AfdReadFile(DeviceExt, FileObject, Buffer, Length, Offset);
52
53 Irp->IoStatus.Status = Status;
54 Irp->IoStatus.Information = Length;
55 IoCompleteRequest(Irp, IO_NO_INCREMENT);
56 return Status;
57 #endif
58 }
59
60
61 NTSTATUS AfdWrite(
62 PDEVICE_OBJECT DeviceObject,
63 PIRP Irp)
64 {
65 PDEVICE_EXTENSION DeviceExt = DeviceObject->DeviceExtension;
66 PIO_STACK_LOCATION IoSp = IoGetCurrentIrpStackLocation(Irp);
67 PFILE_OBJECT FileObject = IoSp->FileObject;
68 NTSTATUS Status;
69 ULONG Length;
70 PVOID Buffer;
71 ULONG Offset;
72 PAFDFCB FCB;
73 PAFDCCB CCB;
74
75 FCB = FileObject->FsContext;
76 CCB = FileObject->FsContext2;
77
78 Length = IoSp->Parameters.Write.Length;
79 Buffer = MmGetSystemAddressForMdl(Irp->MdlAddress);
80 Offset = IoSp->Parameters.Write.ByteOffset.u.LowPart;
81
82 AFD_DbgPrint(MIN_TRACE, ("Called. Length (%d) Buffer (0x%X) Offset (0x%X)\n",
83 Length, Buffer, Offset));
84
85 /* FIXME: Connectionless communication only */
86 //Status = TdiSendDatagram(FCB->TdiAddressObject, WH2N(2000), 0x7F000001, Buffer, Length);
87 //if (!NT_SUCCESS(Status))
88 Length = 0;
89
90 Irp->IoStatus.Status = Status;
91 Irp->IoStatus.Information = Length;
92 IoCompleteRequest(Irp, IO_NO_INCREMENT);
93
94 AFD_DbgPrint(MIN_TRACE, ("Leaving.\n"));
95
96 return Status;
97 }
98
99 /* EOF */