mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Added cache manager prototypes.
Fixed Io macros. Fixed and exported more hal functions. svn path=/trunk/; revision=1180
This commit is contained in:
parent
65a13ef159
commit
19e66992de
16 changed files with 839 additions and 287 deletions
|
@ -1,10 +1,328 @@
|
|||
|
||||
#ifndef _NTOS_CCFUNCS_H
|
||||
#define _NTOS_CCFUNCS_H
|
||||
/* $Id: ccfuncs.h,v 1.4 2000/03/05 19:17:37 ea Exp $ */
|
||||
/* $Id: ccfuncs.h,v 1.5 2000/06/12 14:51:26 ekohl Exp $ */
|
||||
|
||||
/* exported variables */
|
||||
/*
|
||||
CcFastMdlReadWait
|
||||
CcFastReadNotPossible
|
||||
CcFastReadWait
|
||||
*/
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcCanIWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG BytesToWrite,
|
||||
IN BOOLEAN Wait,
|
||||
IN BOOLEAN Retrying
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcCopyRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID Buffer,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcCopyWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
IN PVOID Buffer
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcDeferWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PCC_POST_DEFERRED_WRITE PostRoutine,
|
||||
IN PVOID Context1,
|
||||
IN PVOID Context2,
|
||||
IN ULONG BytesToWrite,
|
||||
IN BOOLEAN Retrying
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcFastCopyRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG FileOffset,
|
||||
IN ULONG Length,
|
||||
IN ULONG PageCount,
|
||||
OUT PVOID Buffer,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcFastCopyWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN PVOID Buffer
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcFlushCache (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||
IN PLARGE_INTEGER FileOffset OPTIONAL,
|
||||
IN ULONG Length,
|
||||
OUT PIO_STATUS_BLOCK IoStatus OPTIONAL
|
||||
);
|
||||
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
CcGetDirtyPages (
|
||||
IN PVOID LogHandle,
|
||||
IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine,
|
||||
IN PVOID Context1,
|
||||
IN PVOID Context2
|
||||
);
|
||||
|
||||
PFILE_OBJECT
|
||||
STDCALL
|
||||
CcGetFileObjectFromBcb (
|
||||
IN PVOID Bcb
|
||||
);
|
||||
|
||||
PFILE_OBJECT
|
||||
STDCALL
|
||||
CcGetFileObjectFromSectionPtrs (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer
|
||||
);
|
||||
|
||||
LARGE_INTEGER
|
||||
STDCALL
|
||||
CcGetLsnForFileObject (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
OUT PLARGE_INTEGER OldestLsn OPTIONAL
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcInitializeCacheMap (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PCC_FILE_SIZES FileSizes,
|
||||
IN BOOLEAN PinAccess,
|
||||
IN PCACHE_MANAGER_CALLBACKS CallBacks,
|
||||
IN PVOID LazyWriterContext
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcIsThereDirtyData (
|
||||
IN PVPB Vpb
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcMapData (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb,
|
||||
OUT PVOID * Buffer
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
OUT PMDL * MdlChain,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlReadComplete (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PMDL MdlChain
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcMdlWriteComplete (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN PMDL MdlChain
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPinMappedData (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPinRead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb,
|
||||
OUT PVOID * Buffer
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcPrepareMdlWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
OUT PMDL * MdlChain,
|
||||
OUT PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPreparePinWrite (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN Zero,
|
||||
IN BOOLEAN Wait,
|
||||
OUT PVOID * Bcb,
|
||||
OUT PVOID * Buffer
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcPurgeCacheSection (
|
||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||
IN PLARGE_INTEGER FileOffset OPTIONAL,
|
||||
IN ULONG Length,
|
||||
IN BOOLEAN UninitializeCacheMaps
|
||||
);
|
||||
|
||||
#define CcReadAhead(FO,FOFF,LEN) \
|
||||
{ \
|
||||
if ((LEN) >= 256) \
|
||||
{ \
|
||||
CcScheduleReadAhead((FO),(FOFF),(LEN)); \
|
||||
} \
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcRepinBcb (
|
||||
IN PVOID Bcb
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcScheduleReadAhead (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetAdditionalCacheAttributes (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN BOOLEAN DisableReadAhead,
|
||||
IN BOOLEAN DisableWriteBehind
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetBcbOwnerPointer (
|
||||
IN PVOID Bcb,
|
||||
IN PVOID Owner
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetDirtyPageThreshold (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG DirtyPageThreshold
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetDirtyPinnedData (
|
||||
IN PVOID Bcb,
|
||||
IN PLARGE_INTEGER Lsn OPTIONAL
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetFileSizes (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PCC_FILE_SIZES FileSizes
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetLogHandleForFile (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PVOID LogHandle,
|
||||
IN PFLUSH_TO_LSN FlushToLsnRoutine
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcSetReadAheadGranularity (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN ULONG Granularity
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcUninitializeCacheMap (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER TruncateSize OPTIONAL,
|
||||
IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcUnpinData (
|
||||
IN PVOID Bcb
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcUnpinDataForThread (
|
||||
IN PVOID Bcb,
|
||||
IN ERESOURCE_THREAD ResourceThreadId
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
CcUnpinRepinnedBcb (
|
||||
IN PVOID Bcb,
|
||||
IN BOOLEAN WriteThrough,
|
||||
IN PIO_STATUS_BLOCK IoStatus
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
CcZeroData (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER StartOffset,
|
||||
IN PLARGE_INTEGER EndOffset,
|
||||
IN BOOLEAN Wait
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
/* EOF */
|
|
@ -1,4 +1,76 @@
|
|||
#ifndef __INCLUDE_DDK_CCTYPES_H
|
||||
#define __INCLUDE_DDK_CCTYPES_H
|
||||
|
||||
typedef struct _CACHE_UNINITIALIZE_EVENT
|
||||
{
|
||||
struct _CACHE_UNINITIALIZE_EVENT * Next;
|
||||
KEVENT Event;
|
||||
} CACHE_UNINITIALIZE_EVENT, *PCACHE_UNINITIALIZE_EVENT;
|
||||
|
||||
typedef struct _CC_FILE_SIZES
|
||||
{
|
||||
LARGE_INTEGER AllocationSize;
|
||||
LARGE_INTEGER FileSize;
|
||||
LARGE_INTEGER ValidDataLength;
|
||||
} CC_FILE_SIZES, *PCC_FILE_SIZES;
|
||||
|
||||
|
||||
typedef VOID (*PCC_POST_DEFERRED_WRITE)(IN PVOID Context1, IN PVOID Context2);
|
||||
|
||||
typedef struct _PUBLIC_BCB
|
||||
{
|
||||
CSHORT NodeTypeCode;
|
||||
CSHORT NodeByteSize;
|
||||
ULONG MappedLength;
|
||||
LARGE_INTEGER MappedFileOffset;
|
||||
} PUBLIC_BCB, *PPUBLIC_BCB;
|
||||
|
||||
typedef VOID (*PDIRTY_PAGE_ROUTINE) (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN PLARGE_INTEGER FileOffset,
|
||||
IN ULONG Length,
|
||||
IN PLARGE_INTEGER OldestLsn,
|
||||
IN PLARGE_INTEGER NewestLsn,
|
||||
IN PVOID Context1,
|
||||
IN PVOID Context2
|
||||
);
|
||||
|
||||
typedef BOOLEAN (*PACQUIRE_FOR_LAZY_WRITE) (
|
||||
IN PVOID Context,
|
||||
IN BOOLEAN Wait
|
||||
);
|
||||
|
||||
typedef VOID (*PRELEASE_FROM_LAZY_WRITE) (
|
||||
IN PVOID Context
|
||||
);
|
||||
|
||||
typedef BOOLEAN (*PACQUIRE_FOR_READ_AHEAD) (
|
||||
IN PVOID Context,
|
||||
IN BOOLEAN Wait
|
||||
);
|
||||
|
||||
typedef VOID (*PRELEASE_FROM_READ_AHEAD) (
|
||||
IN PVOID Context
|
||||
);
|
||||
|
||||
typedef struct _CACHE_MANAGER_CALLBACKS
|
||||
{
|
||||
PACQUIRE_FOR_LAZY_WRITE AcquireForLazyWrite;
|
||||
PRELEASE_FROM_LAZY_WRITE ReleaseFromLazyWrite;
|
||||
PACQUIRE_FOR_READ_AHEAD AcquireForReadAhead;
|
||||
PRELEASE_FROM_READ_AHEAD ReleaseFromReadAhead;
|
||||
} CACHE_MANAGER_CALLBACKS, *PCACHE_MANAGER_CALLBACKS;
|
||||
|
||||
/* this is already defined in iotypes.h */
|
||||
/*
|
||||
typedef struct _SECTION_OBJECT_POINTERS
|
||||
{
|
||||
PVOID DataSectionObject;
|
||||
PVOID SharedCacheMap;
|
||||
PVOID ImageSectionObject;
|
||||
} SECTION_OBJECT_POINTERS, *PSECTION_OBJECT_POINTERS;
|
||||
*/
|
||||
|
||||
typedef VOID (*PFLUSH_TO_LSN)(IN PVOID LogHandle, IN LARGE_INTEGER Lsn);
|
||||
|
||||
#endif /* __INCLUDE_DDK_CCTYPES_H */
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef _INCLUDE_DDK_IOFUNCS_H
|
||||
#define _INCLUDE_DDK_IOFUNCS_H
|
||||
/* $Id: iofuncs.h,v 1.12 2000/06/09 20:02:05 ekohl Exp $ */
|
||||
/* $Id: iofuncs.h,v 1.13 2000/06/12 14:51:26 ekohl Exp $ */
|
||||
|
||||
/* --- EXPORTED BY NTOSKRNL --- */
|
||||
|
||||
|
@ -75,27 +75,27 @@ IoAllocateAdapterChannel (
|
|||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* IoAllocateController@16
|
||||
*
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Sets up a call to a driver supplied controller object as
|
||||
* Sets up a call to a driver supplied controller object as
|
||||
* soon as it is available.
|
||||
*
|
||||
*
|
||||
* ARGUMENTS
|
||||
* ControllerObject
|
||||
* Driver created controller object;
|
||||
*
|
||||
*
|
||||
* DeviceObject
|
||||
* Target device;
|
||||
*
|
||||
*
|
||||
* ExecutionObject
|
||||
* Routine to be called;
|
||||
*
|
||||
*
|
||||
* Context
|
||||
* Driver determined context to be based to the
|
||||
* routine.
|
||||
*
|
||||
* RETURN VALUE
|
||||
* None.
|
||||
* None.
|
||||
*
|
||||
* REVISIONS
|
||||
*
|
||||
|
@ -113,17 +113,17 @@ IoAllocateController (
|
|||
* IoAllocateErrorLogEntry@8
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Allocates an error log packet.
|
||||
*
|
||||
* Allocates an error log packet.
|
||||
*
|
||||
* ARGUMENTS
|
||||
* IoObject
|
||||
* Object which found the error;
|
||||
*
|
||||
* EntrySize
|
||||
* Size in bytes of the packet to be allocated.
|
||||
*
|
||||
*
|
||||
* RETURN VALUE
|
||||
* On success, a pointer to the allocated packet.
|
||||
* On success, a pointer to the allocated packet.
|
||||
* On failure, it returns NULL.
|
||||
*/
|
||||
PVOID
|
||||
|
@ -191,13 +191,22 @@ IoAllocateMdl (
|
|||
PIRP Irp
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Creates a symbolic link between the ARC name of a physical
|
||||
* device and the name of the corresponding device object
|
||||
* ARGUMENTS:
|
||||
* ArcName = ARC name of the device
|
||||
* DeviceName = Name of the device object
|
||||
* NOTES:
|
||||
/**********************************************************************
|
||||
* NAME MACRO
|
||||
* IoAssignArcName
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Creates a symbolic link between the ARC name of a physical
|
||||
* device and the name of the corresponding device object
|
||||
*
|
||||
* ARGUMENTS
|
||||
* ArcName
|
||||
* ARC name of the device
|
||||
*
|
||||
* DeviceName
|
||||
* Name of the device object
|
||||
*
|
||||
* NOTES
|
||||
* VOID
|
||||
* IoAssignArcName (
|
||||
* PUNICODE_STRING ArcName,
|
||||
|
@ -209,28 +218,28 @@ IoAllocateMdl (
|
|||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* IoAssignResources@24
|
||||
*
|
||||
* IoAssignResources@24
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Takes a list of requested hardware resources and allocates
|
||||
* them.
|
||||
*
|
||||
* Takes a list of requested hardware resources and allocates
|
||||
* them.
|
||||
*
|
||||
* ARGUMENTS
|
||||
* RegisterPath
|
||||
* ?
|
||||
*
|
||||
*
|
||||
* DriverClassName
|
||||
* ?
|
||||
*
|
||||
*
|
||||
* DriverObject
|
||||
* Driver object passed to the DriverEntry routine;
|
||||
*
|
||||
*
|
||||
* DeviceObject
|
||||
* ?
|
||||
*
|
||||
*
|
||||
* RequestedResources
|
||||
* List of resources.
|
||||
*
|
||||
*
|
||||
* RETURN VALUE
|
||||
*/
|
||||
NTSTATUS
|
||||
|
@ -589,6 +598,26 @@ STDCALL
|
|||
IoGetConfigurationInformation (
|
||||
VOID
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Gets a pointer to the callers location in the I/O stack in
|
||||
* the given IRP
|
||||
* ARGUMENTS:
|
||||
* Irp = Points to the IRP
|
||||
* RETURNS: A pointer to the stack location
|
||||
*
|
||||
* NOTES:
|
||||
* PIO_STACK_LOCATION
|
||||
* IoGetCurrentIrpStackLocation (PIRP Irp)
|
||||
*/
|
||||
#define IoGetCurrentIrpStackLocation(Irp) \
|
||||
(&(Irp)->Stack[(ULONG)((Irp)->CurrentLocation)])
|
||||
|
||||
/* original macro */
|
||||
/*
|
||||
#define IoGetCurrentIrpStackLocation(Irp) \
|
||||
((Irp)->Tail.Overlay.CurrentStackLocation)
|
||||
*/
|
||||
PEPROCESS
|
||||
STDCALL
|
||||
IoGetCurrentProcess (
|
||||
|
@ -612,11 +641,36 @@ STDCALL
|
|||
IoGetFileObjectGenericMapping (
|
||||
VOID
|
||||
);
|
||||
|
||||
#define IoGetFunctionCodeFromCtlCode(ControlCode) \
|
||||
((ControlCode >> 2) & 0x00000FFF)
|
||||
|
||||
PVOID
|
||||
STDCALL
|
||||
IoGetInitialStack (
|
||||
VOID
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Gives a higher level driver access to the next lower driver's
|
||||
* I/O stack location
|
||||
* ARGUMENTS:
|
||||
* Irp = points to the irp
|
||||
* RETURNS: A pointer to the stack location
|
||||
*
|
||||
* NOTES:
|
||||
* PIO_STACK_LOCATION
|
||||
* IoGetNextIrpStackLocation (PIRP Irp)
|
||||
*/
|
||||
#define IoGetNextIrpStackLocation(Irp) \
|
||||
(&(Irp)->Stack[(Irp)->CurrentLocation-1])
|
||||
|
||||
/* original macro */
|
||||
/*
|
||||
#define IoGetNextIrpStackLocation(Irp) \
|
||||
((Irp)->Tail.Overlay.CurrentStackLocation-1)
|
||||
*/
|
||||
|
||||
PDEVICE_OBJECT
|
||||
STDCALL
|
||||
IoGetRelatedDeviceObject (
|
||||
|
@ -638,6 +692,12 @@ STDCALL
|
|||
IoGetTopLevelIrp (
|
||||
VOID
|
||||
);
|
||||
|
||||
#define IoInitializeDpcRequest(DeviceObject, DpcRoutine) \
|
||||
(KeInitializeDpc(&(DeviceObject)->Dpc, \
|
||||
(PKDEFERRED_ROUTINE)(DpcRoutine), \
|
||||
(DeviceObject)))
|
||||
|
||||
/*
|
||||
* FUNCTION: Initalizes an irp allocated by the caller
|
||||
* ARGUMENTS:
|
||||
|
@ -659,6 +719,21 @@ IoInitializeTimer (
|
|||
PIO_TIMER_ROUTINE TimerRoutine,
|
||||
PVOID Context
|
||||
);
|
||||
|
||||
/*
|
||||
* NOTES:
|
||||
* BOOLEAN
|
||||
* IsErrorUserInduced (NTSTATUS Status)
|
||||
*/
|
||||
#define IoIsErrorUserInduced(Status) \
|
||||
((BOOLEAN)(((Status) == STATUS_DEVICE_NOT_READY) || \
|
||||
((Status) == STATUS_IO_TIMEOUT) || \
|
||||
((Status) == STATUS_MEDIA_WRITE_PROTECTED) || \
|
||||
((Status) == STATUS_NO_MEDIA_IN_DRIVE) || \
|
||||
((Status) == STATUS_VERIFY_REQUIRED) || \
|
||||
((Status) == STATUS_UNRECOGNIZED_MEDIA) || \
|
||||
((Status) == STATUS_WRONG_VOLUME)))
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
IoIsOperationSynchronous (
|
||||
|
@ -675,6 +750,20 @@ IoMakeAssociatedIrp (
|
|||
PIRP Irp,
|
||||
CCHAR StackSize
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Marks the specified irp, indicating further processing will
|
||||
* be required by other driver routines
|
||||
* ARGUMENTS:
|
||||
* Irp = Irp to mark
|
||||
* NOTES:
|
||||
* VOID
|
||||
* IoMarkIrpPending (PIRP Irp)
|
||||
*/
|
||||
#define IoMarkIrpPending(Irp) \
|
||||
(IoGetCurrentIrpStackLocation(Irp)->Control |= SL_PENDING_RETURNED)
|
||||
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoOpenDeviceInstanceKey (
|
||||
|
@ -684,10 +773,14 @@ IoOpenDeviceInstanceKey (
|
|||
DWORD Unknown3,
|
||||
DWORD Unknown4
|
||||
);
|
||||
NTSTATUS STDCALL IoPageRead (PFILE_OBJECT FileObject,
|
||||
PMDL Mdl,
|
||||
PLARGE_INTEGER Offset,
|
||||
PIO_STATUS_BLOCK StatusBlock);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoPageRead (
|
||||
PFILE_OBJECT FileObject,
|
||||
PMDL Mdl,
|
||||
PLARGE_INTEGER Offset,
|
||||
PIO_STATUS_BLOCK StatusBlock
|
||||
);
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
IoQueryDeviceDescription (
|
||||
|
@ -806,6 +899,30 @@ IoReportResourceUsage (
|
|||
BOOLEAN OverrideConflict,
|
||||
PBOOLEAN ConflictDetected
|
||||
);
|
||||
|
||||
#define IoRequestDpc(DeviceObject, Irp, Context) \
|
||||
(KeInsertQueueDpc(&(DeviceObject)->Dpc,(Irp),(Context)))
|
||||
|
||||
#define IoSetCancelRoutine(Irp, NewCancelRoutine) \
|
||||
((PDRIVER_CANCEL)InterlockedExchange((PULONG)&(Irp)->CancelRoutine, \
|
||||
(ULONG)(NewCancelRoutine)));
|
||||
|
||||
#define IoSetCompletionRoutine (Irp,Routine,Context,Success,Error,Cancel) \
|
||||
{ \
|
||||
PIO_STACK_LOCATION param; \
|
||||
assert((Success)||(Error)||(Cancel)?(Routine)!=NULL:TRUE); \
|
||||
param = IoGetNextIrpStackLocation((Irp)); \
|
||||
param->CompletionRoutine=(Routine); \
|
||||
param->CompletionContext=(Context); \
|
||||
param->Control = 0; \
|
||||
if ((Success)) \
|
||||
param->Control = SL_INVOKE_ON_SUCCESS; \
|
||||
if ((Error)) \
|
||||
param->Control |= SL_INVOKE_ON_ERROR; \
|
||||
if ((Cancel)) \
|
||||
param->Control |= SL_INVOKE_ON_CANCEL; \
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IoSetDeviceToVerify (
|
||||
|
@ -826,6 +943,13 @@ IoSetInformation (
|
|||
IN ULONG Length,
|
||||
OUT PVOID FileInformation
|
||||
);
|
||||
|
||||
#define IoSetNextIrpStackLocation(Irp) \
|
||||
{ \
|
||||
(Irp)->CurrentLocation--; \
|
||||
(Irp)->Tail.Overlay.CurrentStackLocation--; \
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IoSetShareAccess (
|
||||
|
@ -844,6 +968,24 @@ STDCALL
|
|||
IoSetTopLevelIrp (
|
||||
IN PIRP Irp
|
||||
);
|
||||
|
||||
/*
|
||||
* FUNCTION: Determines the size of an IRP
|
||||
* ARGUMENTS:
|
||||
* StackSize = number of stack locations in the IRP
|
||||
* RETURNS: The size of the IRP in bytes
|
||||
USHORT
|
||||
IoSizeOfIrp (CCHAR StackSize)
|
||||
*/
|
||||
#define IoSizeOfIrp(StackSize) \
|
||||
((USHORT)(sizeof(IRP)+(((StackSize)-1)*sizeof(IO_STACK_LOCATION))))
|
||||
|
||||
/* original macro */
|
||||
/*
|
||||
#define IoSizeOfIrp(StackSize) \
|
||||
((USHORT)(sizeof(IRP)+((StackSize)*sizeof(IO_STACK_LOCATION))))
|
||||
*/
|
||||
|
||||
/*
|
||||
* FUNCTION: Dequeues the next IRP from the device's associated queue and
|
||||
* calls its StartIo routine
|
||||
|
@ -860,7 +1002,7 @@ IoStartNextPacket (
|
|||
VOID
|
||||
STDCALL
|
||||
IoStartNextPacketByKey (
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
BOOLEAN Cancelable,
|
||||
ULONG Key
|
||||
);
|
||||
|
@ -1051,30 +1193,40 @@ IoWritePartitionTable (
|
|||
* FUNCTION: Returns a pointer to the callers
|
||||
* stack location in the irp
|
||||
*/
|
||||
/*
|
||||
PIO_STACK_LOCATION
|
||||
IoGetCurrentIrpStackLocation (
|
||||
IRP * irp
|
||||
);
|
||||
*/
|
||||
/*
|
||||
ULONG
|
||||
IoGetFunctionCodeFromCtlCode (
|
||||
ULONG ControlCode
|
||||
);
|
||||
*/
|
||||
/*
|
||||
* FUNCTION:
|
||||
*/
|
||||
/*
|
||||
PIO_STACK_LOCATION
|
||||
IoGetNextIrpStackLocation (
|
||||
IRP * irp
|
||||
);
|
||||
*/
|
||||
/*
|
||||
VOID
|
||||
IoInitializeDpcRequest (
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
PIO_DPC_ROUTINE DpcRoutine
|
||||
);
|
||||
*/
|
||||
/*
|
||||
BOOLEAN
|
||||
IoIsErrorUserInduced (
|
||||
NTSTATUS Status
|
||||
);
|
||||
*/
|
||||
BOOLEAN
|
||||
IoIsTotalDeviceFailure (
|
||||
NTSTATUS Status
|
||||
|
@ -1087,21 +1239,28 @@ IoIsTotalDeviceFailure (
|
|||
* must mark it pending otherwise the I/O manager will complete it on
|
||||
* return from the dispatch routine.
|
||||
*/
|
||||
/*
|
||||
VOID
|
||||
IoMarkIrpPending (
|
||||
PIRP Irp
|
||||
);
|
||||
*/
|
||||
/*
|
||||
VOID
|
||||
IoRequestDpc (
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
PIRP Irp,
|
||||
PVOID Context
|
||||
);
|
||||
*/
|
||||
/*
|
||||
PDRIVER_CANCEL
|
||||
IoSetCancelRoutine (
|
||||
PIRP Irp,
|
||||
PDRIVER_CANCEL CancelRoutine
|
||||
);
|
||||
*/
|
||||
/*
|
||||
VOID
|
||||
IoSetCompletionRoutine (
|
||||
PIRP Irp,
|
||||
|
@ -1111,29 +1270,34 @@ IoSetCompletionRoutine (
|
|||
BOOLEAN InvokeOnError,
|
||||
BOOLEAN InvokeOnCancel
|
||||
);
|
||||
*/
|
||||
/*
|
||||
VOID
|
||||
IoSetNextIrpStackLocation (
|
||||
PIRP Irp
|
||||
);
|
||||
*/
|
||||
/*
|
||||
* FUNCTION: Determines the size of an IRP
|
||||
* ARGUMENTS:
|
||||
* StackSize = number of stack locations in the IRP
|
||||
* RETURNS: The size of the IRP in bytes
|
||||
*/
|
||||
/*
|
||||
USHORT
|
||||
IoSizeOfIrp (
|
||||
CCHAR StackSize
|
||||
);
|
||||
*/
|
||||
#if 0
|
||||
// Preliminary guess
|
||||
NTKERNELAPI
|
||||
NTSTATUS
|
||||
IoQueryFileVolumeInformation (
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN FS_INFORMATION_CLASS FsInformationClass,
|
||||
IN ULONG Length,
|
||||
OUT PVOID FsInformation,
|
||||
IN PFILE_OBJECT FileObject,
|
||||
IN FS_INFORMATION_CLASS FsInformationClass,
|
||||
IN ULONG Length,
|
||||
OUT PVOID FsInformation,
|
||||
OUT PULONG ReturnedLength
|
||||
);
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: ddk.h,v 1.14 2000/04/08 19:06:29 ekohl Exp $
|
||||
/* $Id: ddk.h,v 1.15 2000/06/12 14:52:05 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -84,7 +84,17 @@ HalAdjustResourceList (
|
|||
PCM_RESOURCE_LIST Resources
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
HalAllocateAdapterChannel (
|
||||
IN PADAPTER_OBJECT AdapterObject,
|
||||
ULONG Unknown2,
|
||||
ULONG Unknown3,
|
||||
ULONG Unknown4
|
||||
);
|
||||
|
||||
PVOID
|
||||
STDCALL
|
||||
HalAllocateCommonBuffer (
|
||||
PADAPTER_OBJECT AdapterObject,
|
||||
ULONG Length,
|
||||
|
@ -92,6 +102,13 @@ HalAllocateCommonBuffer (
|
|||
BOOLEAN CacheEnabled
|
||||
);
|
||||
|
||||
PVOID
|
||||
STDCALL
|
||||
HalAllocateCrashDumpRegisters (
|
||||
IN PADAPTER_OBJECT AdapterObject,
|
||||
IN OUT PULONG NumberOfMapRegisters
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
HalAllProcessorsStarted (
|
||||
|
@ -111,12 +128,38 @@ HalAssignSlotResources (
|
|||
PCM_RESOURCE_LIST *AllocatedResources
|
||||
);
|
||||
|
||||
/*
|
||||
HalBeginSystemInterrupt
|
||||
*/
|
||||
|
||||
/*
|
||||
HalCalibratePerformanceCounter
|
||||
*/
|
||||
|
||||
/*
|
||||
FASTCALL
|
||||
HalClearSoftwareInterrupt
|
||||
*/
|
||||
|
||||
/*
|
||||
HalDisableSystemInterrupt
|
||||
*/
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
HalDisplayString (
|
||||
IN PCH String
|
||||
);
|
||||
|
||||
/*
|
||||
HalEnableSystemInterrupt
|
||||
*/
|
||||
|
||||
/*
|
||||
HalEndSystemInterrupt
|
||||
*/
|
||||
|
||||
/* Is this function really exported ?? */
|
||||
VOID
|
||||
HalExamineMBR (
|
||||
PDEVICE_OBJECT DeviceObject,
|
||||
|
@ -125,7 +168,21 @@ HalExamineMBR (
|
|||
PVOID Buffer
|
||||
);
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
HalFlushCommonBuffer (
|
||||
ULONG Unknown1,
|
||||
ULONG Unknown2,
|
||||
ULONG Unknown3,
|
||||
ULONG Unknown4,
|
||||
ULONG Unknown5,
|
||||
ULONG Unknown6,
|
||||
ULONG Unknown7,
|
||||
ULONG Unknown8
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
HalFreeCommonBuffer (
|
||||
PADAPTER_OBJECT AdapterObject,
|
||||
ULONG Length,
|
||||
|
@ -135,6 +192,7 @@ HalFreeCommonBuffer (
|
|||
);
|
||||
|
||||
PADAPTER_OBJECT
|
||||
STDCALL
|
||||
HalGetAdapter (
|
||||
PDEVICE_DESCRIPTION DeviceDescription,
|
||||
PULONG NumberOfMapRegisters
|
||||
|
@ -161,11 +219,16 @@ HalGetBusDataByOffset (
|
|||
ULONG Length
|
||||
);
|
||||
|
||||
/* Is this function really exported ?? */
|
||||
ULONG
|
||||
HalGetDmaAlignmentRequirement (
|
||||
VOID
|
||||
);
|
||||
|
||||
/*
|
||||
HalGetEnvironmentVariable
|
||||
*/
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
HalGetInterruptVector (
|
||||
|
@ -211,11 +274,15 @@ HalQueryRealTimeClock (
|
|||
PTIME_FIELDS Time
|
||||
);
|
||||
|
||||
/* Is this function really exported ?? */
|
||||
VOID
|
||||
HalQuerySystemInformation(VOID);
|
||||
|
||||
ULONG
|
||||
HalReadDmaCounter(PADAPTER_OBJECT AdapterObject);
|
||||
STDCALL
|
||||
HalReadDmaCounter (
|
||||
PADAPTER_OBJECT AdapterObject
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
|
@ -223,6 +290,17 @@ HalReportResourceUsage (
|
|||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
HalRequestIpi (
|
||||
ULONG Unknown
|
||||
);
|
||||
|
||||
/*
|
||||
FASTCALL
|
||||
HalRequestSoftwareInterrupt
|
||||
*/
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
HalReturnToFirmware (
|
||||
|
@ -257,12 +335,24 @@ HalSetDisplayParameters (
|
|||
ULONG CursorPosY
|
||||
);
|
||||
|
||||
/*
|
||||
HalSetEnvironmentVariable
|
||||
*/
|
||||
|
||||
/*
|
||||
HalSetProfileInterval
|
||||
*/
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
HalSetRealTimeClock (
|
||||
PTIME_FIELDS Time
|
||||
);
|
||||
|
||||
/*
|
||||
HalSetTimeIncrement
|
||||
*/
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
HalStartNextProcessor (
|
||||
|
@ -270,6 +360,14 @@ HalStartNextProcessor (
|
|||
ULONG Unknown2
|
||||
);
|
||||
|
||||
/*
|
||||
HalStartProfileInterrupt
|
||||
*/
|
||||
|
||||
/*
|
||||
HalStopProfileInterrupt
|
||||
*/
|
||||
|
||||
ULONG
|
||||
FASTCALL
|
||||
HalSystemVectorDispatchEntry (
|
||||
|
|
|
@ -84,6 +84,7 @@ HalpInitBusHandlers (VOID);
|
|||
VOID HalpCalibrateStallExecution(VOID);
|
||||
|
||||
/* irq.c */
|
||||
VOID HalpDispatchInterrupt (ULONG irq);
|
||||
VOID HalpInitIRQs (VOID);
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/*
|
||||
/* $Id: dma.c,v 1.6 2000/06/12 14:53:38 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/hal/x86/dma.c
|
||||
|
@ -50,11 +51,15 @@ ULONG HalGetDmaAlignmentRequirement()
|
|||
return(1);
|
||||
}
|
||||
|
||||
#if 0
|
||||
PVOID HalAllocateCommonBuffer(PADAPTER_OBJECT AdapterObject,
|
||||
ULONG Length,
|
||||
PPHYSICAL_ADDRESS LogicalAddress,
|
||||
BOOLEAN CacheEnabled)
|
||||
|
||||
PVOID
|
||||
STDCALL
|
||||
HalAllocateCommonBuffer (
|
||||
PADAPTER_OBJECT AdapterObject,
|
||||
ULONG Length,
|
||||
PPHYSICAL_ADDRESS LogicalAddress,
|
||||
BOOLEAN CacheEnabled
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Allocates memory that is visible to both the processor(s) and
|
||||
* a dma device
|
||||
|
@ -68,7 +73,8 @@ PVOID HalAllocateCommonBuffer(PADAPTER_OBJECT AdapterObject,
|
|||
* RETURNS: The base virtual address of the memory allocated
|
||||
* NULL on failure
|
||||
*/
|
||||
{/*
|
||||
{
|
||||
/*
|
||||
PVOID Buffer;
|
||||
PHYSICAL_ADDRESS highest_address;
|
||||
|
||||
|
@ -85,15 +91,36 @@ PVOID HalAllocateCommonBuffer(PADAPTER_OBJECT AdapterObject,
|
|||
LogicalAddress->HighPart = 0;
|
||||
LogicalAddress->LowPart = MmGetPhysicalAddress(Buffer);
|
||||
return(Buffer);*/
|
||||
return NULL;
|
||||
}
|
||||
|
||||
VOID HalFreeCommonBuffer(PADAPTER_OBJECT AdapterObject,
|
||||
ULONG Length,
|
||||
PHYSICAL_ADDRESS LogicalAddress,
|
||||
PVOID VirtualAddress,
|
||||
BOOLEAN CacheEnabled)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
HalFlushCommonBuffer (
|
||||
ULONG Unknown1,
|
||||
ULONG Unknown2,
|
||||
ULONG Unknown3,
|
||||
ULONG Unknown4,
|
||||
ULONG Unknown5,
|
||||
ULONG Unknown6,
|
||||
ULONG Unknown7,
|
||||
ULONG Unknown8
|
||||
)
|
||||
{
|
||||
MmFreeContiguousMemory(VirtualAddress);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
HalFreeCommonBuffer (
|
||||
PADAPTER_OBJECT AdapterObject,
|
||||
ULONG Length,
|
||||
PHYSICAL_ADDRESS LogicalAddress,
|
||||
PVOID VirtualAddress,
|
||||
BOOLEAN CacheEnabled
|
||||
)
|
||||
{
|
||||
MmFreeContiguousMemory (VirtualAddress);
|
||||
}
|
||||
|
||||
PADAPTER_OBJECT
|
||||
|
@ -119,10 +146,15 @@ HalGetAdapter (
|
|||
adapter = ExAllocatePool(NonPagedPool,sizeof(ADAPTER_OBJECT));
|
||||
RtlCopyMemory(&adapter->desc,DeviceDescription,sizeof(DEVICE_DESCRIPTION));
|
||||
*/
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
ULONG HalReadDmaCounter(PADAPTER_OBJECT AdapterObject)
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
HalReadDmaCounter (
|
||||
PADAPTER_OBJECT AdapterObject
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
@ -134,3 +166,5 @@ ULONG KeGetDcacheFillSize()
|
|||
{
|
||||
return(1);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: irq.c,v 1.12 2000/06/04 19:49:37 ekohl Exp $
|
||||
/* $Id: irq.c,v 1.13 2000/06/12 14:53:38 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -92,7 +92,9 @@ static KSPIN_LOCK isr_table_lock = {0,};
|
|||
#define PRESENT (0x8000)
|
||||
#define I486_INTERRUPT_GATE (0xe00)
|
||||
|
||||
asmlinkage VOID KiInterruptDispatch(ULONG irq)
|
||||
asmlinkage
|
||||
VOID
|
||||
HalpDispatchInterrupt (ULONG irq)
|
||||
/*
|
||||
* FUNCTION: Calls the irq specific handler for an irq
|
||||
* ARGUMENTS:
|
||||
|
@ -127,7 +129,8 @@ asmlinkage VOID KiInterruptDispatch(ULONG irq)
|
|||
}
|
||||
else
|
||||
{
|
||||
DPRINT("KiInterruptDispatch(irq %d)\n",irq);
|
||||
DPRINT("HalpDispatchInterrupt(irq %d)\n",irq);
|
||||
// KiInterruptDispatch (irq);
|
||||
/*
|
||||
* Iterate the list until one of the isr tells us its device interrupted
|
||||
*/
|
||||
|
@ -371,20 +374,20 @@ IoDisconnectInterrupt(PKINTERRUPT InterruptObject)
|
|||
}
|
||||
|
||||
#if 0
|
||||
ULONG
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
HalDisableSystemInterrupt (
|
||||
ULONG Unknown0,
|
||||
ULONG Unknown1
|
||||
ULONG Vector,
|
||||
KIRQL Irql
|
||||
)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
ULONG
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
HalEnableSystemInterrupt (
|
||||
ULONG Unknown0,
|
||||
ULONG Vector,
|
||||
ULONG Unknown1,
|
||||
ULONG Unknown2
|
||||
)
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
"orb $1<<"##x",%al\n\t" \
|
||||
"outb %al,$0x21\n\t" \
|
||||
"pushl $"##x"\n\t" \
|
||||
"call _KiInterruptDispatch\n\t"\
|
||||
"call _HalpDispatchInterrupt\n\t"\
|
||||
"popl %eax\n\t" \
|
||||
"popl %eax\n\t" \
|
||||
"popl %es\n\t" \
|
||||
|
@ -51,7 +51,7 @@
|
|||
"orb $1<<("##x"-8),%al\n\t" \
|
||||
"outb %al,$0xa1\n\t" \
|
||||
"pushl $"##x"\n\t" \
|
||||
"call _KiInterruptDispatch\n\t"\
|
||||
"call _HalpDispatchInterrupt\n\t"\
|
||||
"popl %eax\n\t" \
|
||||
"popl %eax\n\t" \
|
||||
"popl %es\n\t" \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: cancel.c,v 1.4 2000/03/26 19:38:21 ea Exp $
|
||||
/* $Id: cancel.c,v 1.5 2000/06/12 14:57:10 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -64,11 +64,4 @@ VOID STDCALL IoReleaseCancelSpinLock(KIRQL Irql)
|
|||
KeReleaseSpinLock(&CancelSpinLock,Irql);
|
||||
}
|
||||
|
||||
PDRIVER_CANCEL IoSetCancelRoutine(PIRP Irp, PDRIVER_CANCEL CancelRoutine)
|
||||
{
|
||||
return((PDRIVER_CANCEL)InterlockedExchange((PULONG)&Irp->CancelRoutine,
|
||||
(ULONG)CancelRoutine));
|
||||
}
|
||||
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include <internal/debug.h>
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
#if 0
|
||||
VOID IoInitializeDpcRequest(PDEVICE_OBJECT DeviceObject,
|
||||
PIO_DPC_ROUTINE DpcRoutine)
|
||||
{
|
||||
|
@ -29,3 +29,4 @@ VOID IoRequestDpc(PDEVICE_OBJECT DeviceObject,
|
|||
{
|
||||
KeInsertQueueDpc(&DeviceObject->Dpc,Irp,Context);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: error.c,v 1.2 2000/03/26 19:38:22 ea Exp $
|
||||
/* $Id: error.c,v 1.3 2000/06/12 14:57:10 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -17,21 +17,6 @@
|
|||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
BOOLEAN IoIsErrorUserInduced(NTSTATUS Status)
|
||||
{
|
||||
switch(Status)
|
||||
{
|
||||
case STATUS_DEVICE_NOT_READY:
|
||||
case STATUS_IO_TIMEOUT:
|
||||
case STATUS_MEDIA_WRITE_PROTECTED:
|
||||
case STATUS_NO_MEDIA_IN_DRIVE:
|
||||
case STATUS_VERIFY_REQUIRED:
|
||||
case STATUS_UNRECOGNIZED_MEDIA:
|
||||
case STATUS_WRONG_VOLUME:
|
||||
return(TRUE);
|
||||
}
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
VOID STDCALL IoSetHardErrorOrVerifyDevice(PIRP Irp, PDEVICE_OBJECT DeviceObject)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: ioctrl.c,v 1.10 2000/05/13 13:51:02 dwelch Exp $
|
||||
/* $Id: ioctrl.c,v 1.11 2000/06/12 14:57:10 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -22,12 +22,6 @@
|
|||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
ULONG IoGetFunctionCodeFromCtlCode(ULONG ControlCode)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS STDCALL NtDeviceIoControlFile (IN HANDLE DeviceHandle,
|
||||
IN HANDLE Event,
|
||||
IN PIO_APC_ROUTINE UserApcRoutine,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: irp.c,v 1.27 2000/03/26 19:38:25 ea Exp $
|
||||
/* $Id: irp.c,v 1.28 2000/06/12 14:57:10 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -83,42 +83,6 @@ IoMakeAssociatedIrp (PIRP Irp, CCHAR StackSize)
|
|||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME INTERNAL
|
||||
* IoMarkIrpPending
|
||||
*/
|
||||
VOID
|
||||
IoMarkIrpPending (PIRP Irp)
|
||||
/*
|
||||
* FUNCTION: Marks the specified irp, indicating further processing will
|
||||
* be required by other driver routines
|
||||
* ARGUMENTS:
|
||||
* Irp = Irp to mark
|
||||
*/
|
||||
{
|
||||
// DPRINT("IoGetCurrentIrpStackLocation(Irp) %x\n",
|
||||
// IoGetCurrentIrpStackLocation(Irp));
|
||||
IoGetCurrentIrpStackLocation(Irp)->Control |= SL_PENDING_RETURNED;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME INTERNAL
|
||||
* IoSizeOfIrp
|
||||
*/
|
||||
USHORT
|
||||
IoSizeOfIrp (CCHAR StackSize)
|
||||
/*
|
||||
* FUNCTION: Determines the size of an IRP
|
||||
* ARGUMENTS:
|
||||
* StackSize = number of stack locations in the IRP
|
||||
* RETURNS: The size of the IRP in bytes
|
||||
*/
|
||||
{
|
||||
return(sizeof(IRP)+((StackSize-1)*sizeof(IO_STACK_LOCATION)));
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
IoInitializeIrp (PIRP Irp, USHORT PacketSize, CCHAR StackSize)
|
||||
|
@ -140,63 +104,6 @@ IoInitializeIrp (PIRP Irp, USHORT PacketSize, CCHAR StackSize)
|
|||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* 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
|
||||
* ARGUMENTS:
|
||||
* Irp = Points to the IRP
|
||||
* RETURNS: A pointer to the stack location
|
||||
*/
|
||||
{
|
||||
// DPRINT("IoGetCurrentIrpStackLocation: Irp %08lx CurLoc %d StkCnt %d\n",
|
||||
// Irp,
|
||||
// Irp->CurrentLocation,
|
||||
// Irp->StackCount);
|
||||
|
||||
return(&Irp->Stack[(ULONG)Irp->CurrentLocation]);
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME INTERNAL
|
||||
* IoSetNextIrpStackLocation
|
||||
*/
|
||||
VOID
|
||||
IoSetNextIrpStackLocation (PIRP Irp)
|
||||
{
|
||||
Irp->CurrentLocation--;
|
||||
Irp->Tail.Overlay.CurrentStackLocation--;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* 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
|
||||
* ARGUMENTS:
|
||||
* Irp = points to the irp
|
||||
* RETURNS: A pointer to the stack location
|
||||
*/
|
||||
{
|
||||
// DPRINT("IoGetNextIrpStackLocation(Irp %x)\n",Irp);
|
||||
|
||||
assert(Irp!=NULL);
|
||||
// DPRINT("Irp %x Irp->StackPtr %x\n",Irp,Irp->CurrentLocation);
|
||||
return(&Irp->Stack[Irp->CurrentLocation-1]);
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
FASTCALL
|
||||
IofCallDriver (PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||
|
@ -279,36 +186,6 @@ IoAllocateIrp (CCHAR StackSize, BOOLEAN ChargeQuota)
|
|||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME INTERNAL
|
||||
* IoSetCompletionRoutine
|
||||
*/
|
||||
VOID
|
||||
IoSetCompletionRoutine (PIRP Irp,
|
||||
PIO_COMPLETION_ROUTINE CompletionRoutine,
|
||||
PVOID Context,
|
||||
BOOLEAN InvokeOnSuccess,
|
||||
BOOLEAN InvokeOnError,
|
||||
BOOLEAN InvokeOnCancel)
|
||||
{
|
||||
IO_STACK_LOCATION* param = IoGetNextIrpStackLocation(Irp);
|
||||
|
||||
param->CompletionRoutine=CompletionRoutine;
|
||||
param->CompletionContext=Context;
|
||||
if (InvokeOnSuccess)
|
||||
{
|
||||
param->Control = param->Control | SL_INVOKE_ON_SUCCESS;
|
||||
}
|
||||
if (InvokeOnError)
|
||||
{
|
||||
param->Control = param->Control | SL_INVOKE_ON_ERROR;
|
||||
}
|
||||
if (InvokeOnCancel)
|
||||
{
|
||||
param->Control = param->Control | SL_INVOKE_ON_CANCEL;
|
||||
}
|
||||
}
|
||||
|
||||
VOID IopCompleteRequest(struct _KAPC* Apc,
|
||||
PKNORMAL_ROUTINE* NormalRoutine,
|
||||
PVOID* NormalContext,
|
||||
|
@ -474,7 +351,10 @@ IoSetTopLevelIrp (
|
|||
IN PIRP Irp
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
PETHREAD Thread;
|
||||
|
||||
Thread = PsGetCurrentThread ();
|
||||
Thread->TopLevelIrp.TopLevelIrp = Irp;
|
||||
}
|
||||
|
||||
|
||||
|
@ -484,8 +364,7 @@ IoGetTopLevelIrp (
|
|||
VOID
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return (NULL);
|
||||
return (PsGetCurrentThread ()->TopLevelIrp.TopLevelIrp);
|
||||
}
|
||||
|
||||
|
||||
|
@ -498,5 +377,4 @@ IoQueueThreadIrp (
|
|||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: process.c,v 1.5 2000/05/13 14:56:46 ea Exp $
|
||||
/* $Id: process.c,v 1.6 2000/06/12 14:57:10 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -55,8 +55,7 @@ IoThreadToProcess (
|
|||
IN PETHREAD Thread
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return (NULL);
|
||||
return (Thread->ThreadsProcess);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntoskrnl.def,v 1.74 2000/06/09 20:02:37 ekohl Exp $
|
||||
; $Id: ntoskrnl.def,v 1.75 2000/06/12 14:53:09 ekohl Exp $
|
||||
;
|
||||
; reactos/ntoskrnl/ntoskrnl.def
|
||||
;
|
||||
|
@ -195,11 +195,16 @@ FsRtlUninitializeMcb@4
|
|||
FsRtlUninitializeOplock@4
|
||||
;HalDispatchTable DATA
|
||||
;HalPrivateDispatchTable DATA
|
||||
;InterlockedCompareExchange
|
||||
;InterlockedDecrement
|
||||
;InterlockedExchange
|
||||
;InterlockedExchangeAdd
|
||||
;InterlockedIncrement
|
||||
;@InterlockedCompareExchange@12
|
||||
InterlockedCompareExchange@12
|
||||
;@InterlockedDecrement@4
|
||||
InterlockedDecrement@4
|
||||
;@InterlockedExchange@8
|
||||
InterlockedExchange@8
|
||||
;@InterlockedExchangeAdd@8
|
||||
InterlockedExchangeAdd@8
|
||||
;@InterlockedIncrement@4
|
||||
InterlockedIncrement@4
|
||||
IoAcquireCancelSpinLock@4
|
||||
IoAcquireVpbSpinLock@4
|
||||
IoAdapterObjectType DATA
|
||||
|
@ -1009,10 +1014,8 @@ wctomb
|
|||
;
|
||||
; ReactOS Extensions (these should be macros!)
|
||||
;
|
||||
IoGetCurrentIrpStackLocation
|
||||
IoInitializeDpcRequest
|
||||
IoMarkIrpPending
|
||||
IoRequestDpc
|
||||
;IoInitializeDpcRequest
|
||||
;IoRequestDpc
|
||||
MmGetSystemAddressForMdl
|
||||
InitializeListHead
|
||||
InsertTailList
|
||||
|
@ -1028,23 +1031,23 @@ ExTryToAcquireFastMutex@4
|
|||
HalAcquireDisplayOwnership@4
|
||||
HalAdjustResourceList@4
|
||||
HalAllProcessorsStarted@0
|
||||
;HalAllocateAdapterChannel
|
||||
;HalAllocateCommonBuffer
|
||||
;HalAllocateCrashDumpRegisters
|
||||
;HalAllocateAdapterChannel@16
|
||||
HalAllocateCommonBuffer@16
|
||||
;HalAllocateCrashDumpRegisters@8
|
||||
HalAssignSlotResources@32
|
||||
;HalBeginSystemInterrupt
|
||||
;HalCalibratePerformanceCounter
|
||||
;HalClearSoftwareInterrupt
|
||||
;HalDisableSystemInterrupt
|
||||
;HalBeginSystemInterrupt@12
|
||||
;HalCalibratePerformanceCounter@4
|
||||
;@HalClearSoftwareInterrupt@4
|
||||
;HalDisableSystemInterrupt@8
|
||||
HalDisplayString@4
|
||||
;HalEnableSystemInterrupt
|
||||
;HalEndSystemInterrupt
|
||||
;HalFlushCommonBuffer
|
||||
;HalFreeCommonBuffer
|
||||
;HalGetAdapter
|
||||
;HalEnableSystemInterrupt@12
|
||||
;HalEndSystemInterrupt@8
|
||||
HalFlushCommonBuffer@32
|
||||
HalFreeCommonBuffer@24
|
||||
HalGetAdapter@8
|
||||
HalGetBusData@20
|
||||
HalGetBusDataByOffset@24
|
||||
;HalGetEnvironmentVariable
|
||||
;HalGetEnvironmentVariable@12
|
||||
HalGetInterruptVector@24
|
||||
HalHandleNMI@4
|
||||
HalInitSystem@8
|
||||
|
@ -1053,21 +1056,21 @@ HalMakeBeep@4
|
|||
HalProcessorIdle@0
|
||||
HalQueryDisplayParameters@16
|
||||
HalQueryRealTimeClock@4
|
||||
;HalReadDmaCounter
|
||||
HalReadDmaCounter@4
|
||||
HalReportResourceUsage@0
|
||||
;HalRequestIpi
|
||||
;HalRequestSoftwareInterrupt
|
||||
;HalRequestIpi@4
|
||||
;@HalRequestSoftwareInterrupt@4
|
||||
HalReturnToFirmware@4
|
||||
HalSetBusData@20
|
||||
HalSetBusDataByOffset@24
|
||||
HalSetDisplayParameters@8
|
||||
;HalSetEnvironmentVariable
|
||||
;HalSetProfileInterval
|
||||
;HalSetEnvironmentVariable@8
|
||||
;HalSetProfileInterval@4
|
||||
HalSetRealTimeClock@4
|
||||
;HalSetTimeIncrement
|
||||
;HalSetTimeIncrement@4
|
||||
HalStartNextProcessor@8
|
||||
;HalStartProfileInterrupt
|
||||
;HalStopProfileInterrupt
|
||||
;HalStartProfileInterrupt@4
|
||||
;HalStopProfileInterrupt@4
|
||||
HalSystemVectorDispatchEntry@12
|
||||
HalTranslateBusAddress@24
|
||||
IoAssignDriveLetters@16
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntoskrnl.edf,v 1.61 2000/06/09 20:02:37 ekohl Exp $
|
||||
; $Id: ntoskrnl.edf,v 1.62 2000/06/12 14:53:09 ekohl Exp $
|
||||
;
|
||||
; reactos/ntoskrnl/ntoskrnl.def
|
||||
;
|
||||
|
@ -194,6 +194,16 @@ FsRtlUninitializeMcb=FsRtlUninitializeMcb@4
|
|||
FsRtlUninitializeOplock=FsRtlUninitializeOplock@4
|
||||
;HalDispatchTable DATA
|
||||
;HalPrivateDispatchTable DATA
|
||||
;InterlockedCompareExchange=@InterlockedCompareExchange@12
|
||||
InterlockedCompareExchange=InterlockedCompareExchange@12
|
||||
;InterlockedDecrement=@InterlockedDecrement@4
|
||||
InterlockedDecrement=InterlockedDecrement@4
|
||||
;InterlockedExchange=@InterlockedExchange@8
|
||||
InterlockedExchange=InterlockedExchange@8
|
||||
;InterlockedExchangeAdd=@InterlockedExchangeAdd@8
|
||||
InterlockedExchangeAdd=InterlockedExchangeAdd@8
|
||||
;InterlockedIncrement=@InterlockedIncrement@4
|
||||
InterlockedIncrement=InterlockedIncrement@4
|
||||
IoAcquireCancelSpinLock=IoAcquireCancelSpinLock@4
|
||||
IoAcquireVpbSpinLock=IoAcquireVpbSpinLock@4
|
||||
IoAdapterObjectType DATA
|
||||
|
@ -937,10 +947,8 @@ wctomb
|
|||
;
|
||||
; ReactOS Extensions
|
||||
;
|
||||
IoGetCurrentIrpStackLocation
|
||||
IoInitializeDpcRequest
|
||||
IoMarkIrpPending
|
||||
IoRequestDpc
|
||||
;IoInitializeDpcRequest
|
||||
;IoRequestDpc
|
||||
MmGetSystemAddressForMdl
|
||||
InitializeListHead
|
||||
InsertTailList
|
||||
|
@ -956,23 +964,24 @@ ExTryToAcquireFastMutex=ExTryToAcquireFastMutex@4
|
|||
HalAcquireDisplayOwnership=HalAcquireDisplayOwnership@4
|
||||
HalAdjustResourceList=HalAdjustResourceList@4
|
||||
HalAllProcessorsStarted=HalAllProcessorsStarted@0
|
||||
;HalAllocateAdapterChannel
|
||||
;HalAllocateCommonBuffer
|
||||
;HalAllocateCrashDumpRegisters
|
||||
;HalAllocateAdapterChannel=HalAllocateAdapterChannel@16
|
||||
HalAllocateCommonBuffer=HalAllocateCommonBuffer@16
|
||||
;HalAllocateCrashDumpRegisters=HalAllocateCrashDumpRegisters@8
|
||||
HalAssignSlotResource=HalAssignSlotResources@32
|
||||
;HalBeginSystemInterrupt
|
||||
;HalCalibratePerformanceCounter
|
||||
;HalClearSoftwareInterrupt
|
||||
;HalDisableSystemInterrupt
|
||||
;HalBeginSystemInterrupt=HalBeginSystemInterrupt@12
|
||||
;HalCalibratePerformanceCounter=HalCalibratePerformanceCounter@4
|
||||
;HalClearSoftwareInterrupt=@HalClearSoftwareInterrupt@4
|
||||
;HalClearSoftwareInterrupt=HalClearSoftwareInterrupt@4
|
||||
;HalDisableSystemInterrupt=HalDisableSystemInterrupt@8
|
||||
HalDisplayString=HalDisplayString@4
|
||||
;HalEnableSystemInterrupt
|
||||
;HalEndSystemInterrupt
|
||||
;HalFlushCommonBuffer
|
||||
;HalFreeCommonBuffer
|
||||
;HalGetAdapter
|
||||
;HalEnableSystemInterrupt=HalEnableSystemInterrupt@12
|
||||
;HalEndSystemInterrupt=HalEndSystemInterrupt@8
|
||||
HalFlushCommonBuffer=HalFlushCommonBuffer@32
|
||||
HalFreeCommonBuffer=HalFreeCommonBuffer@24
|
||||
HalGetAdapter=HalGetAdapter@8
|
||||
HalGetBusData=HalGetBusData@20
|
||||
HalGetBusDataByOffset=HalGetBusDataByOffset@24
|
||||
;HalGetEnvironmentVariable
|
||||
;HalGetEnvironmentVariable=HalGetEnvironmentVariable@12
|
||||
HalGetInterruptVector=HalGetInterruptVector@24
|
||||
HalHandleNMI=HalHandleNMI@4
|
||||
HalInitSystem=HalInitSystem@8
|
||||
|
@ -981,21 +990,22 @@ HalMakeBeep=HalMakeBeep@4
|
|||
HalProcessorIdle=HalProcessorIdle@0
|
||||
HalQueryDisplayParameters=HalQueryDisplayParameters@16
|
||||
HalQueryRealTimeClock=HalQueryRealTimeClock@4
|
||||
;HalReadDmaCounter
|
||||
HalReadDmaCounter=HalReadDmaCounter@4
|
||||
HalReportResourceUsage=HalReportResourceUsage@0
|
||||
;HalRequestIpi
|
||||
;HalRequestSoftwareInterrupt
|
||||
;HalRequestIpi=HalRequestIpi@4
|
||||
;HalRequestSoftwareInterrupt=@HalRequestSoftwareInterrupt@4
|
||||
;HalRequestSoftwareInterrupt=HalRequestSoftwareInterrupt@4
|
||||
HalReturnToFirmware=HalReturnToFirmware@4
|
||||
HalSetBusData=HalSetBusData@20
|
||||
HalSetBusDataByOffset=HalSetBusDataByOffset@24
|
||||
HalSetDisplayParameters=HalSetDisplayParameters@8
|
||||
;HalSetEnvironmentVariable
|
||||
;HalSetProfileInterval
|
||||
;HalSetEnvironmentVariable=HalSetEnvironmentVariable@8
|
||||
;HalSetProfileInterval=HalSetProfileInterval@4
|
||||
HalSetRealTimeClock=HalSetRealTimeClock@4
|
||||
;HalSetTimeIncrement
|
||||
;HalSetTimeIncrement=HalSetTimeIncrement@4
|
||||
HalStartNextProcessor=HalStartNextProcessor@8
|
||||
;HalStartProfileInterrupt
|
||||
;HalStopProfileInterrupt
|
||||
;HalStartProfileInterrupt=HalStartProfileInterrupt@4
|
||||
;HalStopProfileInterrupt=HalStopProfileInterrupt@4
|
||||
;HalSystemVectorDispatchEntry=@HalSystemVectorDispatchEntry@12
|
||||
HalSystemVectorDispatchEntry=HalSystemVectorDispatchEntry@12
|
||||
HalTranslateBusAddress=HalTranslateBusAddress@24
|
||||
|
@ -1046,4 +1056,3 @@ WRITE_PORT_BUFFER_USHORT=WRITE_PORT_BUFFER_USHORT@12
|
|||
WRITE_PORT_UCHAR=WRITE_PORT_UCHAR@8
|
||||
WRITE_PORT_ULONG=WRITE_PORT_ULONG@8
|
||||
WRITE_PORT_USHORT=WRITE_PORT_USHORT@8
|
||||
|
||||
|
|
Loading…
Reference in a new issue