-/* $Id: iofuncs.h,v 1.6 2000/03/05 19:17:37 ea Exp $ */
+/* $Id: iofuncs.h,v 1.7 2000/03/06 01:02:30 ea Exp $ */
/* IO MANAGER ***************************************************************/
BOOLEAN
* On failure NULL
*/
PIRP
+STDCALL
IoAllocateIrp (
CCHAR StackSize,
BOOLEAN ChargeQuota
* FUNCTION: Sends an irp to the next lower driver
*/
NTSTATUS
+FASTCALL
+IofCallDriver (
+ PDEVICE_OBJECT DeviceObject,
+ PIRP Irp
+ );
+NTSTATUS
+STDCALL
IoCallDriver (
PDEVICE_OBJECT DeviceObject,
- PIRP irp
+ PIRP Irp
);
-
BOOLEAN
IoCancelIrp (
PIRP Irp
* thread making the request
*/
VOID
+FASTCALL
+IofCompleteRequest (
+ PIRP Irp,
+ CCHAR PriorityBoost
+ );
+VOID
+STDCALL
IoCompleteRequest (
PIRP Irp,
CCHAR PriorityBoost
);
-
NTSTATUS
IoConnectInterrupt (
PKINTERRUPT * InterruptObject,
IoFreeController (
PCONTROLLER_OBJECT ControllerObject
);
-
VOID
+STDCALL
IoFreeIrp (
PIRP Irp
);
-
VOID
IoFreeMapRegisters (
PADAPTER_OBJECT AdapterObject,
PFILE_OBJECT * FileObject,
PDEVICE_OBJECT * DeviceObject
);
-
PDEVICE_OBJECT
+STDCALL
IoGetDeviceToVerify (
PETHREAD Thread
);
-
PGENERIC_MAPPING
IoGetFileObjectGenericMapping (VOID);
* StackSize = Number of stack locations in the IRP
*/
VOID
+STDCALL
IoInitializeIrp (
PIRP Irp,
USHORT PacketSize,
IoIsErrorUserInduced (
NTSTATUS Status
);
-
+BOOLEAN
+STDCALL
+IoIsOperationSynchronous (
+ IN PIRP Irp
+ );
BOOLEAN
IoIsTotalDeviceFailure (
NTSTATUS Status
);
-
PIRP
+STDCALL
IoMakeAssociatedIrp (
PIRP Irp,
CCHAR StackSize
);
-
PHYSICAL_ADDRESS
IoMapTransfer (
PADAPTER_OBJECT AdapterObject,
-/*
+/* $Id: irp.c,v 1.26 2000/03/06 01:02:30 ea Exp $
+ *
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
* FILE: ntoskrnl/io/irp.c
/* FUNCTIONS ****************************************************************/
-PDEVICE_OBJECT IoGetDeviceToVerify(PETHREAD Thread)
+PDEVICE_OBJECT
+STDCALL
+IoGetDeviceToVerify (PETHREAD Thread)
/*
* FUNCTION: Returns a pointer to the device, representing a removable-media
* device, that is the target of the given thread's I/O request
UNIMPLEMENTED;
}
-VOID IoFreeIrp(PIRP Irp)
+
+VOID
+STDCALL
+IoFreeIrp (PIRP Irp)
/*
* FUNCTION: Releases a caller allocated irp
* ARGUMENTS:
ExFreePool(Irp);
}
-PIRP IoMakeAssociatedIrp(PIRP Irp, CCHAR StackSize)
+
+PIRP
+STDCALL
+IoMakeAssociatedIrp (PIRP Irp, CCHAR StackSize)
/*
* FUNCTION: Allocates and initializes an irp to associated with a master irp
* ARGUMENTS:
UNIMPLEMENTED;
}
-VOID IoMarkIrpPending(PIRP Irp)
+
+/**********************************************************************
+ * NAME INTERNAL
+ * IoMarkIrpPending
+ */
+VOID
+IoMarkIrpPending (PIRP Irp)
/*
* FUNCTION: Marks the specified irp, indicating further processing will
* be required by other driver routines
IoGetCurrentIrpStackLocation(Irp)->Control |= SL_PENDING_RETURNED;
}
-USHORT IoSizeOfIrp(CCHAR StackSize)
+
+/**********************************************************************
+ * NAME INTERNAL
+ * IoSizeOfIrp
+ */
+USHORT
+IoSizeOfIrp (CCHAR StackSize)
/*
* FUNCTION: Determines the size of an IRP
* ARGUMENTS:
return(sizeof(IRP)+((StackSize-1)*sizeof(IO_STACK_LOCATION)));
}
-VOID IoInitializeIrp(PIRP Irp, USHORT PacketSize, CCHAR StackSize)
+
+VOID
+STDCALL
+IoInitializeIrp (PIRP Irp, USHORT PacketSize, CCHAR StackSize)
/*
* FUNCTION: Initalizes an irp allocated by the caller
* ARGUMENTS:
assert(Irp != NULL);
memset(Irp, 0, PacketSize);
+ Irp->Size = PacketSize;
Irp->StackCount = StackSize;
Irp->CurrentLocation = StackSize;
Irp->Tail.Overlay.CurrentStackLocation = IoGetCurrentIrpStackLocation(Irp);
}
-PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
+
+/**********************************************************************
+ * NAME INTERNAL
+ * IoGetCurrentIrpStackLocation
+ */
+PIO_STACK_LOCATION
+IoGetCurrentIrpStackLocation (PIRP Irp)
/*
* FUNCTION: Gets a pointer to the callers location in the I/O stack in
* the given IRP
return(&Irp->Stack[(ULONG)Irp->CurrentLocation]);
}
-VOID IoSetNextIrpStackLocation(PIRP Irp)
+
+/**********************************************************************
+ * NAME INTERNAL
+ * IoSetNextIrpStackLocation
+ */
+VOID
+IoSetNextIrpStackLocation (PIRP Irp)
{
Irp->CurrentLocation--;
Irp->Tail.Overlay.CurrentStackLocation--;
}
-PIO_STACK_LOCATION IoGetNextIrpStackLocation(PIRP Irp)
+
+/**********************************************************************
+ * NAME INTERNAL
+ * IoGetNextIrpStackLocation
+ */
+PIO_STACK_LOCATION
+IoGetNextIrpStackLocation (PIRP Irp)
/*
* FUNCTION: Gives a higher level driver access to the next lower driver's
* I/O stack location
return(&Irp->Stack[Irp->CurrentLocation-1]);
}
-NTSTATUS IoCallDriver(PDEVICE_OBJECT DeviceObject, PIRP Irp)
+
+NTSTATUS
+FASTCALL
+IofCallDriver (PDEVICE_OBJECT DeviceObject, PIRP Irp)
/*
* FUNCTION: Sends an IRP to the next lower driver
*/
return Status;
}
-PIRP IoAllocateIrp(CCHAR StackSize, BOOLEAN ChargeQuota)
+
+NTSTATUS
+STDCALL
+IoCallDriver (PDEVICE_OBJECT DeviceObject, PIRP Irp)
+{
+ return IofCallDriver (
+ DeviceObject,
+ Irp
+ );
+}
+
+
+PIRP
+STDCALL
+IoAllocateIrp (CCHAR StackSize, BOOLEAN ChargeQuota)
/*
* FUNCTION: Allocates an IRP
* ARGUMENTS:
return Irp;
}
-VOID IoSetCompletionRoutine(PIRP Irp,
+
+/**********************************************************************
+ * NAME INTERNAL
+ * IoSetCompletionRoutine
+ */
+VOID
+IoSetCompletionRoutine (PIRP Irp,
PIO_COMPLETION_ROUTINE CompletionRoutine,
PVOID Context,
BOOLEAN InvokeOnSuccess,
(KPRIORITY)(*SystemArgument2));
}
-VOID IoCompleteRequest(PIRP Irp, CCHAR PriorityBoost)
+
+VOID
+FASTCALL
+IofCompleteRequest (PIRP Irp, CCHAR PriorityBoost)
/*
* FUNCTION: Indicates the caller has finished all processing for a given
* I/O request and is returning the given IRP to the I/O manager
}
}
+
+VOID
+STDCALL
+IoCompleteRequest (PIRP Irp, CCHAR PriorityBoost)
+{
+ IofCompleteRequest (
+ Irp,
+ PriorityBoost
+ );
+}
+
+
+/**********************************************************************
+ * NAME EXPORTED
+ * IoIsOperationSynchronous@4
+ *
+ * DESCRIPTION
+ * Check if the I/O operation associated with the given IRP
+ * is synchronous.
+ *
+ * ARGUMENTS
+ * Irp Packet to check.
+ *
+ * RETURN VALUE
+ * TRUE if Irp's operation is synchronous; otherwise FALSE.
+ */
+BOOLEAN
+STDCALL
+IoIsOperationSynchronous (
+ IN PIRP Irp
+ )
+{
+ ULONG Flags = 0;
+ PFILE_OBJECT FileObject = NULL;
+
+ /*
+ * Check the associated FILE_OBJECT's
+ * flags first.
+ */
+ FileObject = Irp->Tail.Overlay.OriginalFileObject;
+ if (!(FO_SYNCHRONOUS_IO & FileObject->Flags))
+ {
+ /* Check IRP's flags. */
+ Flags = Irp->Flags;
+ if (!( (IRP_SYNCHRONOUS_API | IRP_SYNCHRONOUS_PAGING_IO)
+ & Flags
+ ))
+ {
+ return FALSE;
+ }
+ }
+ /*
+ * Check more IRP's flags.
+ */
+ Flags = Irp->Flags;
+ if ( !(IRP_MOUNT_COMPLETION & Flags)
+ || (IRP_SYNCHRONOUS_PAGING_IO & Flags)
+ )
+ {
+ return TRUE;
+ }
+ /*
+ * Otherwise, it is an
+ * asynchronous operation.
+ */
+ return FALSE;
+}
+
+
+/* EOF */
-; $Id: ntoskrnl.edf,v 1.39 2000/03/05 19:17:40 ea Exp $
+; $Id: ntoskrnl.edf,v 1.40 2000/03/06 01:02:30 ea Exp $
;
; reactos/ntoskrnl/ntoskrnl.def
;
FsRtlUninitializeFileLock=FsRtlUninitializeFileLock@4
FsRtlUninitializeLargeMcb=FsRtlUninitializeLargeMcb@4
FsRtlUninitializeMcb=FsRtlUninitializeMcb@4
+IoAllocateIrp=IoAllocateIrp@8
IoAllocateController
IoAttachDeviceToDeviceStack
IoBuildSynchronousFsdRequest
-IoCallDriver
-IoCompleteRequest
+IoCallDriver=IoCallDriver@8
+IoCompleteRequest=IoCompleteRequest@8
IoConnectInterrupt
IoCreateController
IoCreateDevice
IoDeleteDevice
IoDisconnectInterrupt
IoFreeController
+IoFreeIrp=IoFreeIrp@4
IoGetBaseFileSystemDeviceObject=IoGetBaseFileSystemDeviceObject@4
IoGetCurrentIrpStackLocation
+IoGetDeviceToVerify=IoGetDeviceToVerify@4
IoGetRelatedDeviceObject=IoGetRelatedDeviceObject@4
IoInitializeDpcRequest
+IoInitializeIrp=IoInitializeIrp@12
IoInitializeTimer
+IoIsOperationSynchronous=IoIsOperationSynchronous@4
+IoMakeAssociatedIrp@8
IoMarkIrpPending
IoRegisterFileSystem
IoRequestDpc
IoStartNextPacketByKey
IoStartTimer
IoStopTimer
+;IofCallDriver=@IofCallDriver@0
+IofCallDriver=IofCallDriver@8
+;IofCompleteRequest=@IofCompleteRequest@0
+IofCompleteRequest=IofCompleteRequest@8
KdDebuggerEnabled DATA
KdDebuggerNotPresent DATA
KdPollBreakIn=KdPollBreakIn@0