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>
14 #include <internal/string.h>
17 #include <internal/debug.h>
21 /* FUNCTIONS ***************************************************************/
23 BOOLEAN
MinixReadSector(IN PDEVICE_OBJECT pDeviceObject
,
27 LARGE_INTEGER sectorNumber
;
29 IO_STATUS_BLOCK ioStatus
;
35 DPRINT("MinixReadSector(pDeviceObject %x, DiskSector %d, Buffer %x)\n",
36 pDeviceObject
,DiskSector
,Buffer
);
38 sectorNumber
.HighPart
= 0;
39 sectorNumber
.LowPart
= DiskSector
* BLOCKSIZE
;
41 KeInitializeEvent(&event
, NotificationEvent
, FALSE
);
43 sectorSize
= BLOCKSIZE
;
45 mbr
= ExAllocatePool(NonPagedPool
, sectorSize
);
52 irp
= IoBuildSynchronousFsdRequest(IRP_MJ_READ
,
65 status
= IoCallDriver(pDeviceObject
,
68 if (status
== STATUS_PENDING
) {
69 KeWaitForSingleObject(&event
,
74 status
= ioStatus
.Status
;
77 if (!NT_SUCCESS(status
)) {
82 RtlCopyMemory(Buffer
,mbr
,sectorSize
);
88 BOOLEAN
MinixWriteSector(IN PDEVICE_OBJECT pDeviceObject
,
92 LARGE_INTEGER sectorNumber
;
94 IO_STATUS_BLOCK ioStatus
;
99 DPRINT("MinixWriteSector(pDeviceObject %x, DiskSector %d, Buffer %x)\n",
100 pDeviceObject
,DiskSector
,Buffer
);
102 sectorNumber
.HighPart
= 0;
103 sectorNumber
.LowPart
= DiskSector
* BLOCKSIZE
;
105 KeInitializeEvent(&event
, NotificationEvent
, FALSE
);
107 sectorSize
= BLOCKSIZE
;
109 irp
= IoBuildSynchronousFsdRequest(IRP_MJ_WRITE
,
118 status
= IoCallDriver(pDeviceObject
,
121 if (status
== STATUS_PENDING
) {
122 KeWaitForSingleObject(&event
,
127 status
= ioStatus
.Status
;
130 if (!NT_SUCCESS(status
)) {