2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: services/fs/minix/minix.c
6 * PROGRAMMER: David Welch (welch@mcmail.com)
10 /* INCLUDES *****************************************************************/
12 #include <ddk/ntddk.h>
20 /* FUNCTIONS ***************************************************************/
22 BOOLEAN MinixReadPage(PDEVICE_OBJECT DeviceObject,
31 Result = MinixReadSector(DeviceObject,
32 (Offset + (i * PAGE_SIZE)) / BLOCKSIZE,
33 (Buffer + (i * PAGE_SIZE)));
42 BOOLEAN MinixReadSector(IN PDEVICE_OBJECT pDeviceObject,
46 LARGE_INTEGER sectorNumber;
48 IO_STATUS_BLOCK ioStatus;
54 DPRINT("MinixReadSector(pDeviceObject %x, DiskSector %d, Buffer %x)\n",
55 pDeviceObject,DiskSector,Buffer);
57 sectorNumber.u.HighPart = 0;
58 sectorNumber.u.LowPart = DiskSector * BLOCKSIZE;
60 KeInitializeEvent(&event, NotificationEvent, FALSE);
62 sectorSize = BLOCKSIZE;
64 mbr = ExAllocatePool(NonPagedPool, sectorSize);
71 irp = IoBuildSynchronousFsdRequest(IRP_MJ_READ,
84 status = IoCallDriver(pDeviceObject,
87 if (status == STATUS_PENDING) {
88 KeWaitForSingleObject(&event,
93 status = ioStatus.Status;
96 if (!NT_SUCCESS(status)) {
101 RtlCopyMemory(Buffer,mbr,sectorSize);
107 BOOLEAN MinixWriteSector(IN PDEVICE_OBJECT pDeviceObject,
111 LARGE_INTEGER sectorNumber;
113 IO_STATUS_BLOCK ioStatus;
118 DPRINT("MinixWriteSector(pDeviceObject %x, DiskSector %d, Buffer %x)\n",
119 pDeviceObject,DiskSector,Buffer);
121 sectorNumber.u.HighPart = 0;
122 sectorNumber.u.LowPart = DiskSector * BLOCKSIZE;
124 KeInitializeEvent(&event, NotificationEvent, FALSE);
126 sectorSize = BLOCKSIZE;
128 irp = IoBuildSynchronousFsdRequest(IRP_MJ_WRITE,
137 status = IoCallDriver(pDeviceObject,
140 if (status == STATUS_PENDING) {
141 KeWaitForSingleObject(&event,
146 status = ioStatus.Status;
149 if (!NT_SUCCESS(status)) {