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 *****************************************************************/
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
)) {