diff --git a/reactos/iface/native/sysfuncs.lst b/reactos/iface/native/sysfuncs.lst index 5de9fea5542..92c7e797d01 100644 --- a/reactos/iface/native/sysfuncs.lst +++ b/reactos/iface/native/sysfuncs.lst @@ -105,12 +105,12 @@ NtQueryEaFile ZwQueryEaFile 36 NtQueryEvent ZwQueryEvent 20 NtQueryFullAttributesFile ZwQueryFullAttributesFile 8 NtQueryInformationFile ZwQueryInformationFile 20 -NtQueryIoCompletion ZwQueryIoCompletion 20 NtQueryInformationPort ZwQueryInformationPort 20 NtQueryInformationProcess ZwQueryInformationProcess 20 NtQueryInformationThread ZwQueryInformationThread 20 NtQueryInformationToken ZwQueryInformationToken 20 NtQueryIntervalProfile ZwQueryIntervalProfile 8 +NtQueryIoCompletion ZwQueryIoCompletion 20 NtQueryKey ZwQueryKey 20 NtQueryMultipleValueKey ZwQueryMultipleValueKey 24 NtQueryMutant ZwQueryMutant 20 diff --git a/reactos/include/ddk/defines.h b/reactos/include/ddk/defines.h index 57f16dac9ca..357e211ca4f 100644 --- a/reactos/include/ddk/defines.h +++ b/reactos/include/ddk/defines.h @@ -3,11 +3,16 @@ /* GENERAL DEFINITIONS ****************************************************/ +#define _WIN32_WINNT 0x0400 + #include #include #include +#define EXPORTED __declspec(dllexport) +#define IMPORTED __declspec(dllimport) + /* * PURPOSE: Number of a thread priority levels */ diff --git a/reactos/include/ddk/iofuncs.h b/reactos/include/ddk/iofuncs.h index ae923897a4d..8027131d1d5 100644 --- a/reactos/include/ddk/iofuncs.h +++ b/reactos/include/ddk/iofuncs.h @@ -1,57 +1,70 @@ -/* $Id: iofuncs.h,v 1.7 2000/03/06 01:02:30 ea Exp $ */ -/* IO MANAGER ***************************************************************/ +#ifndef _INCLUDE_DDK_IOFUNCS_H +#define _INCLUDE_DDK_IOFUNCS_H +/* $Id: iofuncs.h,v 1.8 2000/03/26 19:38:10 ea Exp $ */ -BOOLEAN -IoRaiseInformationalHardError ( - NTSTATUS ErrorStatus, - PUNICODE_STRING String, - PKTHREAD Thread - ); +/* --- EXPORTED BY NTOSKRNL --- */ - -/* - * FUNCTION: Registers the driver with WMI - * ARGUMENTS: - * DeviceObject = Device to register - * Action = Action to take - * RETURNS: Status (?) - */ -//NTSTATUS IoWMIRegistrationControl(DeviceObject, WMIREGACTION Action); - -/* - * FUNCTION: Synchronizes cancelable-state transistions for IRPs in a - * multiprocessor-safe way - * ARGUMENTS: - * Irpl = Variable to store the current IRQ level +/********************************************************************** + * NAME EXPORTED + * IoAcquireCancelSpinLock@4 + * + * DESCRIPTION + * Synchronizes cancelable-state transistions for IRPs in a + * multiprocessor-safe way. + * + * ARGUMENTS + * Irpl + * Variable to store the current IRQ level. + * + * RETURN VALUE + * None. + * + * REVISIONS + * */ VOID +STDCALL IoAcquireCancelSpinLock ( PKIRQL Irpl ); - -typedef -IO_ALLOCATION_ACTION -(*PDRIVER_CONTROL) ( - PDEVICE_OBJECT DeviceObject, - PIRP irp, - PVOID MapRegisterBase, - PVOID Context +VOID +STDCALL +IoAcquireVpbSpinLock ( + PKIRQL Irpl ); - -/* - * FUNCTION: Allocates an adaptor object for a DMA operation on the target - * device - * ARGUMENTS: - * Adaptor = Adapter channel or busmaster adapter to be allocated - * DeviceObject = Target device for DMA - * NumberOfMapRegisters = Number of map registers - * ExecutionRoutine = Routine to be called when the adaptor is - * available - * Context = driver defined contex that will be passed to the - * execution routine - * RETURNS: Success or failure code +/********************************************************************** + * NAME EXPORTED + * IoAllocateAdapterChannel@ + * + * DESCRIPTION + * Allocates an adaptor object for a DMA operation on the target + * device. + * + * ARGUMENTS + * Adaptor + * Adapter channel or busmaster adapter to be allocated; + * + * DeviceObject + * Target device for DMA; + * + * NumberOfMapRegisters + * Number of map registers; + * + * ExecutionRoutine + * Routine to be called when the adaptor is available; + * + * Context + * Driver defined contex that will be passed to the + * execution routine. + * + * RETURN VALUE + * Success or failure code. + * + * REVISIONS + * */ NTSTATUS +STDCALL IoAllocateAdapterChannel ( PADAPTER_OBJECT AdaperObject, PDEVICE_OBJECT DeviceObject, @@ -59,45 +72,82 @@ IoAllocateAdapterChannel ( PDRIVER_CONTROL ExecutionRoutine, PVOID Context ); - -/* - * FUNCTION: 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 +/********************************************************************** + * NAME EXPORTED + * IoAllocateController@16 + * + * DESCRIPTION + * 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. + * + * REVISIONS + * */ VOID +STDCALL IoAllocateController ( PCONTROLLER_OBJECT ControllerObject, PDEVICE_OBJECT DeviceObject, PDRIVER_CONTROL ExecutionRoutine, PVOID Context ); - -/* - * FUNCTION: Allocates an error log packet - * ARGUMENTS: - * IoObject = Object which found the error - * EntrySize = Size in bytes of the packet to be allocated - * RETURNS: On success a pointer to the allocated packet - * On failure returns NULL +/********************************************************************** + * NAME EXPORTED + * IoAllocateErrorLogEntry@8 + * + * DESCRIPTION + * 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 failure, it returns NULL. */ PVOID +STDCALL IoAllocateErrorLogEntry ( PVOID IoObject, UCHAR EntrySize ); - -/* - * FUNCTION: Allocates an IRP - * ARGUMENTS: - * StackSize = number of stack locations to allocate - * ChargeQuota = Who knows - * RETURNS: On success the allocated IRP - * On failure NULL +/********************************************************************** + * NAME EXPORTED + * IoAllocateIrp@8 + * + * DESCRIPTION + * Allocates an IRP. + * + * ARGUMENTS + * StackSize + * Number of stack locations to allocate; + * + * ChargeQuota + * Who knows. + * + * RETURN VALUE + * On success, the allocated IRP. On failure, NULL. */ PIRP STDCALL @@ -105,19 +155,34 @@ IoAllocateIrp ( CCHAR StackSize, BOOLEAN ChargeQuota ); - -/* - * FUNCTION: Allocates an MDL large enough to map the supplied buffer - * ARGUMENTS: - * VirtualAddress = base virtual address of the buffer to be mapped - * Length = length of the buffer to be mapped - * SecondaryBuffer = Whether the buffer is primary or secondary - * ChargeQuota = Charge non-paged pool quota to current thread - * Irp = Optional irp to be associated with the MDL - * RETURNS: On the success the allocated MDL - * On failure NULL +/********************************************************************** + * NAME EXPORTED + * IoAllocateMdl@20 + * + * DESCRIPTION + * Allocates an MDL large enough to map the supplied buffer. + * + * ARGUMENTS + * VirtualAddress + * Base virtual address of the buffer to be mapped; + * + * Length + * Length of the buffer to be mapped; + * + * SecondaryBuffer + * Whether the buffer is primary or secondary; + * + * ChargeQuota + * Charge non-paged pool quota to current thread; + * + * Irp + * Optional irp to be associated with the MDL. + * + * RETURN VALUE + * On success, the allocated MDL; on failure, NULL. */ PMDL +STDCALL IoAllocateMdl ( PVOID VirtualAddress, ULONG Length, @@ -125,36 +190,34 @@ IoAllocateMdl ( BOOLEAN ChargeQuota, 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 - */ -VOID -IoAssignArcName ( - PUNICODE_STRING ArcName, - PUNICODE_STRING DeviceName - ); - -enum -{ - IO_NO_INCREMENT, -}; - -/* - * FUNCTION: 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 - * RETURNS: +/********************************************************************** + * NAME EXPORTED + * IoAssignResources@24 + * + * DESCRIPTION + * 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 +STDCALL IoAssignResources ( PUNICODE_STRING RegistryPath, PUNICODE_STRING DriverClassName, @@ -163,7 +226,6 @@ IoAssignResources ( PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources, PCM_RESOURCE_LIST * AllocatedResources ); - /* * FUNCTION: Attaches the callers device object to a named target device * ARGUMENTS: @@ -174,12 +236,12 @@ IoAssignResources ( * RETURNS: Success or failure code */ NTSTATUS +STDCALL IoAttachDevice ( PDEVICE_OBJECT SourceDevice, PUNICODE_STRING TargetDevice, PDEVICE_OBJECT * AttachedDevice ); - /* * FUNCTION: Obsolete * ARGUMENTS: @@ -188,11 +250,11 @@ IoAttachDevice ( * RETURNS: Success or failure code */ NTSTATUS +STDCALL IoAttachDeviceByPointer ( PDEVICE_OBJECT SourceDevice, PDEVICE_OBJECT TargetDevice ); - /* * FUNCTION: Attaches the callers device to the highest device in the chain * ARGUMENTS: @@ -202,11 +264,11 @@ IoAttachDeviceByPointer ( * On failure NULL */ PDEVICE_OBJECT +STDCALL IoAttachDeviceToDeviceStack ( PDEVICE_OBJECT SourceDevice, PDEVICE_OBJECT TargetDevice ); - /* * FUNCTION: Builds a irp to be sent to lower level drivers * ARGUMENTS: @@ -220,6 +282,7 @@ IoAttachDeviceToDeviceStack ( * On failure NULL */ PIRP +STDCALL IoBuildAsynchronousFsdRequest ( ULONG MajorFunction, PDEVICE_OBJECT DeviceObject, @@ -228,7 +291,6 @@ IoBuildAsynchronousFsdRequest ( PLARGE_INTEGER StartingOffset, PIO_STATUS_BLOCK IoStatusBlock ); - /* * FUNCTION: Allocates and sets up an IRP for a device control request * ARGUMENTS: @@ -246,6 +308,7 @@ IoBuildAsynchronousFsdRequest ( * RETURNS: Returns the IRP created */ PIRP +STDCALL IoBuildDeviceIoControlRequest ( ULONG IoControlCode, PDEVICE_OBJECT DeviceObject, @@ -257,17 +320,16 @@ IoBuildDeviceIoControlRequest ( PKEVENT Event, PIO_STATUS_BLOCK IoStatusBlock ); - - VOID +STDCALL IoBuildPartialMdl ( PMDL SourceMdl, PMDL TargetMdl, PVOID VirtualAddress, ULONG Length ); - PIRP +STDCALL IoBuildSynchronousFsdRequest ( ULONG MajorFunction, PDEVICE_OBJECT DeviceObject, @@ -277,16 +339,6 @@ IoBuildSynchronousFsdRequest ( PKEVENT Event, PIO_STATUS_BLOCK IoStatusBlock ); - -/* - * FUNCTION: Sends an irp to the next lower driver - */ -NTSTATUS -FASTCALL -IofCallDriver ( - PDEVICE_OBJECT DeviceObject, - PIRP Irp - ); NTSTATUS STDCALL IoCallDriver ( @@ -294,11 +346,35 @@ IoCallDriver ( PIRP Irp ); BOOLEAN +STDCALL IoCancelIrp ( PIRP Irp ); - +VOID +STDCALL +IoCheckDesiredAccess ( + DWORD Unknown0, + DWORD Unknown1 + ); NTSTATUS +STDCALL +IoCheckEaBufferValidity ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2 + ); +NTSTATUS +STDCALL +IoCheckFunctionAccess ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5 + ); +NTSTATUS +STDCALL IoCheckShareAccess ( ACCESS_MASK DesiredAccess, ULONG DesiredShareAccess, @@ -306,21 +382,6 @@ IoCheckShareAccess ( PSHARE_ACCESS ShareAccess, BOOLEAN Update ); - -/* - * 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 - * ARGUMENTS: - * Irp = Irp to be cancelled - * PriorityBoost = Increment by which to boost the priority of the - * thread making the request - */ -VOID -FASTCALL -IofCompleteRequest ( - PIRP Irp, - CCHAR PriorityBoost - ); VOID STDCALL IoCompleteRequest ( @@ -328,6 +389,7 @@ IoCompleteRequest ( CCHAR PriorityBoost ); NTSTATUS +STDCALL IoConnectInterrupt ( PKINTERRUPT * InterruptObject, PKSERVICE_ROUTINE ServiceRoutine, @@ -341,12 +403,11 @@ IoConnectInterrupt ( KAFFINITY ProcessorEnableMask, BOOLEAN FloatingSave ); - PCONTROLLER_OBJECT +STDCALL IoCreateController ( ULONG Size ); - /* * FUNCTION: Allocates memory for and intializes a device object for use for * a driver @@ -366,6 +427,7 @@ IoCreateController ( * NOTES: See the DDK documentation for more information */ NTSTATUS +STDCALL IoCreateDevice ( PDRIVER_OBJECT DriverObject, ULONG DeviceExtensionSize, @@ -375,7 +437,6 @@ IoCreateDevice ( BOOLEAN Exclusive, PDEVICE_OBJECT * DeviceObject ); - NTSTATUS STDCALL IoCreateFile ( @@ -391,83 +452,80 @@ IoCreateFile ( IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength, IN CREATE_FILE_TYPE CreateFileType, - IN ULONG ExtraCreateParameters, + IN PVOID ExtraCreateParameters OPTIONAL, IN ULONG Options ); PKEVENT +STDCALL IoCreateNotificationEvent ( PUNICODE_STRING EventName, PHANDLE EventHandle ); - +PFILE_OBJECT +STDCALL +IoCreateStreamFileObject ( + PFILE_OBJECT FileObject, + PDEVICE_OBJECT DeviceObject + ); NTSTATUS STDCALL IoCreateSymbolicLink ( PUNICODE_STRING SymbolicLinkName, PUNICODE_STRING DeviceName ); - PKEVENT +STDCALL IoCreateSynchronizationEvent ( PUNICODE_STRING EventName, PHANDLE EventHandle ); - NTSTATUS STDCALL IoCreateUnprotectedSymbolicLink ( PUNICODE_STRING SymbolicLinkName, PUNICODE_STRING DeviceName ); - - -VOID -IoDeassignArcName ( - PUNICODE_STRING ArcName - ); - VOID +STDCALL IoDeleteController ( PCONTROLLER_OBJECT ControllerObject ); - VOID +STDCALL IoDeleteDevice ( PDEVICE_OBJECT DeviceObject ); - NTSTATUS STDCALL IoDeleteSymbolicLink ( PUNICODE_STRING SymbolicLinkName ); - VOID +STDCALL IoDetachDevice ( PDEVICE_OBJECT TargetDevice ); - VOID +STDCALL IoDisconnectInterrupt ( PKINTERRUPT InterruptObject ); - -BOOLEAN -IoFlushAdapterBuffers ( - PADAPTER_OBJECT AdapterObject, - PMDL Mdl, - PVOID MapRegisterBase, - PVOID CurrentVa, - ULONG Length, - BOOLEAN WriteToDevice - ); - VOID -IoFreeAdapterChannel ( - PADAPTER_OBJECT AdapterObject +STDCALL +IoEnqueueIrp ( + PIRP Irp ); - VOID +STDCALL +IoFastQueryNetworkAttributes ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4 + ); +VOID +STDCALL IoFreeController ( PCONTROLLER_OBJECT ControllerObject ); @@ -477,37 +535,32 @@ IoFreeIrp ( PIRP Irp ); VOID -IoFreeMapRegisters ( - PADAPTER_OBJECT AdapterObject, - PVOID MapRegisterBase, - ULONG NumberOfMapRegisters - ); - -VOID +STDCALL IoFreeMdl ( PMDL Mdl ); PDEVICE_OBJECT STDCALL +IoGetAttachedDevice ( + PDEVICE_OBJECT DeviceObject + ); +PDEVICE_OBJECT +STDCALL IoGetBaseFileSystemDeviceObject ( IN PFILE_OBJECT FileObject ); PCONFIGURATION_INFORMATION -IoGetConfigurationInformation (VOID); - - -/* - * FUNCTION: Returns a pointer to the callers stack location in the irp - */ -PIO_STACK_LOCATION -IoGetCurrentIrpStackLocation ( - IRP * irp +STDCALL +IoGetConfigurationInformation ( + VOID + ); +PEPROCESS +STDCALL +IoGetCurrentProcess ( + VOID ); - -struct _EPROCESS * -IoGetCurrentProcess (VOID); - NTSTATUS +STDCALL IoGetDeviceObjectPointer ( PUNICODE_STRING ObjectName, ACCESS_MASK DesiredAccess, @@ -520,36 +573,36 @@ IoGetDeviceToVerify ( PETHREAD Thread ); PGENERIC_MAPPING -IoGetFileObjectGenericMapping (VOID); - -ULONG -IoGetFunctionCodeFromCtlCode ( - ULONG ControlCode +STDCALL +IoGetFileObjectGenericMapping ( + VOID ); - PVOID -IoGetInitialStack (VOID); - -/* - * FUNCTION: - */ -PIO_STACK_LOCATION -IoGetNextIrpStackLocation ( - IRP * irp +STDCALL +IoGetInitialStack ( + VOID ); - PDEVICE_OBJECT STDCALL IoGetRelatedDeviceObject ( PFILE_OBJECT FileObject ); - -VOID -IoInitializeDpcRequest ( - PDEVICE_OBJECT DeviceObject, - PIO_DPC_ROUTINE DpcRoutine +PEPROCESS +STDCALL +IoGetRequestorProcess ( + IN PIRP Irp + ); +VOID +STDCALL +IoGetStackLimits ( + PVOID * Minimum, /* guess */ + PVOID * Maximum /* guess */ + ); +PIRP +STDCALL +IoGetTopLevelIrp ( + VOID ); - /* * FUNCTION: Initalizes an irp allocated by the caller * ARGUMENTS: @@ -564,26 +617,22 @@ IoInitializeIrp ( USHORT PacketSize, CCHAR StackSize ); - NTSTATUS +STDCALL IoInitializeTimer ( PDEVICE_OBJECT DeviceObject, PIO_TIMER_ROUTINE TimerRoutine, PVOID Context ); - -BOOLEAN -IoIsErrorUserInduced ( - NTSTATUS Status - ); BOOLEAN STDCALL IoIsOperationSynchronous ( IN PIRP Irp ); BOOLEAN -IoIsTotalDeviceFailure ( - NTSTATUS Status +STDCALL +IoIsSystemThread ( + PVOID Unknown0 ); PIRP STDCALL @@ -591,7 +640,331 @@ IoMakeAssociatedIrp ( PIRP Irp, CCHAR StackSize ); +NTSTATUS +STDCALL +IoOpenDeviceInstanceKey ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4 + ); +NTSTATUS +STDCALL +IoPageRead ( + PFILE_OBJECT FileObject, + PMDL Mdl, + PLARGE_INTEGER Offset, + PIO_STATUS_BLOCK StatusBlock, + DWORD Unknown4 + ); +NTSTATUS +STDCALL +IoQueryDeviceDescription ( + PINTERFACE_TYPE BusType, + PULONG BusNumber, + PCONFIGURATION_TYPE ControllerType, + PULONG ControllerNumber, + PCONFIGURATION_TYPE PeripheralType, + PULONG PeripheralNumber, + PIO_QUERY_DEVICE_ROUTINE CalloutRoutine, + PVOID Context + ); +DWORD +STDCALL +IoQueryDeviceEnumInfo ( + DWORD Unknown0, + DWORD Unknown1 + ); +// IoQueryFileInformation: confirmed - Undocumented because it does not require a valid file handle +NTSTATUS +STDCALL +IoQueryFileInformation ( + IN PFILE_OBJECT FileObject, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN ULONG Length, + OUT PVOID FileInformation, + OUT PULONG ReturnedLength + ); +NTSTATUS +STDCALL +IoQueryVolumeInformation ( + IN PFILE_OBJECT FileObject, + IN FS_INFORMATION_CLASS FsInformationClass, + IN ULONG Length, + OUT PVOID FsInformation, + OUT PULONG ReturnedLength + ); +VOID +STDCALL +IoQueueThreadIrp ( + PVOID Unknown0 + ); +VOID +STDCALL +IoRaiseHardError ( + PIRP Irp, + PVPB Vpb, + PDEVICE_OBJECT RealDeviceObject + ); +BOOLEAN +STDCALL +IoRaiseInformationalHardError ( + NTSTATUS ErrorStatus, + PUNICODE_STRING String, + PKTHREAD Thread + ); +VOID +STDCALL +IoRegisterDriverReinitialization ( + PDRIVER_OBJECT DriverObject, + PDRIVER_REINITIALIZE ReinitRoutine, + PVOID Context + ); +VOID +STDCALL +IoRegisterFileSystem ( + PDEVICE_OBJECT DeviceObject + ); +#if (_WIN32_WINNT >= 0x0400) +NTSTATUS +STDCALL +IoRegisterFsRegistrationChange ( + IN PDRIVER_OBJECT DriverObject, + IN PFSDNOTIFICATIONPROC FSDNotificationProc + ); +#endif // (_WIN32_WINNT >= 0x0400) +NTSTATUS +STDCALL +IoRegisterShutdownNotification ( + PDEVICE_OBJECT DeviceObject + ); +VOID +STDCALL +IoReleaseCancelSpinLock ( + IN KIRQL Irql + ); +VOID +STDCALL +IoReleaseVpbSpinLock ( + IN KIRQL Irql + ); +VOID +STDCALL +IoRemoveShareAccess ( + PFILE_OBJECT FileObject, + PSHARE_ACCESS ShareAccess + ); +#if 0 +STDCALL +IoReportHalResourceUsage ( + ); +#endif +NTSTATUS +STDCALL +IoReportResourceUsage ( + PUNICODE_STRING DriverClassName, + PDRIVER_OBJECT DriverObject, + PCM_RESOURCE_LIST DriverList, + ULONG DriverListSize, + PDEVICE_OBJECT DeviceObject, + PCM_RESOURCE_LIST DeviceList, + ULONG DeviceListSize, + BOOLEAN OverrideConflict, + PBOOLEAN ConflictDetected + ); +VOID +STDCALL +IoSetDeviceToVerify ( + DWORD Unknown0, + DWORD Unknown1 + ); +VOID +STDCALL +IoSetHardErrorOrVerifyDevice ( + PIRP Irp, + PDEVICE_OBJECT DeviceObject + ); +NTSTATUS +STDCALL +IoSetInformation ( + IN PFILE_OBJECT FileObject, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN ULONG Length, + OUT PVOID FileInformation + ); +VOID +STDCALL +IoSetShareAccess ( + ACCESS_MASK DesiredAccess, + ULONG DesiredShareAccess, + PFILE_OBJECT FileObject, + PSHARE_ACCESS ShareAccess + ); +VOID +STDCALL +IoSetThreadHardErrorMode ( + IN PVOID Unknown0 + ); +VOID +STDCALL +IoSetTopLevelIrp ( + IN PIRP Irp + ); +/* + * FUNCTION: Dequeues the next IRP from the device's associated queue and + * calls its StartIo routine + * ARGUMENTS: + * DeviceObject = Device object + * Cancelable = True if IRPs in the queue can be cancelled + */ +VOID +STDCALL +IoStartNextPacket ( + PDEVICE_OBJECT DeviceObject, + BOOLEAN Cancelable + ); +VOID +STDCALL +IoStartNextPacketByKey ( + PDEVICE_OBJECT DeviceObject, + BOOLEAN Cancelable, + ULONG Key + ); +/* + * FUNCTION: Calls the drivers StartIO routine with the IRP or queues it if + * the device is busy + * ARGUMENTS: + * DeviceObject = Device to pass the IRP to + * Irp = Irp to be processed + * Key = Optional value for where to insert the IRP + * CancelFunction = Entry point for a driver supplied cancel function + */ +VOID +STDCALL +IoStartPacket ( + PDEVICE_OBJECT DeviceObject, + PIRP Irp, + PULONG Key, + PDRIVER_CANCEL CancelFunction + ); +VOID +STDCALL +IoStartTimer ( + PDEVICE_OBJECT DeviceObject + ); +VOID +STDCALL +IoStopTimer ( + PDEVICE_OBJECT DeviceObject + ); +NTSTATUS +STDCALL +IoSynchronousPageWrite ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4 + ); +PEPROCESS +STDCALL +IoThreadToProcess ( + IN PETHREAD Thread + ); +VOID +STDCALL +IoUnregisterFileSystem ( + IN PDEVICE_OBJECT DeviceObject + ); +#if (_WIN32_WINNT >= 0x0400) +VOID +STDCALL +IoUnregisterFsRegistrationChange ( + DWORD Unknown0, + DWORD Unknown1 + ); +#endif // (_WIN32_WINNT >= 0x0400) +VOID +STDCALL +IoUnregisterShutdownNotification ( + PDEVICE_OBJECT DeviceObject + ); +VOID +STDCALL +IoUpdateShareAccess ( + IN PFILE_OBJECT FileObject, + IN PSHARE_ACCESS ShareAccess + ); +NTSTATUS +STDCALL +IoVerifyVolume ( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN AllowRawMount + ); +VOID +STDCALL +IoWriteErrorLogEntry ( + PVOID ElEntry + ); +/* + * FUNCTION: Sends an irp to the next lower driver + */ +NTSTATUS +FASTCALL +IofCallDriver ( + PDEVICE_OBJECT DeviceObject, + PIRP Irp + ); +/* + * 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 + * ARGUMENTS: + * Irp = Irp to be cancelled + * PriorityBoost = Increment by which to boost the priority of the + * thread making the request + */ +VOID +FASTCALL +IofCompleteRequest ( + PIRP Irp, + CCHAR PriorityBoost + ); + +/* --- EXPORTED BY HAL --- */ + +VOID +STDCALL +IoAssignDriveLetters ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3 + ); +BOOLEAN +STDCALL +IoFlushAdapterBuffers ( + PADAPTER_OBJECT AdapterObject, + PMDL Mdl, + PVOID MapRegisterBase, + PVOID CurrentVa, + ULONG Length, + BOOLEAN WriteToDevice + ); +VOID +STDCALL +IoFreeAdapterChannel ( + PADAPTER_OBJECT AdapterObject + ); +VOID +STDCALL +IoFreeMapRegisters ( + PADAPTER_OBJECT AdapterObject, + PVOID MapRegisterBase, + ULONG NumberOfMapRegisters + ); PHYSICAL_ADDRESS +STDCALL IoMapTransfer ( PADAPTER_OBJECT AdapterObject, PMDL Mdl, @@ -600,7 +973,95 @@ IoMapTransfer ( PULONG Length, BOOLEAN WriteToDevice ); +NTSTATUS +STDCALL +IoReadPartitionTable ( + PDEVICE_OBJECT DeviceObject, + ULONG SectorSize, + BOOLEAN ReturnedRecognizedPartitions, + struct _DRIVE_LAYOUT_INFORMATION ** PBuffer + ); +NTSTATUS +STDCALL +IoSetPartitionInformation ( + PDEVICE_OBJECT DeviceObject, + ULONG SectorSize, + ULONG PartitionNumber, + ULONG PartitionType + ); +NTSTATUS +STDCALL +IoWritePartitionTable ( + PDEVICE_OBJECT DeviceObject, + ULONG SectorSize, + ULONG SectorsPerTrack, + ULONG NumberOfHeads, + struct _DRIVE_LAYOUT_INFORMATION* PBuffer + ); + +/* --- --- --- INTERNAL or REACTOS ONLY --- --- --- */ + + + +/* + * FUNCTION: Registers the driver with WMI + * ARGUMENTS: + * DeviceObject = Device to register + * Action = Action to take + * RETURNS: Status (?) + */ +//NTSTATUS IoWMIRegistrationControl(DeviceObject, WMIREGACTION Action); + + +/* + * 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 + */ +VOID +IoAssignArcName ( + PUNICODE_STRING ArcName, + PUNICODE_STRING DeviceName + ); +VOID +IoDeassignArcName ( + PUNICODE_STRING ArcName + ); +/* + * 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 + ); /* * FUNCTION: Marks an IRP as pending * ARGUMENTS: @@ -613,90 +1074,17 @@ VOID IoMarkIrpPending ( PIRP Irp ); - -NTSTATUS -IoQueryDeviceDescription ( - PINTERFACE_TYPE BusType, - PULONG BusNumber, - PCONFIGURATION_TYPE ControllerType, - PULONG ControllerNumber, - PCONFIGURATION_TYPE PeripheralType, - PULONG PeripheralNumber, - PIO_QUERY_DEVICE_ROUTINE CalloutRoutine, - PVOID Context - ); - -VOID -IoRaiseHardError ( - PIRP Irp, - PVPB Vpb, - PDEVICE_OBJECT RealDeviceObject - ); - -BOOLEAN -IoRaiseHardInformationalError ( - NTSTATUS ErrorStatus, - PUNICODE_STRING String, - PKTHREAD Thread - ); - -NTSTATUS -IoReadPartitionTable ( - PDEVICE_OBJECT DeviceObject, - ULONG SectorSize, - BOOLEAN ReturnedRecognizedPartitions, - struct _DRIVE_LAYOUT_INFORMATION ** PBuffer - ); - -VOID -IoRegisterDriverReinitialization ( - PDRIVER_OBJECT DriverObject, - PDRIVER_REINITIALIZE ReinitRoutine, - PVOID Context - ); - -NTSTATUS -IoRegisterShutdownNotification ( - PDEVICE_OBJECT DeviceObject - ); - -VOID -IoReleaseCancelSpinLock ( - KIRQL Irql - ); - -VOID -IoRemoveShareAccess ( - PFILE_OBJECT FileObject, - PSHARE_ACCESS ShareAccess - ); - -NTSTATUS -IoReportResourceUsage ( - PUNICODE_STRING DriverClassName, - PDRIVER_OBJECT DriverObject, - PCM_RESOURCE_LIST DriverList, - ULONG DriverListSize, - PDEVICE_OBJECT DeviceObject, - PCM_RESOURCE_LIST DeviceList, - ULONG DeviceListSize, - BOOLEAN OverrideConflict, - PBOOLEAN ConflictDetected - ); - VOID IoRequestDpc ( PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context ); - PDRIVER_CANCEL IoSetCancelRoutine ( PIRP Irp, PDRIVER_CANCEL CancelRoutine ); - VOID IoSetCompletionRoutine ( PIRP Irp, @@ -706,34 +1094,10 @@ IoSetCompletionRoutine ( BOOLEAN InvokeOnError, BOOLEAN InvokeOnCancel ); - -VOID -IoSetHardErrorOrVerifyDevice ( - PIRP Irp, - PDEVICE_OBJECT DeviceObject - ); - VOID IoSetNextIrpStackLocation ( PIRP Irp ); - -NTSTATUS -IoSetPartitionInformation ( - PDEVICE_OBJECT DeviceObject, - ULONG SectorSize, - ULONG PartitionNumber, - ULONG PartitionType - ); - -VOID -IoSetShareAccess ( - ACCESS_MASK DesiredAccess, - ULONG DesiredShareAccess, - PFILE_OBJECT FileObject, - PSHARE_ACCESS ShareAccess - ); - /* * FUNCTION: Determines the size of an IRP * ARGUMENTS: @@ -744,80 +1108,7 @@ USHORT IoSizeOfIrp ( CCHAR StackSize ); - -/* - * FUNCTION: Dequeues the next IRP from the device's associated queue and - * calls its StartIo routine - * ARGUMENTS: - * DeviceObject = Device object - * Cancelable = True if IRPs in the queue can be cancelled - */ -VOID -IoStartNextPacket ( - PDEVICE_OBJECT DeviceObject, - BOOLEAN Cancelable - ); - -VOID -IoStartNextPacketByKey ( - PDEVICE_OBJECT DeviceObject, - BOOLEAN Cancelable, - ULONG Key - ); - -/* - * FUNCTION: Calls the drivers StartIO routine with the IRP or queues it if - * the device is busy - * ARGUMENTS: - * DeviceObject = Device to pass the IRP to - * Irp = Irp to be processed - * Key = Optional value for where to insert the IRP - * CancelFunction = Entry point for a driver supplied cancel function - */ -VOID -IoStartPacket ( - PDEVICE_OBJECT DeviceObject, - PIRP Irp, - PULONG Key, - PDRIVER_CANCEL CancelFunction - ); - -VOID -IoStartTimer ( - PDEVICE_OBJECT DeviceObject - ); - -VOID -IoStopTimer ( - PDEVICE_OBJECT DeviceObject - ); - -VOID -IoUnregisterShutdownNotification ( - PDEVICE_OBJECT DeviceObject - ); - -VOID -IoUpdateShareAccess ( - PFILE_OBJECT FileObject, - PSHARE_ACCESS ShareAccess - ); - -VOID -IoWriteErrorLogEntry ( - PVOID ElEntry - ); - -NTSTATUS -IoWritePartitionTable ( - PDEVICE_OBJECT DeviceObject, - ULONG SectorSize, - ULONG SectorsPerTrack, - ULONG NumberOfHeads, - struct _DRIVE_LAYOUT_INFORMATION* PBuffer - ); - - +#if 0 // Preliminary guess NTKERNELAPI NTSTATUS @@ -828,30 +1119,6 @@ IoQueryFileVolumeInformation ( OUT PVOID FsInformation, OUT PULONG ReturnedLength ); +#endif -NTKERNELAPI // confirmed - Undocumented because it does not require a valid file handle -NTSTATUS -IoQueryFileInformation ( - IN PFILE_OBJECT FileObject, - IN FILE_INFORMATION_CLASS FileInformationClass, - IN ULONG Length, - OUT PVOID FileInformation, - OUT PULONG ReturnedLength - ); - -VOID -IoRegisterFileSystem ( - PDEVICE_OBJECT DeviceObject - ); - -PDEVICE_OBJECT -IoGetAttachedDevice ( - PDEVICE_OBJECT DeviceObject - ); - -PFILE_OBJECT -IoCreateStreamFileObject ( - PFILE_OBJECT FileObject, - PDEVICE_OBJECT DeviceObject - ); - +#endif /* ndef _INCLUDE_DDK_IOFUNCS_H */ diff --git a/reactos/include/ddk/iotypes.h b/reactos/include/ddk/iotypes.h index 0520df9a26a..c8f9f7e8222 100644 --- a/reactos/include/ddk/iotypes.h +++ b/reactos/include/ddk/iotypes.h @@ -1,4 +1,4 @@ -/* $Id: iotypes.h,v 1.13 2000/03/12 01:22:37 ekohl Exp $ +/* $Id: iotypes.h,v 1.14 2000/03/26 19:38:13 ea Exp $ * */ @@ -606,4 +606,26 @@ typedef struct } CM_RESOURCE_LIST, *PCM_RESOURCE_LIST; +typedef +IO_ALLOCATION_ACTION +(*PDRIVER_CONTROL) ( + PDEVICE_OBJECT DeviceObject, + PIRP irp, + PVOID MapRegisterBase, + PVOID Context + ); +#if (_WIN32_WINNT >= 0x0400) +typedef +VOID +(*PFSDNOTIFICATIONPROC) ( + IN PDEVICE_OBJECT PtrTargetFileSystemDeviceObject, + IN BOOLEAN DriverActive + ); +#endif // (_WIN32_WINNT >= 0x0400) + +enum +{ + IO_NO_INCREMENT, +}; + #endif __INCLUDE_DDK_IOTYPES_H diff --git a/reactos/include/internal/io.h b/reactos/include/internal/io.h index 8517482ce85..bdd8bef74c7 100644 --- a/reactos/include/internal/io.h +++ b/reactos/include/internal/io.h @@ -1,23 +1,23 @@ -/* $Id: io.h,v 1.8 2000/03/05 19:17:39 ea Exp $ +/* $Id: io.h,v 1.9 2000/03/26 19:38:14 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel - * FILE: include/internal/iomgr.h + * FILE: include/internal/io.h * PURPOSE: Internal io manager declarations * PROGRAMMER: David Welch (welch@mcmail.com) * UPDATE HISTORY: * 28/05/97: Created */ -#ifndef __INCLUDE_INTERNAL_IOMGR_H -#define __INCLUDE_INTERNAL_IOMGR_H +#ifndef __INCLUDE_INTERNAL_IO_H +#define __INCLUDE_INTERNAL_IO_H #include #include -extern POBJECT_TYPE IoDeviceType; -extern POBJECT_TYPE IoFileType; -extern POBJECT_TYPE IoSymbolicLinkType; +extern POBJECT_TYPE EXPORTED IoDeviceObjectType; +extern POBJECT_TYPE EXPORTED IoFileObjectType; +extern POBJECT_TYPE IoSymbolicLinkObjectType; /* * FUNCTION: Called to initalize a loaded driver @@ -44,10 +44,13 @@ PIRP IoBuildFilesystemControlRequest(ULONG MinorFunction, PDEVICE_OBJECT DeviceToMount); VOID IoSecondStageCompletion(PIRP Irp, CCHAR PriorityBoost); -NTSTATUS IopCreateFile(PVOID ObjectBody, - PVOID Parent, - PWSTR RemainingPath, - POBJECT_ATTRIBUTES ObjectAttributes); +NTSTATUS +IopCreateFile ( + PVOID ObjectBody, + PVOID Parent, + PWSTR RemainingPath, + POBJECT_ATTRIBUTES ObjectAttributes + ); NTSTATUS IopCreateDevice(PVOID ObjectBody, PVOID Parent, PWSTR RemainingPath, diff --git a/reactos/include/internal/mm.h b/reactos/include/internal/mm.h index 6976594990e..980bd9961c5 100644 --- a/reactos/include/internal/mm.h +++ b/reactos/include/internal/mm.h @@ -108,10 +108,6 @@ NTSTATUS MmCopyMmInfo(PEPROCESS Src, PEPROCESS Dest); NTSTATUS MmReleaseMmInfo(PEPROCESS Process); NTSTATUS Mmi386ReleaseMmInfo(PEPROCESS Process); VOID MmDeletePageEntry(PEPROCESS Process, PVOID Address, BOOL FreePage); -NTSTATUS IoPageRead(PFILE_OBJECT FileObject, - PMDL Mdl, - PLARGE_INTEGER Offset, - PIO_STATUS_BLOCK StatusBlock); VOID MmBuildMdlFromPages(PMDL Mdl); PVOID MmGetMdlPageAddress(PMDL Mdl, PVOID Offset); diff --git a/reactos/loaders/dos/loadros.asm b/reactos/loaders/dos/loadros.asm index 9da29d4a425..39fbd796e33 100644 --- a/reactos/loaders/dos/loadros.asm +++ b/reactos/loaders/dos/loadros.asm @@ -875,9 +875,9 @@ _to_pmode: mov ah,12 int 10h - mov ax,1112h ;! Use 8x8 font - xor bl,bl - int 10h +; mov ax,1112h ;! Use 8x8 font +; xor bl,bl +; int 10h mov ax,1200h ;! Use alternate print screen mov bl,20h int 10h diff --git a/reactos/ntoskrnl/ex/sysinfo.c b/reactos/ntoskrnl/ex/sysinfo.c index aed4d622764..970e3d1c6e0 100644 --- a/reactos/ntoskrnl/ex/sysinfo.c +++ b/reactos/ntoskrnl/ex/sysinfo.c @@ -1,4 +1,4 @@ -/* $Id: sysinfo.c,v 1.3 1999/08/11 23:27:58 ekohl Exp $ +/* $Id: sysinfo.c,v 1.4 2000/03/26 19:38:18 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -245,3 +245,6 @@ NtFlushInstructionCache ( { UNIMPLEMENTED; } + + +/* EOF */ diff --git a/reactos/ntoskrnl/hal/x86/adapter.c b/reactos/ntoskrnl/hal/x86/adapter.c new file mode 100644 index 00000000000..39cbf718cae --- /dev/null +++ b/reactos/ntoskrnl/hal/x86/adapter.c @@ -0,0 +1,74 @@ +/* $Id: adapter.c,v 1.1 2000/03/26 19:38:18 ea Exp $ + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * FILE: hal/x86/adapter.c (from ntoskrnl/io/adapter.c) + * PURPOSE: DMA handling + * PROGRAMMER: David Welch (welch@mcmail.com) + * UPDATE HISTORY: + * Created 22/05/98 + */ + +/* INCLUDES *****************************************************************/ + +#include + +#include + +/* FUNCTIONS *****************************************************************/ + +/* NOTE: IoAllocateAdapterChannel in NTOSKRNL.EXE */ + +BOOLEAN +STDCALL +IoFlushAdapterBuffers ( + PADAPTER_OBJECT AdapterObject, + PMDL Mdl, + PVOID MapRegisterBase, + PVOID CurrentVa, + ULONG Length, + BOOLEAN WriteToDevice + ) +{ + UNIMPLEMENTED; +} + + +VOID +STDCALL +IoFreeAdapterChannel ( + PADAPTER_OBJECT AdapterObject + ) +{ + UNIMPLEMENTED; +} + + +VOID +STDCALL +IoFreeMapRegisters ( + PADAPTER_OBJECT AdapterObject, + PVOID MapRegisterBase, + ULONG NumberOfMapRegisters + ) +{ + UNIMPLEMENTED; +} + + +PHYSICAL_ADDRESS +STDCALL +IoMapTransfer ( + PADAPTER_OBJECT AdapterObject, + PMDL Mdl, + PVOID MapRegisterBase, + PVOID CurrentVa, + PULONG Length, + BOOLEAN WriteToDevice + ) +{ + UNIMPLEMENTED; +} + + +/* EOF */ diff --git a/reactos/ntoskrnl/hal/x86/drive.c b/reactos/ntoskrnl/hal/x86/drive.c new file mode 100644 index 00000000000..c4267efa091 --- /dev/null +++ b/reactos/ntoskrnl/hal/x86/drive.c @@ -0,0 +1,33 @@ +/* $Id: drive.c,v 1.1 2000/03/26 19:38:18 ea Exp $ + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * FILE: hal/x86/drive.c + * PURPOSE: Drive letters + * PROGRAMMER: + * UPDATE HISTORY: + * 2000-03-25 + */ + +/* INCLUDES *****************************************************************/ + +#include + +#include + +/* FUNCTIONS *****************************************************************/ + +VOID +STDCALL +IoAssignDriveLetters ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3 + ) +{ + UNIMPLEMENTED; +} + + +/* EOF */ diff --git a/reactos/ntoskrnl/hal/x86/irq.c b/reactos/ntoskrnl/hal/x86/irq.c index d703360a1ff..7fa616df518 100644 --- a/reactos/ntoskrnl/hal/x86/irq.c +++ b/reactos/ntoskrnl/hal/x86/irq.c @@ -1,4 +1,4 @@ -/* $Id: irq.c,v 1.9 2000/03/20 17:59:42 ekohl Exp $ +/* $Id: irq.c,v 1.10 2000/03/26 19:38:18 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -233,7 +233,9 @@ static VOID KeDumpIrqList(VOID) } } -NTSTATUS IoConnectInterrupt(PKINTERRUPT* InterruptObject, +NTSTATUS +STDCALL +IoConnectInterrupt(PKINTERRUPT* InterruptObject, PKSERVICE_ROUTINE ServiceRoutine, PVOID ServiceContext, PKSPIN_LOCK SpinLock, @@ -350,7 +352,9 @@ NTSTATUS IoConnectInterrupt(PKINTERRUPT* InterruptObject, } -VOID IoDisconnectInterrupt(PKINTERRUPT InterruptObject) +VOID +STDCALL +IoDisconnectInterrupt(PKINTERRUPT InterruptObject) /* * FUNCTION: Releases a drivers isr * ARGUMENTS: diff --git a/reactos/ntoskrnl/hal/x86/parttab.c b/reactos/ntoskrnl/hal/x86/parttab.c new file mode 100644 index 00000000000..968dacae9d1 --- /dev/null +++ b/reactos/ntoskrnl/hal/x86/parttab.c @@ -0,0 +1,59 @@ +/* $Id: parttab.c,v 1.1 2000/03/26 19:38:18 ea Exp $ + * + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS kernel + * FILE: ntoskrnl/hal/x86/parttab.c (was ntoskrnl/io/fdisk.c) + * PURPOSE: Handling fixed disks (partition table functions) + * PROGRAMMER: David Welch (welch@mcmail.com) + * UPDATE HISTORY: + * Created 22/05/98 + * 2000-03-25 (ea) + * Moved here from ntoskrnl/io/fdisk.c + */ + +/* INCLUDES *****************************************************************/ + +#include + +#include + +/* FUNCTIONS *****************************************************************/ + +NTSTATUS +STDCALL +IoReadPartitionTable ( + PDEVICE_OBJECT DeviceObject, + ULONG SectorSize, + BOOLEAN ReturnRecognizedPartitions, + struct _DRIVE_LAYOUT_INFORMATION ** PBuffer + ) +{ + UNIMPLEMENTED; +} + +NTSTATUS +STDCALL +IoSetPartitionInformation ( + PDEVICE_OBJECT DeviceObject, + ULONG SectorSize, + ULONG PartitionNumber, + ULONG PartitionType) +{ + UNIMPLEMENTED; +} + +NTSTATUS +STDCALL +IoWritePartitionTable ( + PDEVICE_OBJECT DeviceObject, + ULONG SectorSize, + ULONG SectorsPerTrack, + ULONG NumberOfHeads, + struct _DRIVE_LAYOUT_INFORMATION * PBuffer + ) +{ + UNIMPLEMENTED; +} + + +/* EOF */ diff --git a/reactos/ntoskrnl/hal/x86/pwroff.c b/reactos/ntoskrnl/hal/x86/pwroff.c new file mode 100644 index 00000000000..1cbb5affd7f --- /dev/null +++ b/reactos/ntoskrnl/hal/x86/pwroff.c @@ -0,0 +1,114 @@ +/* $Id: pwroff.c,v 1.1 2000/03/26 19:38:19 ea Exp $ + * + * FILE : reactos/hal/x86/apm.c + * DESCRIPTION: Turn CPU off... + * PROJECT : ReactOS Operating System + * AUTHOR : D. Lindauer (July 11 1997) + * NOTE : This program is public domain + * REVISIONS : + * 1999-12-26 + */ + +#define APM_FUNCTION_AVAILABLE 0x5300 +#define APM_FUNCTION_CONNREAL 0x5301 +#define APM_FUNCTION_POWEROFF 0x5307 +#define APM_FUNCTION_ENABLECPU 0x530d +#define APM_FUNCTION_ENABLEAPM 0x530e + +#define APM_DEVICE_BIOS 0 +#define APM_DEVICE_ALL 1 + +#define APM_MODE_DISABLE 0 +#define APM_MODE_ENABLE 1 + + + +nopm db 'No power management functionality',10,13,'$' +errmsg db 'Power management error',10,13,'$' +wrongver db 'Need APM version 1.1 or better',10,13,'$' +; +; Entry point +; +go: + mov dx,offset nopm + jc error + cmp ax,101h ; See if version 1.1 or greater + mov dx,offset wrongver + jc error + + mov [ver],ax + mov ax,5301h ; Do a real mode connection + mov bx,0 ; device = BIOS + int 15h + jnc noconerr + + cmp ah,2 ; Pass if already connected + mov dx,offset errmsg ; else error + jnz error +noconerr: + mov ax,530eh ; Enable latest version of APM + mov bx,0 ; device = BIOS + mov cx,[ver] ; version + int 15h + mov dx,offset errmsg + jc error + + mov ax,530dh ; Now engage and enable CPU management + mov bx,1 ; device = all + mov cx,1 ; enable + int 15h + mov dx,offset errmsg + jc error + + mov ax,530fh + mov bx,1 ; device = ALL + mov cx,1 ; enable + int 15h + mov dx,offset errmsg + jc error + + mov dx,offset errmsg +error: + call print + mov ax,4c01h + int 21h + int 3 + end start + + +BOOLEAN +ApmCall ( + DWORD Function, + DWORD Device, + DWORD Mode + ) +{ + /* AX <== Function */ + /* BX <== Device */ + /* CX <== Mode */ + __asm__("int 21\n"); /* 0x15 */ +} + + +BOOLEAN +HalPowerOff (VOID) +{ + ApmCall ( + APM_FUNCTION_AVAILABLE, + APM_DEVICE_BIOS, + 0 + ); + ApmCall ( + APM_FUNCTION_ENABLEAPM, + ); + /* Shutdown CPU */ + ApmCall ( + APM_FUNCTION_POWEROFF, + APM_DEVICE_ALL, + 3 + ); + return TRUE; +} + + +/* EOF */ diff --git a/reactos/ntoskrnl/hal/x86/sources b/reactos/ntoskrnl/hal/x86/sources index ee21ae8751d..b20c79c471d 100644 --- a/reactos/ntoskrnl/hal/x86/sources +++ b/reactos/ntoskrnl/hal/x86/sources @@ -4,4 +4,5 @@ HAL_OBJECTS = hal/x86/irq.o hal/x86/isa.o \ hal/x86/mp.o hal/x86/dma.o hal/x86/bus.o hal/x86/mbr.o \ hal/x86/sysinfo.o hal/x86/time.o hal/x86/beep.o \ hal/x86/display.o hal/x86/reboot.o hal/x86/kdbg.o \ - hal/x86/portio.o hal/x86/misc.o + hal/x86/portio.o hal/x86/misc.o hal/x86/parttab.o \ + hal/x86/adapter.o hal/x86/drive.o diff --git a/reactos/ntoskrnl/io/adapter.c b/reactos/ntoskrnl/io/adapter.c index ae08a5c521b..c89e33e5525 100644 --- a/reactos/ntoskrnl/io/adapter.c +++ b/reactos/ntoskrnl/io/adapter.c @@ -1,4 +1,5 @@ -/* +/* $Id: adapter.c,v 1.2 2000/03/26 19:38:20 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/adapter.c @@ -14,45 +15,30 @@ #include +/* DATA **********************************************************************/ + +POBJECT_TYPE EXPORTED IoAdapterObjectType = NULL; /* FIXME */ +POBJECT_TYPE EXPORTED IoDeviceHandlerObjectType = NULL; /* FIXME */ +USHORT EXPORTED IoDeviceHandlerObjectSize = 0; /* FIXME */ +ULONG EXPORTED IoReadOperationCount = 0; /* FIXME */ + /* FUNCTIONS *****************************************************************/ -NTSTATUS IoAllocateAdapterChannel(PADAPTER_OBJECT AdapterObject, - PDEVICE_OBJECT DeviceObject, - ULONG NumberOfMapRegisters, - PDRIVER_CONTROL ExecutionRoutine, - PVOID Context) +NTSTATUS +STDCALL +IoAllocateAdapterChannel ( + PADAPTER_OBJECT AdapterObject, + PDEVICE_OBJECT DeviceObject, + ULONG NumberOfMapRegisters, + PDRIVER_CONTROL ExecutionRoutine, + PVOID Context + ) { - UNIMPLEMENTED; + UNIMPLEMENTED; } -BOOLEAN IoFlushAdapterBuffers(PADAPTER_OBJECT AdapterObject, - PMDL Mdl, - PVOID MapRegisterBase, - PVOID CurrentVa, - ULONG Length, - BOOLEAN WriteToDevice) -{ - UNIMPLEMENTED; -} -PHYSICAL_ADDRESS IoMapTransfer(PADAPTER_OBJECT AdapterObject, - PMDL Mdl, - PVOID MapRegisterBase, - PVOID CurrentVa, - PULONG Length, - BOOLEAN WriteToDevice) -{ - UNIMPLEMENTED; -} +/* NOTE: Missing IoXXXAdapter finctions in HAL.DLL */ -VOID IoFreeAdapterChannel(PADAPTER_OBJECT AdapterObject) -{ - UNIMPLEMENTED; -} -VOID IoFreeMapRegisters(PADAPTER_OBJECT AdapterObject, - PVOID MapRegisterBase, - ULONG NumberOfMapRegisters) -{ - UNIMPLEMENTED; -} +/* EOF */ diff --git a/reactos/ntoskrnl/io/buildirp.c b/reactos/ntoskrnl/io/buildirp.c index 4cc796666c5..f940af09fe2 100644 --- a/reactos/ntoskrnl/io/buildirp.c +++ b/reactos/ntoskrnl/io/buildirp.c @@ -1,4 +1,5 @@ -/* +/* $Id: buildirp.c,v 1.20 2000/03/26 19:38:21 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/buildirp.c @@ -121,7 +122,9 @@ PIRP IoBuildFilesystemControlRequest(ULONG MinorFunction, return(Irp); } -PIRP IoBuildAsynchronousFsdRequest(ULONG MajorFunction, +PIRP +STDCALL +IoBuildAsynchronousFsdRequest(ULONG MajorFunction, PDEVICE_OBJECT DeviceObject, PVOID Buffer, ULONG Length, @@ -208,7 +211,9 @@ PIRP IoBuildAsynchronousFsdRequest(ULONG MajorFunction, return(Irp); } -PIRP IoBuildDeviceIoControlRequest(ULONG IoControlCode, +PIRP +STDCALL +IoBuildDeviceIoControlRequest(ULONG IoControlCode, PDEVICE_OBJECT DeviceObject, PVOID InputBuffer, ULONG InputBufferLength, @@ -367,7 +372,9 @@ PIRP IoBuildDeviceIoControlRequest(ULONG IoControlCode, return(Irp); } -PIRP IoBuildSynchronousFsdRequest(ULONG MajorFunction, +PIRP +STDCALL +IoBuildSynchronousFsdRequest(ULONG MajorFunction, PDEVICE_OBJECT DeviceObject, PVOID Buffer, ULONG Length, @@ -538,3 +545,6 @@ PIRP IoBuildSynchronousFsdRequestWithMdl(ULONG MajorFunction, return(Irp); } + + +/* EOF */ diff --git a/reactos/ntoskrnl/io/cancel.c b/reactos/ntoskrnl/io/cancel.c index 4a3552bdc81..7d935ff4c9f 100644 --- a/reactos/ntoskrnl/io/cancel.c +++ b/reactos/ntoskrnl/io/cancel.c @@ -1,4 +1,5 @@ -/* +/* $Id: cancel.c,v 1.4 2000/03/26 19:38:21 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/cancel.c @@ -31,7 +32,7 @@ NtCancelIoFile ( UNIMPLEMENTED; } -BOOLEAN IoCancelIrp(PIRP Irp) +BOOLEAN STDCALL IoCancelIrp(PIRP Irp) { KIRQL oldlvl; @@ -53,12 +54,12 @@ VOID IoInitCancelHandling(VOID) KeInitializeSpinLock(&CancelSpinLock); } -VOID IoAcquireCancelSpinLock(PKIRQL Irql) +VOID STDCALL IoAcquireCancelSpinLock(PKIRQL Irql) { KeAcquireSpinLock(&CancelSpinLock,Irql); } -VOID IoReleaseCancelSpinLock(KIRQL Irql) +VOID STDCALL IoReleaseCancelSpinLock(KIRQL Irql) { KeReleaseSpinLock(&CancelSpinLock,Irql); } @@ -68,3 +69,6 @@ PDRIVER_CANCEL IoSetCancelRoutine(PIRP Irp, PDRIVER_CANCEL CancelRoutine) return((PDRIVER_CANCEL)InterlockedExchange((PULONG)&Irp->CancelRoutine, (ULONG)CancelRoutine)); } + + +/* EOF */ diff --git a/reactos/ntoskrnl/io/cntrller.c b/reactos/ntoskrnl/io/cntrller.c index 311d162c918..7ceb7ea6109 100644 --- a/reactos/ntoskrnl/io/cntrller.c +++ b/reactos/ntoskrnl/io/cntrller.c @@ -1,4 +1,5 @@ -/* +/* $Id: cntrller.c,v 1.4 2000/03/26 19:38:21 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/cntrller.c @@ -29,7 +30,9 @@ typedef struct /* FUNCTIONS *****************************************************************/ -VOID IoAllocateController(PCONTROLLER_OBJECT ControllerObject, +VOID +STDCALL +IoAllocateController(PCONTROLLER_OBJECT ControllerObject, PDEVICE_OBJECT DeviceObject, PDRIVER_CONTROL ExecutionRoutine, PVOID Context) @@ -71,7 +74,9 @@ VOID IoAllocateController(PCONTROLLER_OBJECT ControllerObject, ExFreePool(entry); } -PCONTROLLER_OBJECT IoCreateController(ULONG Size) +PCONTROLLER_OBJECT +STDCALL +IoCreateController(ULONG Size) /* * FUNCTION: Allocates memory and initializes a controller object * ARGUMENTS: @@ -100,7 +105,9 @@ PCONTROLLER_OBJECT IoCreateController(ULONG Size) return(controller); } -VOID IoDeleteController(PCONTROLLER_OBJECT ControllerObject) +VOID +STDCALL +IoDeleteController(PCONTROLLER_OBJECT ControllerObject) /* * FUNCTION: Removes a given controller object from the system * ARGUMENTS: @@ -113,7 +120,9 @@ VOID IoDeleteController(PCONTROLLER_OBJECT ControllerObject) ExFreePool(ControllerObject); } -VOID IoFreeController(PCONTROLLER_OBJECT ControllerObject) +VOID +STDCALL +IoFreeController(PCONTROLLER_OBJECT ControllerObject) /* * FUNCTION: Releases a previously allocated controller object when a * device has finished an I/O request @@ -141,3 +150,5 @@ VOID IoFreeController(PCONTROLLER_OBJECT ControllerObject) } while (Result == DeallocateObject); } + +/* EOF */ diff --git a/reactos/ntoskrnl/io/create.c b/reactos/ntoskrnl/io/create.c index e6a29f933ba..e489cfea6e4 100644 --- a/reactos/ntoskrnl/io/create.c +++ b/reactos/ntoskrnl/io/create.c @@ -1,4 +1,5 @@ -/* +/* $Id: create.c,v 1.29 2000/03/26 19:38:21 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/create.c @@ -21,12 +22,279 @@ /* FUNCTIONS *************************************************************/ -NTSTATUS STDCALL NtDeleteFile(IN POBJECT_ATTRIBUTES ObjectAttributes) +/********************************************************************** + * NAME EXPORTED + * NtDeleteFile@4 + * + * DESCRIPTION + * + * ARGUMENTS + * ObjectAttributes + * ? + * + * RETURN VALUE + * + * REVISIONS + * + */ +NTSTATUS +STDCALL +NtDeleteFile ( + IN POBJECT_ATTRIBUTES ObjectAttributes + ) { - UNIMPLEMENTED; + UNIMPLEMENTED; } +/********************************************************************** + * NAME INTERNAL + * IopCreateFile + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + * REVISIONS + * + */ +NTSTATUS +IopCreateFile ( + PVOID ObjectBody, + PVOID Parent, + PWSTR RemainingPath, + POBJECT_ATTRIBUTES ObjectAttributes + ) +{ + PDEVICE_OBJECT DeviceObject = (PDEVICE_OBJECT) Parent; + PFILE_OBJECT FileObject = (PFILE_OBJECT) ObjectBody; + NTSTATUS Status; + + DPRINT( + "IopCreateFile(ObjectBody %x, Parent %x, RemainingPath %S)\n", + ObjectBody, + Parent, + RemainingPath + ); + + if (NULL == DeviceObject) + { + DPRINT("DeviceObject was NULL\n"); + return (STATUS_SUCCESS); + } + if (IoDeviceObjectType != BODY_TO_HEADER(Parent)->ObjectType) + { + DPRINT ("Parent is not a device type\n"); + return (STATUS_UNSUCCESSFUL); + } + Status = ObReferenceObjectByPointer ( + DeviceObject, + STANDARD_RIGHTS_REQUIRED, + IoDeviceObjectType, + UserMode + ); + if (STATUS_SUCCESS != Status) + { + CHECKPOINT; + return (Status); + } + + DeviceObject = IoGetAttachedDevice (DeviceObject); + + DPRINT ("DeviceObject %x\n", DeviceObject); + + if (NULL == RemainingPath) + { + FileObject->Flags = FileObject->Flags | FO_DIRECT_DEVICE_OPEN; + FileObject->FileName.Buffer = ExAllocatePool(NonPagedPool, + (ObjectAttributes->ObjectName->Length+1)*2); + FileObject->FileName.Length = ObjectAttributes->ObjectName->Length; + FileObject->FileName.MaximumLength = + ObjectAttributes->ObjectName->MaximumLength; + RtlCopyUnicodeString(&(FileObject->FileName), + ObjectAttributes->ObjectName); + } + else + { + if ( (DeviceObject->DeviceType != FILE_DEVICE_FILE_SYSTEM) + && (DeviceObject->DeviceType != FILE_DEVICE_DISK) + ) + { + DPRINT ("Device was wrong type\n"); + return (STATUS_UNSUCCESSFUL); + } + if (!(DeviceObject->Vpb->Flags & VPB_MOUNTED)) + { + DPRINT("Trying to mount storage device\n"); + Status = IoTryToMountStorageDevice (DeviceObject); + DPRINT("Status %x\n", Status); + if (!NT_SUCCESS(Status)) + { + DPRINT( + "Failed to mount storage device (statux %x)\n", + Status + ); + return (Status); + } + DeviceObject = IoGetAttachedDevice(DeviceObject); + } + RtlInitUnicodeString ( + & (FileObject->FileName), + wcsdup (RemainingPath) + ); + } + DPRINT( + "FileObject->FileName.Buffer %S\n", + FileObject->FileName.Buffer + ); + FileObject->DeviceObject = DeviceObject; + DPRINT( + "FileObject %x DeviceObject %x\n", + FileObject, + DeviceObject + ); + FileObject->Vpb = DeviceObject->Vpb; + FileObject->Type = InternalFileType; + + return (STATUS_SUCCESS); +} + + +/********************************************************************** + * NAME EXPORTED + * IoCreateStreamFileObject@8 + * + * DESCRIPTION + * + * ARGUMENTS + * FileObject + * ? + * + * DeviceObject + * ? + * + * RETURN VALUE + * + * NOTE + * + * REVISIONS + * + */ +PFILE_OBJECT +STDCALL +IoCreateStreamFileObject ( + PFILE_OBJECT FileObject, + PDEVICE_OBJECT DeviceObject + ) +{ + HANDLE FileHandle; + PFILE_OBJECT CreatedFileObject; + + DbgPrint("IoCreateStreamFileObject(FileObject %x, DeviceObject %x)\n", + FileObject, + DeviceObject + ); + + assert_irql (PASSIVE_LEVEL); + + CreatedFileObject = ObCreateObject ( + & FileHandle, + STANDARD_RIGHTS_REQUIRED, + NULL, + IoFileObjectType + ); + if (NULL == CreatedFileObject) + { + return (NULL); + } + + if (FileObject != NULL) + { + DeviceObject = FileObject->DeviceObject; + } + DeviceObject = IoGetAttachedDevice(DeviceObject); + CreatedFileObject->DeviceObject = DeviceObject; + CreatedFileObject->Vpb = DeviceObject->Vpb; + CreatedFileObject->Type = InternalFileType; + //CreatedFileObject->Flags = CreatedFileObject->Flags | FO_DIRECT_DEVICE_OPEN; + CreatedFileObject->Flags |= FO_DIRECT_DEVICE_OPEN; + + ZwClose (FileHandle); + + return (CreatedFileObject); +} + + +/********************************************************************** + * NAME EXPORTED + * IoCreateFile@56 + * + * DESCRIPTION + * Either causes a new file or directory to be created, or it + * opens an existing file, device, directory or volume, giving + * the caller a handle for the file object. This handle can be + * used by subsequent calls to manipulate data within the file + * or the file object's state of attributes. + * + * ARGUMENTS + * FileHandle (OUT) + * Points to a variable which receives the file handle + * on return; + * + * DesiredAccess + * Desired access to the file; + * + * ObjectAttributes + * Structure describing the file; + * + * IoStatusBlock (OUT) + * Receives information about the operation on return; + * + * AllocationSize [OPTIONAL] + * Initial size of the file in bytes; + * + * FileAttributes + * Attributes to create the file with; + * + * ShareAccess + * Type of shared access the caller would like to the + * file; + * + * CreateDisposition + * Specifies what to do, depending on whether the + * file already exists; + * + * CreateOptions + * Options for creating a new file; + * + * EaBuffer [OPTIONAL] + * Undocumented; + * + * EaLength + * Undocumented; + * + * CreateFileType + * Undocumented; + * + * ExtraCreateParameters + * Undocumented; + * + * Options + * Undocumented. + * + * RETURN VALUE + * Status + * + * NOTE + * Prototype taken from Bo Branten's ntifs.h v15. + * Description taken from old NtCreateFile's which is + * now a wrapper of this call. + * + * REVISIONS + * + */ NTSTATUS STDCALL IoCreateFile ( @@ -42,128 +310,135 @@ IoCreateFile ( IN PVOID EaBuffer OPTIONAL, IN ULONG EaLength, IN CREATE_FILE_TYPE CreateFileType, - IN ULONG ExtraCreateParameters, + IN PVOID ExtraCreateParameters OPTIONAL, IN ULONG Options ) { - UNIMPLEMENTED; + PFILE_OBJECT FileObject; + NTSTATUS Status; + PIRP Irp; + KEVENT Event; + PIO_STACK_LOCATION StackLoc; + + DPRINT1("IoCreateFile(FileHandle %x, DesiredAccess %x, " + "ObjectAttributes %x ObjectAttributes->ObjectName->Buffer %S)\n", + FileHandle,DesiredAccess,ObjectAttributes, + ObjectAttributes->ObjectName->Buffer); + + assert_irql(PASSIVE_LEVEL); + + *FileHandle = 0; + + FileObject = ObCreateObject ( + FileHandle, + DesiredAccess, + ObjectAttributes, + IoFileObjectType + ); + if (NULL == FileObject) + { + return (STATUS_UNSUCCESSFUL); + } + if (CreateOptions & FILE_SYNCHRONOUS_IO_ALERT) + { + //FileObject->Flags = FileObject->Flags | FO_ALERTABLE_IO; + //FileObject->Flags = FileObject->Flags | FO_SYNCHRONOUS_IO; + FileObject->Flags |= ( FO_ALERTABLE_IO + | FO_SYNCHRONOUS_IO + ); + } + if (CreateOptions & FILE_SYNCHRONOUS_IO_NONALERT) + { + //FileObject->Flags |= FileObject->Flags | FO_SYNCHRONOUS_IO; + FileObject->Flags |= FO_SYNCHRONOUS_IO; + } + KeInitializeEvent ( + & Event, + NotificationEvent, + FALSE + ); + DPRINT("FileObject %x\n", FileObject); + DPRINT("FileObject->DeviceObject %x\n", FileObject->DeviceObject); + /* + * Create a new IRP to hand to + * the FS driver: this may fail + * due to resource shortage. + */ + Irp = IoAllocateIrp ( + FileObject->DeviceObject->StackSize, + FALSE + ); + if (NULL == Irp) + { + return (STATUS_UNSUCCESSFUL); + } + /* + * Get the stack location for the new + * IRP and prepare it. + */ + StackLoc = IoGetNextIrpStackLocation (Irp); + StackLoc->MajorFunction = IRP_MJ_CREATE; + StackLoc->MinorFunction = 0; + StackLoc->Flags = 0; + StackLoc->Control = 0; + StackLoc->DeviceObject = FileObject->DeviceObject; + StackLoc->FileObject = FileObject; + StackLoc->Parameters.Create.Options = (CreateOptions & FILE_VALID_OPTION_FLAGS); + StackLoc->Parameters.Create.Options |= (CreateDisposition << 24); + /* + * Now call the driver and + * possibly wait if it can + * not complete the request + * immediately. + */ + Status = IofCallDriver ( + FileObject->DeviceObject, + Irp + ); + if (STATUS_PENDING == Status) + { + KeWaitForSingleObject ( + & Event, + Executive, + KernelMode, + FALSE, + NULL + ); + Status = IoStatusBlock->Status; + } + if (!NT_SUCCESS(Status)) + { + DPRINT("Failing create request with status %x\n", Status); + ZwClose (*FileHandle); + (*FileHandle) = 0; + } + + assert_irql(PASSIVE_LEVEL); + + DPRINT("Finished IoCreateFile() (*FileHandle) %x\n", (*FileHandle)); + + return (Status); } -NTSTATUS IopCreateFile(PVOID ObjectBody, - PVOID Parent, - PWSTR RemainingPath, - POBJECT_ATTRIBUTES ObjectAttributes) -{ - PDEVICE_OBJECT DeviceObject = (PDEVICE_OBJECT)Parent; - PFILE_OBJECT FileObject = (PFILE_OBJECT)ObjectBody; - NTSTATUS Status; - - DPRINT("IopCreateFile(ObjectBody %x, Parent %x, RemainingPath %S)\n", - ObjectBody,Parent,RemainingPath); - - if (DeviceObject == NULL) - { - DPRINT("DeviceObject was NULL\n"); - return(STATUS_SUCCESS); - } - if( BODY_TO_HEADER( Parent )->ObjectType != IoDeviceType ) - { - DPRINT( "Parent is not a device type\n" ); - return STATUS_UNSUCCESSFUL; - } - Status = ObReferenceObjectByPointer(DeviceObject, - STANDARD_RIGHTS_REQUIRED, - IoDeviceType, - UserMode); - if (Status != STATUS_SUCCESS) - { - CHECKPOINT; - return(Status); - } - - DeviceObject = IoGetAttachedDevice(DeviceObject); - - DPRINT("DeviceObject %x\n",DeviceObject); - - if (RemainingPath == NULL) - { - FileObject->Flags = FileObject->Flags | FO_DIRECT_DEVICE_OPEN; - FileObject->FileName.Buffer = ExAllocatePool(NonPagedPool, - (ObjectAttributes->ObjectName->Length+1)*2); - FileObject->FileName.Length = ObjectAttributes->ObjectName->Length; - FileObject->FileName.MaximumLength = - ObjectAttributes->ObjectName->MaximumLength; - RtlCopyUnicodeString(&(FileObject->FileName), - ObjectAttributes->ObjectName); - } - else - { - if (DeviceObject->DeviceType != FILE_DEVICE_FILE_SYSTEM && - DeviceObject->DeviceType != FILE_DEVICE_DISK) - { - DPRINT("Device was wrong type\n"); - return(STATUS_UNSUCCESSFUL); - } - if (!(DeviceObject->Vpb->Flags & VPB_MOUNTED)) - { - DPRINT("Trying to mount storage device\n"); - Status = IoTryToMountStorageDevice(DeviceObject); - DPRINT("Status %x\n", Status); - if (!NT_SUCCESS(Status)) - { - DPRINT("Failed to mount storage device (statux %x)\n", - Status); - return(Status); - } - DeviceObject = IoGetAttachedDevice(DeviceObject); - } - RtlInitUnicodeString(&(FileObject->FileName),wcsdup(RemainingPath)); - } - DPRINT("FileObject->FileName.Buffer %S\n",FileObject->FileName.Buffer); - FileObject->DeviceObject = DeviceObject; - DPRINT("FileObject %x DeviceObject %x\n", FileObject, DeviceObject); - FileObject->Vpb = DeviceObject->Vpb; - FileObject->Type = InternalFileType; - - return(STATUS_SUCCESS); -} - -PFILE_OBJECT IoCreateStreamFileObject(PFILE_OBJECT FileObject, - PDEVICE_OBJECT DeviceObject) -{ - HANDLE FileHandle; - PFILE_OBJECT CreatedFileObject; - - DbgPrint("IoCreateStreamFileObject(FileObject %x, DeviceObject %x)\n", - FileObject, DeviceObject); - - assert_irql(PASSIVE_LEVEL); - - CreatedFileObject = ObCreateObject(&FileHandle, - STANDARD_RIGHTS_REQUIRED, - NULL, - IoFileType); - if (CreatedFileObject == NULL) - { - return(NULL); - } - - if (FileObject != NULL) - { - DeviceObject = FileObject->DeviceObject; - } - DeviceObject = IoGetAttachedDevice(DeviceObject); - CreatedFileObject->DeviceObject = DeviceObject; - CreatedFileObject->Vpb = DeviceObject->Vpb; - CreatedFileObject->Type = InternalFileType; - CreatedFileObject->Flags = CreatedFileObject->Flags | FO_DIRECT_DEVICE_OPEN; - - ZwClose(FileHandle); - - return(CreatedFileObject); -} - +/********************************************************************** + * NAME EXPORTED + * NtCreateFile@44 + * + * DESCRIPTION + * Entry point to call IoCreateFile with + * default parameters. + * + * ARGUMENTS + * See IoCreateFile. + * + * RETURN VALUE + * See IoCreateFile. + * + * REVISIONS + * 2000-03-25 (ea) + * Code originally in NtCreateFile moved in IoCreateFile. + */ NTSTATUS STDCALL NtCreateFile ( @@ -179,134 +454,88 @@ NtCreateFile ( PVOID EaBuffer, ULONG EaLength ) -/* - * FUNCTION: Either causes a new file or directory to be created, or it opens - * an existing file, device, directory or volume, giving the caller a handle - * for the file object. This handle can be used by subsequent calls to - * manipulate data within the file or the file object's state of attributes. - * ARGUMENTS: - * FileHandle (OUT) = Points to a variable which receives the file - * handle on return - * DesiredAccess = Desired access to the file - * ObjectAttributes = Structure describing the file - * IoStatusBlock (OUT) = Receives information about the operation on - * return - * AllocationSize = Initial size of the file in bytes - * FileAttributes = Attributes to create the file with - * ShareAccess = Type of shared access the caller would like to the file - * CreateDisposition = Specifies what to do, depending on whether the - * file already exists - * CreateOptions = Options for creating a new file - * EaBuffer = Undocumented - * EaLength = Undocumented - * RETURNS: Status - */ { - PFILE_OBJECT FileObject; - NTSTATUS Status; - PIRP Irp; - KEVENT Event; - PIO_STACK_LOCATION StackLoc; - - DPRINT1("NtCreateFile(FileHandle %x, DesiredAccess %x, " - "ObjectAttributes %x ObjectAttributes->ObjectName->Buffer %S)\n", - FileHandle,DesiredAccess,ObjectAttributes, - ObjectAttributes->ObjectName->Buffer); - - assert_irql(PASSIVE_LEVEL); - - *FileHandle=0; + return IoCreateFile ( + FileHandle, + DesiredAccess, + ObjectAttributes, + IoStatusBlock, + AllocateSize, + FileAttributes, + ShareAccess, + CreateDisposition, + CreateOptions, + EaBuffer, + EaLength, + 0, /* CreateFileType */ + NULL, /* ExtraCreateParameters */ + 0 /* Options */ + ); - FileObject = ObCreateObject(FileHandle, - DesiredAccess, - ObjectAttributes, - IoFileType); - if (FileObject == NULL) - { - return(STATUS_UNSUCCESSFUL); - } - - if (CreateOptions & FILE_SYNCHRONOUS_IO_ALERT) - { - FileObject->Flags = FileObject->Flags | FO_ALERTABLE_IO; - FileObject->Flags = FileObject->Flags | FO_SYNCHRONOUS_IO; - } - if (CreateOptions & FILE_SYNCHRONOUS_IO_NONALERT) - { - FileObject->Flags = FileObject->Flags | FO_SYNCHRONOUS_IO; - } - - KeInitializeEvent(&Event, NotificationEvent, FALSE); - - DPRINT("FileObject %x\n", FileObject); - DPRINT("FileObject->DeviceObject %x\n", FileObject->DeviceObject); - Irp = IoAllocateIrp(FileObject->DeviceObject->StackSize, FALSE); - if (Irp==NULL) - { - return(STATUS_UNSUCCESSFUL); - } - - StackLoc = IoGetNextIrpStackLocation(Irp); - StackLoc->MajorFunction = IRP_MJ_CREATE; - StackLoc->MinorFunction = 0; - StackLoc->Flags = 0; - StackLoc->Control = 0; - StackLoc->DeviceObject = FileObject->DeviceObject; - StackLoc->FileObject = FileObject; - StackLoc->Parameters.Create.Options = CreateOptions&FILE_VALID_OPTION_FLAGS; - StackLoc->Parameters.Create.Options |= CreateDisposition<<24; - - Status = IoCallDriver(FileObject->DeviceObject,Irp); - if (Status == STATUS_PENDING) - { - KeWaitForSingleObject(&Event,Executive,KernelMode,FALSE,NULL); - Status = IoStatusBlock->Status; - } - - if (!NT_SUCCESS(Status)) - { - DPRINT("Failing create request with status %x\n",Status); - ZwClose(*FileHandle); - (*FileHandle) = 0; - } - - assert_irql(PASSIVE_LEVEL); - DPRINT("Finished NtCreateFile() (*FileHandle) %x\n",(*FileHandle)); - return(Status); } -NTSTATUS STDCALL NtOpenFile(PHANDLE FileHandle, - ACCESS_MASK DesiredAccess, - POBJECT_ATTRIBUTES ObjectAttributes, - PIO_STATUS_BLOCK IoStatusBlock, - ULONG ShareAccess, - ULONG OpenOptions) -/* - * FUNCTION: Opens a file (simpler than ZwCreateFile) - * ARGUMENTS: - * FileHandle (OUT) = Variable that receives the file handle on return - * DesiredAccess = Access desired by the caller to the file - * ObjectAttributes = Structue describing the file to be opened - * IoStatusBlock (OUT) = Receives details about the result of the - * operation - * ShareAccess = Type of shared access the caller requires - * OpenOptions = Options for the file open - * RETURNS: Status - * NOTE: Undocumented +/********************************************************************** + * NAME EXPORTED + * NtOpenFile@24 + * + * DESCRIPTION + * Opens a file (simpler than NtCreateFile). + * + * ARGUMENTS + * FileHandle (OUT) + * Variable that receives the file handle on return; + * + * DesiredAccess + * Access desired by the caller to the file; + * + * ObjectAttributes + * Structue describing the file to be opened; + * + * IoStatusBlock (OUT) + * Receives details about the result of the + * operation; + * + * ShareAccess + * Type of shared access the caller requires; + * + * OpenOptions + * Options for the file open. + * + * RETURN VALUE + * Status. + * + * NOTE + * Undocumented. */ +NTSTATUS +STDCALL +NtOpenFile ( + PHANDLE FileHandle, + ACCESS_MASK DesiredAccess, + POBJECT_ATTRIBUTES ObjectAttributes, + PIO_STATUS_BLOCK IoStatusBlock, + ULONG ShareAccess, + ULONG OpenOptions + ) { - return(ZwCreateFile(FileHandle, - DesiredAccess, - ObjectAttributes, - IoStatusBlock, - NULL, - 0, - ShareAccess, - FILE_OPEN, - OpenOptions, - NULL, - 0)); + return IoCreateFile ( + FileHandle, + DesiredAccess, + ObjectAttributes, + IoStatusBlock, + NULL, + 0, + ShareAccess, + FILE_OPEN, + OpenOptions, + NULL, + 0, + 0, /* CreateFileType */ + NULL, /* ExtraCreateParameters */ + 0 /* Options */ + ); } +/* EOF */ diff --git a/reactos/ntoskrnl/io/device.c b/reactos/ntoskrnl/io/device.c index 61ebb55b5cc..b476ef5b3c2 100644 --- a/reactos/ntoskrnl/io/device.c +++ b/reactos/ntoskrnl/io/device.c @@ -1,4 +1,4 @@ -/* $Id: device.c,v 1.15 2000/03/05 19:17:42 ea Exp $ +/* $Id: device.c,v 1.16 2000/03/26 19:38:22 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -22,6 +22,7 @@ #define NDEBUG #include + /* FUNCTIONS ***************************************************************/ @@ -54,14 +55,18 @@ NTSTATUS STDCALL NtLoadDriver (PUNICODE_STRING DriverServiceName) } -NTSTATUS IoAttachDeviceByPointer(PDEVICE_OBJECT SourceDevice, +NTSTATUS +STDCALL +IoAttachDeviceByPointer(PDEVICE_OBJECT SourceDevice, PDEVICE_OBJECT TargetDevice) { UNIMPLEMENTED; } -VOID IoDeleteDevice(PDEVICE_OBJECT DeviceObject) +VOID +STDCALL +IoDeleteDevice(PDEVICE_OBJECT DeviceObject) { UNIMPLEMENTED; } @@ -77,7 +82,9 @@ IoGetRelatedDeviceObject ( } -NTSTATUS IoGetDeviceObjectPointer(PUNICODE_STRING ObjectName, +NTSTATUS +STDCALL +IoGetDeviceObjectPointer(PUNICODE_STRING ObjectName, ACCESS_MASK DesiredAccess, PFILE_OBJECT* FileObject, PDEVICE_OBJECT* DeviceObject) @@ -85,12 +92,16 @@ NTSTATUS IoGetDeviceObjectPointer(PUNICODE_STRING ObjectName, UNIMPLEMENTED; } -VOID IoDetachDevice(PDEVICE_OBJECT TargetDevice) +VOID +STDCALL +IoDetachDevice(PDEVICE_OBJECT TargetDevice) { UNIMPLEMENTED; } -PDEVICE_OBJECT IoGetAttachedDevice(PDEVICE_OBJECT DeviceObject) +PDEVICE_OBJECT +STDCALL +IoGetAttachedDevice(PDEVICE_OBJECT DeviceObject) { PDEVICE_OBJECT Current = DeviceObject; @@ -106,7 +117,9 @@ PDEVICE_OBJECT IoGetAttachedDevice(PDEVICE_OBJECT DeviceObject) return(Current); } -PDEVICE_OBJECT IoAttachDeviceToDeviceStack(PDEVICE_OBJECT SourceDevice, +PDEVICE_OBJECT +STDCALL +IoAttachDeviceToDeviceStack(PDEVICE_OBJECT SourceDevice, PDEVICE_OBJECT TargetDevice) { PDEVICE_OBJECT AttachedDevice; @@ -122,7 +135,9 @@ PDEVICE_OBJECT IoAttachDeviceToDeviceStack(PDEVICE_OBJECT SourceDevice, return(AttachedDevice); } -VOID IoRegisterDriverReinitialization(PDRIVER_OBJECT DriverObject, +VOID +STDCALL +IoRegisterDriverReinitialization(PDRIVER_OBJECT DriverObject, PDRIVER_REINITIALIZE ReinitRoutine, PVOID Context) { @@ -174,7 +189,9 @@ NTSTATUS IoInitializeDriver(PDRIVER_INITIALIZE DriverEntry) return(Status); } -NTSTATUS IoAttachDevice(PDEVICE_OBJECT SourceDevice, +NTSTATUS +STDCALL +IoAttachDevice(PDEVICE_OBJECT SourceDevice, PUNICODE_STRING TargetDevice, PDEVICE_OBJECT* AttachedDevice) /* @@ -210,7 +227,9 @@ NTSTATUS IopCreateDevice(PVOID ObjectBody, } -NTSTATUS IoCreateDevice(PDRIVER_OBJECT DriverObject, +NTSTATUS +STDCALL +IoCreateDevice(PDRIVER_OBJECT DriverObject, ULONG DeviceExtensionSize, PUNICODE_STRING DeviceName, DEVICE_TYPE DeviceType, @@ -258,14 +277,14 @@ NTSTATUS IoCreateDevice(PDRIVER_OBJECT DriverObject, CreatedDeviceObject = ObCreateObject(&DeviceHandle, 0, &ObjectAttributes, - IoDeviceType); + IoDeviceObjectType); } else { CreatedDeviceObject = ObCreateObject(&DeviceHandle, 0, NULL, - IoDeviceType); + IoDeviceObjectType); } *DeviceObject = NULL; @@ -316,4 +335,41 @@ NTSTATUS IoCreateDevice(PDRIVER_OBJECT DriverObject, } +NTSTATUS +STDCALL +IoOpenDeviceInstanceKey ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4 + ) +{ + UNIMPLEMENTED; + return (STATUS_NOT_IMPLEMENTED); +} + + +DWORD +STDCALL +IoQueryDeviceEnumInfo ( + DWORD Unknown0, + DWORD Unknown1 + ) +{ + UNIMPLEMENTED; + return 0; +} + + +VOID +STDCALL +IoSetDeviceToVerify ( + DWORD Unknown0, + DWORD Unknown1 + ) +{ + UNIMPLEMENTED; +} + /* EOF */ diff --git a/reactos/ntoskrnl/io/dir.c b/reactos/ntoskrnl/io/dir.c index 9c242ce6c2e..92035728942 100644 --- a/reactos/ntoskrnl/io/dir.c +++ b/reactos/ntoskrnl/io/dir.c @@ -1,4 +1,5 @@ -/* +/* $Id: dir.c,v 1.10 2000/03/26 19:38:22 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/dir.c @@ -91,7 +92,7 @@ NtQueryDirectoryFile( Status = ObReferenceObjectByHandle(FileHandle, FILE_LIST_DIRECTORY, - IoFileType, + IoFileObjectType, UserMode, (PVOID *)&FileObject, NULL); @@ -163,3 +164,6 @@ NTSTATUS STDCALL NtQueryOleDirectoryFile(VOID) { UNIMPLEMENTED; } + + +/* EOF */ diff --git a/reactos/ntoskrnl/io/errlog.c b/reactos/ntoskrnl/io/errlog.c index cd1fab1bd1a..b6894ac0b48 100644 --- a/reactos/ntoskrnl/io/errlog.c +++ b/reactos/ntoskrnl/io/errlog.c @@ -1,4 +1,5 @@ -/* +/* $Id: errlog.c,v 1.4 2000/03/26 19:38:22 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/errlog.c @@ -198,12 +199,12 @@ NTSTATUS IoInitErrorLog(VOID) } -PVOID IoAllocateErrorLogEntry(PVOID IoObject, UCHAR EntrySize) +PVOID STDCALL IoAllocateErrorLogEntry(PVOID IoObject, UCHAR EntrySize) { UNIMPLEMENTED; } -VOID IoWriteErrorLogEntry(PVOID ElEntry) +VOID STDCALL IoWriteErrorLogEntry(PVOID ElEntry) { KIRQL oldIrql; PIO_ERROR_LOG_MESSAGE Message; @@ -223,3 +224,5 @@ VOID IoWriteErrorLogEntry(PVOID ElEntry) KeReleaseSpinLock(&ErrorLogListLock, oldIrql); } + +/* EOF */ diff --git a/reactos/ntoskrnl/io/error.c b/reactos/ntoskrnl/io/error.c index 9d302b52f13..ce9cb4e74c4 100644 --- a/reactos/ntoskrnl/io/error.c +++ b/reactos/ntoskrnl/io/error.c @@ -1,4 +1,5 @@ -/* +/* $Id: error.c,v 1.2 2000/03/26 19:38:22 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: kernel/base/bug.c @@ -32,12 +33,12 @@ BOOLEAN IoIsErrorUserInduced(NTSTATUS Status) return(FALSE); } -VOID IoSetHardErrorOrVerifyDevice(PIRP Irp, PDEVICE_OBJECT DeviceObject) +VOID STDCALL IoSetHardErrorOrVerifyDevice(PIRP Irp, PDEVICE_OBJECT DeviceObject) { UNIMPLEMENTED; } -VOID IoRaiseHardError(PIRP Irp, PVPB Vpb, PDEVICE_OBJECT RealDeviceObject) +VOID STDCALL IoRaiseHardError(PIRP Irp, PVPB Vpb, PDEVICE_OBJECT RealDeviceObject) { UNIMPLEMENTED; } @@ -47,9 +48,12 @@ BOOLEAN IoIsTotalDeviceFailure(NTSTATUS Status) UNIMPLEMENTED; } -BOOLEAN IoRaiseInformationalHardError(NTSTATUS ErrorStatus, +BOOLEAN STDCALL IoRaiseInformationalHardError(NTSTATUS ErrorStatus, PUNICODE_STRING String, PKTHREAD Thread) { UNIMPLEMENTED; } + + +/* EOF */ diff --git a/reactos/ntoskrnl/io/event.c b/reactos/ntoskrnl/io/event.c index cf158970e58..de5d0fbdfcc 100644 --- a/reactos/ntoskrnl/io/event.c +++ b/reactos/ntoskrnl/io/event.c @@ -1,4 +1,5 @@ -/* +/* $Id: event.c,v 1.2 2000/03/26 19:38:22 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/event.c @@ -16,15 +17,21 @@ /* FUNCTIONS *****************************************************************/ -PKEVENT IoCreateNotificationEvent(PUNICODE_STRING EventName, +PKEVENT +STDCALL +IoCreateNotificationEvent(PUNICODE_STRING EventName, PHANDLE EventHandle) { UNIMPLEMENTED; } -PKEVENT IoCreateSynchronizationEvent(PUNICODE_STRING EventName, +PKEVENT +STDCALL +IoCreateSynchronizationEvent(PUNICODE_STRING EventName, PHANDLE EventHandle) { UNIMPLEMENTED; } + +/* EOF */ diff --git a/reactos/ntoskrnl/io/file.c b/reactos/ntoskrnl/io/file.c index 770922d2e2b..d632cba6f89 100644 --- a/reactos/ntoskrnl/io/file.c +++ b/reactos/ntoskrnl/io/file.c @@ -1,4 +1,4 @@ -/* $Id: file.c,v 1.9 1999/08/29 06:59:06 ea Exp $ +/* $Id: file.c,v 1.10 2000/03/26 19:38:22 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -19,6 +19,7 @@ /* FUNCTIONS *****************************************************************/ + NTSTATUS STDCALL NtQueryInformationFile ( @@ -45,7 +46,7 @@ NtQueryInformationFile ( Status = ObReferenceObjectByHandle(FileHandle, FILE_READ_ATTRIBUTES, - IoFileType, + IoFileObjectType, UserMode, (PVOID *)&FileObject, NULL); @@ -91,6 +92,21 @@ NtQueryInformationFile ( } +NTSTATUS +STDCALL +IoQueryFileInformation ( + IN PFILE_OBJECT FileObject, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN ULONG Length, + OUT PVOID FileInformation, + OUT PULONG ReturnedLength + ) +{ + UNIMPLEMENTED; + return (STATUS_NOT_IMPLEMENTED); +} + + NTSTATUS STDCALL NtSetInformationFile ( @@ -120,7 +136,7 @@ NtSetInformationFile ( Status = ObReferenceObjectByHandle( FileHandle, FILE_WRITE_ATTRIBUTES, - IoFileType, + IoFileObjectType, UserMode, (PVOID *) & FileObject, NULL @@ -189,6 +205,7 @@ NtSetInformationFile ( PGENERIC_MAPPING +STDCALL IoGetFileObjectGenericMapping(VOID) { UNIMPLEMENTED; diff --git a/reactos/ntoskrnl/io/fs.c b/reactos/ntoskrnl/io/fs.c index 1da59e13a7b..0d5ae9b58b7 100644 --- a/reactos/ntoskrnl/io/fs.c +++ b/reactos/ntoskrnl/io/fs.c @@ -1,4 +1,4 @@ -/* $Id: fs.c,v 1.11 2000/03/06 01:02:30 ea Exp $ +/* $Id: fs.c,v 1.12 2000/03/26 19:38:24 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -234,7 +234,9 @@ NTSTATUS IoTryToMountStorageDevice(PDEVICE_OBJECT DeviceObject) return(STATUS_UNRECOGNIZED_VOLUME); } -VOID IoRegisterFileSystem(PDEVICE_OBJECT DeviceObject) +VOID +STDCALL +IoRegisterFileSystem(PDEVICE_OBJECT DeviceObject) { FILE_SYSTEM_OBJECT* fs; @@ -248,7 +250,9 @@ VOID IoRegisterFileSystem(PDEVICE_OBJECT DeviceObject) &FileSystemListLock); } -VOID IoUnregisterFileSystem(PDEVICE_OBJECT DeviceObject) +VOID +STDCALL +IoUnregisterFileSystem(PDEVICE_OBJECT DeviceObject) { KIRQL oldlvl; PLIST_ENTRY current_entry; @@ -334,4 +338,27 @@ IoGetBaseFileSystemDeviceObject ( } +NTSTATUS +STDCALL +IoRegisterFsRegistrationChange ( + IN PDRIVER_OBJECT DriverObject, + IN PFSDNOTIFICATIONPROC FSDNotificationProc + ) +{ + UNIMPLEMENTED; + return (STATUS_NOT_IMPLEMENTED); +} + + +VOID +STDCALL +IoUnregisterFsRegistrationChange ( + DWORD Unknown0, + DWORD Unknown1 + ) +{ + UNIMPLEMENTED; +} + + /* EOF */ diff --git a/reactos/ntoskrnl/io/iomgr.c b/reactos/ntoskrnl/io/iomgr.c index 3110117fcb2..51f270a791e 100644 --- a/reactos/ntoskrnl/io/iomgr.c +++ b/reactos/ntoskrnl/io/iomgr.c @@ -1,4 +1,5 @@ -/* +/* $Id: iomgr.c,v 1.9 2000/03/26 19:38:25 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/iomgr.c @@ -19,9 +20,14 @@ /* GLOBALS *******************************************************************/ -POBJECT_TYPE IoDeviceType = NULL; -POBJECT_TYPE IoFileType = NULL; - +/* DATA ********************************************************************/ + + +POBJECT_TYPE EXPORTED IoDeviceObjectType = NULL; +POBJECT_TYPE EXPORTED IoFileObjectType = NULL; +ULONG EXPORTED IoWriteTransferCount = 0; /* FIXME: unknown type */ +ULONG EXPORTED IoStatisticsLock = 0; /* FIXME: unknown type */ + /* FUNCTIONS ****************************************************************/ VOID IopCloseFile(PVOID ObjectBody, ULONG HandleCount) @@ -40,7 +46,7 @@ VOID IopCloseFile(PVOID ObjectBody, ULONG HandleCount) ObReferenceObjectByPointer(FileObject, STANDARD_RIGHTS_REQUIRED, - IoFileType, + IoFileObjectType, UserMode); Irp = IoBuildSynchronousFsdRequest(IRP_MJ_CLEANUP, @@ -67,7 +73,7 @@ VOID IopDeleteFile(PVOID ObjectBody) ObReferenceObjectByPointer(ObjectBody, STANDARD_RIGHTS_REQUIRED, - IoFileType, + IoFileObjectType, UserMode); Irp = IoBuildSynchronousFsdRequest(IRP_MJ_CLOSE, @@ -93,72 +99,137 @@ VOID IoShutdownIoManager(VOID) { } -VOID IoInit(VOID) + +VOID IoInit (VOID) { - OBJECT_ATTRIBUTES attr; - HANDLE handle; - UNICODE_STRING UnicodeString; - ANSI_STRING AnsiString; - - /* - * Register iomgr types - */ - IoDeviceType = ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE)); - - IoDeviceType->TotalObjects = 0; - IoDeviceType->TotalHandles = 0; - IoDeviceType->MaxObjects = ULONG_MAX; - IoDeviceType->MaxHandles = ULONG_MAX; - IoDeviceType->PagedPoolCharge = 0; - IoDeviceType->NonpagedPoolCharge = sizeof(DEVICE_OBJECT); - IoDeviceType->Dump = NULL; - IoDeviceType->Open = NULL; - IoDeviceType->Close = NULL; - IoDeviceType->Delete = NULL; - IoDeviceType->Parse = NULL; - IoDeviceType->Security = NULL; - IoDeviceType->QueryName = NULL; - IoDeviceType->OkayToClose = NULL; - IoDeviceType->Create = IopCreateDevice; - - RtlInitAnsiString(&AnsiString,"Device"); - RtlAnsiStringToUnicodeString(&IoDeviceType->TypeName,&AnsiString,TRUE); - - IoFileType = ExAllocatePool(NonPagedPool,sizeof(OBJECT_TYPE)); - - IoFileType->TotalObjects = 0; - IoFileType->TotalHandles = 0; - IoFileType->MaxObjects = ULONG_MAX; - IoFileType->MaxHandles = ULONG_MAX; - IoFileType->PagedPoolCharge = 0; - IoFileType->NonpagedPoolCharge = sizeof(FILE_OBJECT); - IoFileType->Dump = NULL; - IoFileType->Open = NULL; - IoFileType->Close = IopCloseFile; - IoFileType->Delete = IopDeleteFile; - IoFileType->Parse = NULL; - IoFileType->Security = NULL; - IoFileType->QueryName = NULL; - IoFileType->OkayToClose = NULL; - IoFileType->Create = IopCreateFile; - - RtlInitAnsiString(&AnsiString,"File"); - RtlAnsiStringToUnicodeString(&IoFileType->TypeName,&AnsiString,TRUE); + OBJECT_ATTRIBUTES attr; + HANDLE handle; + UNICODE_STRING UnicodeString; + ANSI_STRING AnsiString; - /* - * Create the device directory - */ - RtlInitAnsiString(&AnsiString,"\\Device"); - RtlAnsiStringToUnicodeString(&UnicodeString,&AnsiString,TRUE); - InitializeObjectAttributes(&attr,&UnicodeString,0,NULL,NULL); - ZwCreateDirectoryObject(&handle,0,&attr); + /* + * Register iomgr types: DeviceObjectType + */ + IoDeviceObjectType = ExAllocatePool ( + NonPagedPool, + sizeof (OBJECT_TYPE) + ); - RtlInitAnsiString(&AnsiString,"\\??"); - RtlAnsiStringToUnicodeString(&UnicodeString,&AnsiString,TRUE); - InitializeObjectAttributes(&attr,&UnicodeString,0,NULL,NULL); - ZwCreateDirectoryObject(&handle,0,&attr); + IoDeviceObjectType->TotalObjects = 0; + IoDeviceObjectType->TotalHandles = 0; + IoDeviceObjectType->MaxObjects = ULONG_MAX; + IoDeviceObjectType->MaxHandles = ULONG_MAX; + IoDeviceObjectType->PagedPoolCharge = 0; + IoDeviceObjectType->NonpagedPoolCharge = sizeof (DEVICE_OBJECT); + IoDeviceObjectType->Dump = NULL; + IoDeviceObjectType->Open = NULL; + IoDeviceObjectType->Close = NULL; + IoDeviceObjectType->Delete = NULL; + IoDeviceObjectType->Parse = NULL; + IoDeviceObjectType->Security = NULL; + IoDeviceObjectType->QueryName = NULL; + IoDeviceObjectType->OkayToClose = NULL; + IoDeviceObjectType->Create = IopCreateDevice; + + RtlInitAnsiString ( + & AnsiString, + "Device" + ); + RtlAnsiStringToUnicodeString ( + & IoDeviceObjectType->TypeName, + & AnsiString, + TRUE + ); + /* + * Register iomgr types: FileObjectType + * (alias DriverObjectType) + */ + IoFileObjectType = ExAllocatePool ( + NonPagedPool, + sizeof (OBJECT_TYPE) + ); + + IoFileObjectType->TotalObjects = 0; + IoFileObjectType->TotalHandles = 0; + IoFileObjectType->MaxObjects = ULONG_MAX; + IoFileObjectType->MaxHandles = ULONG_MAX; + IoFileObjectType->PagedPoolCharge = 0; + IoFileObjectType->NonpagedPoolCharge = sizeof(FILE_OBJECT); + IoFileObjectType->Dump = NULL; + IoFileObjectType->Open = NULL; + IoFileObjectType->Close = IopCloseFile; + IoFileObjectType->Delete = IopDeleteFile; + IoFileObjectType->Parse = NULL; + IoFileObjectType->Security = NULL; + IoFileObjectType->QueryName = NULL; + IoFileObjectType->OkayToClose = NULL; + IoFileObjectType->Create = IopCreateFile; + + RtlInitAnsiString ( + & AnsiString, + "File" + ); + RtlAnsiStringToUnicodeString ( + & IoFileObjectType->TypeName, + & AnsiString, + TRUE + ); - IoInitCancelHandling(); - IoInitSymbolicLinkImplementation(); - IoInitFileSystemImplementation(); + /* + * Create the device directory + */ + RtlInitAnsiString ( + & AnsiString, + "\\Device" + ); + RtlAnsiStringToUnicodeString ( + & UnicodeString, + & AnsiString, + TRUE + ); + InitializeObjectAttributes ( + & attr, + & UnicodeString, + 0, + NULL, + NULL + ); + ZwCreateDirectoryObject ( + & handle, + 0, + & attr + ); + /* + * Create the \?? directory + */ + RtlInitAnsiString ( + & AnsiString, + "\\??" + ); + RtlAnsiStringToUnicodeString ( + & UnicodeString, + & AnsiString, + TRUE + ); + InitializeObjectAttributes ( + & attr, + & UnicodeString, + 0, + NULL, + NULL + ); + ZwCreateDirectoryObject ( + & handle, + 0, + & attr + ); + /* + * Initialize remaining subsubsystem + */ + IoInitCancelHandling (); + IoInitSymbolicLinkImplementation (); + IoInitFileSystemImplementation (); } + + +/* EOF */ diff --git a/reactos/ntoskrnl/io/irp.c b/reactos/ntoskrnl/io/irp.c index ff02e89087e..b2394304915 100644 --- a/reactos/ntoskrnl/io/irp.c +++ b/reactos/ntoskrnl/io/irp.c @@ -1,4 +1,4 @@ -/* $Id: irp.c,v 1.26 2000/03/06 01:02:30 ea Exp $ +/* $Id: irp.c,v 1.27 2000/03/26 19:38:25 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -458,4 +458,45 @@ IoIsOperationSynchronous ( } +VOID +STDCALL +IoEnqueueIrp ( + PIRP Irp + ) +{ + UNIMPLEMENTED; +} + + +VOID +STDCALL +IoSetTopLevelIrp ( + IN PIRP Irp + ) +{ + UNIMPLEMENTED; +} + + +PIRP +STDCALL +IoGetTopLevelIrp ( + VOID + ) +{ + UNIMPLEMENTED; + return (NULL); +} + + +VOID +STDCALL +IoQueueThreadIrp ( + PVOID Unknown0 + ) +{ + UNIMPLEMENTED; +} + + /* EOF */ diff --git a/reactos/ntoskrnl/io/mdl.c b/reactos/ntoskrnl/io/mdl.c index db98c54ab0c..8087ff2034c 100644 --- a/reactos/ntoskrnl/io/mdl.c +++ b/reactos/ntoskrnl/io/mdl.c @@ -1,4 +1,4 @@ -/* $Id: mdl.c,v 1.4 2000/03/05 19:17:43 ea Exp $ +/* $Id: mdl.c,v 1.5 2000/03/26 19:38:25 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -18,7 +18,9 @@ /* FUNCTIONS *****************************************************************/ -PMDL IoAllocateMdl(PVOID VirtualAddress, +PMDL +STDCALL +IoAllocateMdl(PVOID VirtualAddress, ULONG Length, BOOLEAN SecondaryBuffer, BOOLEAN ChargeQuota, @@ -44,7 +46,9 @@ PMDL IoAllocateMdl(PVOID VirtualAddress, return(Mdl); } -VOID IoBuildPartialMdl(PMDL SourceMdl, +VOID +STDCALL +IoBuildPartialMdl(PMDL SourceMdl, PMDL TargetMdl, PVOID VirtualAddress, ULONG Length) @@ -61,7 +65,9 @@ VOID IoBuildPartialMdl(PMDL SourceMdl, } } -VOID IoFreeMdl(PMDL Mdl) +VOID +STDCALL +IoFreeMdl(PMDL Mdl) { MmUnmapLockedPages(MmGetSystemAddressForMdl(Mdl),Mdl); MmUnlockPages(Mdl); diff --git a/reactos/ntoskrnl/io/page.c b/reactos/ntoskrnl/io/page.c index 4fa197d79a0..624100035a5 100644 --- a/reactos/ntoskrnl/io/page.c +++ b/reactos/ntoskrnl/io/page.c @@ -1,4 +1,5 @@ -/* +/* $Id: page.c,v 1.6 2000/03/26 19:38:26 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/ke/bug.c @@ -18,10 +19,15 @@ /* FUNCTIONS *****************************************************************/ -NTSTATUS 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, + DWORD Unknown4 + ) { PIRP Irp; KEVENT Event; @@ -33,7 +39,7 @@ NTSTATUS IoPageRead(PFILE_OBJECT FileObject, ObReferenceObjectByPointer(FileObject, STANDARD_RIGHTS_REQUIRED, - IoFileType, + IoFileObjectType, UserMode); KeInitializeEvent(&Event,NotificationEvent,FALSE); @@ -64,3 +70,21 @@ NTSTATUS IoPageRead(PFILE_OBJECT FileObject, } return(Status); } + + +NTSTATUS +STDCALL +IoSynchronousPageWrite ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4 + ) +{ + UNIMPLEMENTED; + return (STATUS_NOT_IMPLEMENTED); +} + + +/* EOF */ diff --git a/reactos/ntoskrnl/io/process.c b/reactos/ntoskrnl/io/process.c index d4915ab388a..8a7a4837596 100644 --- a/reactos/ntoskrnl/io/process.c +++ b/reactos/ntoskrnl/io/process.c @@ -1,7 +1,8 @@ -/* +/* $Id: process.c,v 1.2 2000/03/26 19:38:26 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel - * FILE: kernel/iomgr/process.c + * FILE: ntoskrnl/io/process.c * PURPOSE: Process functions that, bizarrely, are in the iomgr * PROGRAMMER: David Welch (welch@mcmail.com) * UPDATE HISTORY: @@ -16,12 +17,68 @@ /* FUNCTIONS *****************************************************************/ -struct _EPROCESS* IoGetCurrentProcess() +PEPROCESS +STDCALL +IoGetCurrentProcess ( + VOID + ) { - return(PsGetCurrentProcess()); + return (PsGetCurrentProcess()); } -PVOID IoGetInitialStack() + +PVOID +STDCALL +IoGetInitialStack ( + VOID + ) { UNIMPLEMENTED; } + + +VOID +STDCALL +IoGetStackLimits ( + PVOID * Minimum, /* guess */ + PVOID * Maximum /* guess */ + ) +{ + /* FIXME: */ + *Minimum = NULL; + *Maximum = NULL; +} + + +PEPROCESS +STDCALL +IoThreadToProcess ( + IN PETHREAD Thread + ) +{ + UNIMPLEMENTED; + return (NULL); +} + + +PEPROCESS +STDCALL +IoGetRequestorProcess ( + IN PIRP Irp + ) +{ + return (Irp->Tail.Overlay.Thread->ThreadsProcess); +} + + +VOID +STDCALL +IoSetThreadHardErrorMode ( + IN PVOID Unknown0 + ) +{ + UNIMPLEMENTED; +} + + +/* EOF */ diff --git a/reactos/ntoskrnl/io/queue.c b/reactos/ntoskrnl/io/queue.c index 9daf6587d0b..067c4ab5f9d 100644 --- a/reactos/ntoskrnl/io/queue.c +++ b/reactos/ntoskrnl/io/queue.c @@ -1,4 +1,5 @@ -/* +/* $Id: queue.c,v 1.10 2000/03/26 19:38:26 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/queue.c @@ -15,7 +16,9 @@ /* FUNCTIONS *****************************************************************/ -VOID IoStartNextPacketByKey(PDEVICE_OBJECT DeviceObject, +VOID +STDCALL +IoStartNextPacketByKey(PDEVICE_OBJECT DeviceObject, BOOLEAN Cancelable, ULONG Key) /* @@ -50,7 +53,9 @@ VOID IoStartNextPacketByKey(PDEVICE_OBJECT DeviceObject, } } -VOID IoStartNextPacket(PDEVICE_OBJECT DeviceObject, BOOLEAN Cancelable) +VOID +STDCALL +IoStartNextPacket(PDEVICE_OBJECT DeviceObject, BOOLEAN Cancelable) /* * FUNCTION: Removes the next packet from the device's queue and calls * the driver's StartIO @@ -79,7 +84,9 @@ VOID IoStartNextPacket(PDEVICE_OBJECT DeviceObject, BOOLEAN Cancelable) } } -VOID IoStartPacket(PDEVICE_OBJECT DeviceObject, +VOID +STDCALL +IoStartPacket(PDEVICE_OBJECT DeviceObject, PIRP Irp, PULONG Key, PDRIVER_CANCEL CancelFunction) /* * FUNCTION: Either call the device's StartIO routine with the packet or, @@ -128,3 +135,4 @@ VOID IoStartPacket(PDEVICE_OBJECT DeviceObject, } +/* EOF */ diff --git a/reactos/ntoskrnl/io/resource.c b/reactos/ntoskrnl/io/resource.c index e012b5e043e..c3e03bf6033 100644 --- a/reactos/ntoskrnl/io/resource.c +++ b/reactos/ntoskrnl/io/resource.c @@ -1,4 +1,5 @@ -/* +/* $Id: resource.c,v 1.3 2000/03/26 19:38:26 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/resource.c @@ -21,12 +22,16 @@ static CONFIGURATION_INFORMATION SystemConfigurationInformation = /* FUNCTIONS *****************************************************************/ -PCONFIGURATION_INFORMATION IoGetConfigurationInformation(VOID) +PCONFIGURATION_INFORMATION +STDCALL +IoGetConfigurationInformation(VOID) { return(&SystemConfigurationInformation); } -NTSTATUS IoReportResourceUsage(PUNICODE_STRING DriverClassName, +NTSTATUS +STDCALL +IoReportResourceUsage(PUNICODE_STRING DriverClassName, PDRIVER_OBJECT DriverObject, PCM_RESOURCE_LIST DriverList, ULONG DriverListSize, @@ -39,7 +44,9 @@ NTSTATUS IoReportResourceUsage(PUNICODE_STRING DriverClassName, UNIMPLEMENTED; } -NTSTATUS IoAssignResources(PUNICODE_STRING RegistryPath, +NTSTATUS +STDCALL +IoAssignResources(PUNICODE_STRING RegistryPath, PUNICODE_STRING DriverClassName, PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT DeviceObject, @@ -49,7 +56,9 @@ NTSTATUS IoAssignResources(PUNICODE_STRING RegistryPath, UNIMPLEMENTED; } -NTSTATUS IoQueryDeviceDescription(PINTERFACE_TYPE BusType, +NTSTATUS +STDCALL +IoQueryDeviceDescription(PINTERFACE_TYPE BusType, PULONG BusNumber, PCONFIGURATION_TYPE ControllerType, PULONG ControllerNumber, @@ -60,3 +69,5 @@ NTSTATUS IoQueryDeviceDescription(PINTERFACE_TYPE BusType, { UNIMPLEMENTED; } + +/* EOF */ diff --git a/reactos/ntoskrnl/io/rw.c b/reactos/ntoskrnl/io/rw.c index 7e47766e2ed..8233768582d 100644 --- a/reactos/ntoskrnl/io/rw.c +++ b/reactos/ntoskrnl/io/rw.c @@ -1,4 +1,4 @@ -/* $Id: rw.c,v 1.27 1999/11/02 08:55:40 dwelch Exp $ +/* $Id: rw.c,v 1.28 2000/03/26 19:38:26 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -20,6 +20,10 @@ #define NDEBUG #include +/* DATA ********************************************************************/ + + + /* FUNCTIONS ***************************************************************/ @@ -61,7 +65,7 @@ NTSTATUS STDCALL NtReadFile(HANDLE FileHandle, Status = ObReferenceObjectByHandle(FileHandle, FILE_READ_DATA, - IoFileType, + IoFileObjectType, UserMode, (PVOID *) & FileObject, NULL); @@ -187,7 +191,7 @@ NtWriteFile ( Status = ObReferenceObjectByHandle( FileHandle, FILE_WRITE_DATA, - IoFileType, + IoFileObjectType, UserMode, (PVOID *) & FileObject, NULL diff --git a/reactos/ntoskrnl/io/share.c b/reactos/ntoskrnl/io/share.c index 951669d7c82..e830062ea3d 100644 --- a/reactos/ntoskrnl/io/share.c +++ b/reactos/ntoskrnl/io/share.c @@ -1,8 +1,9 @@ -/* +/* $Id: share.c,v 1.2 2000/03/26 19:38:26 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel - * FILE: kernel/base/bug.c - * PURPOSE: Graceful system shutdown if a bug is detected + * FILE: ntoskrnl/io/share.c + * PURPOSE: * PROGRAMMER: David Welch (welch@mcmail.com) * UPDATE HISTORY: * Created 22/05/98 @@ -16,30 +17,113 @@ /* FUNCTIONS *****************************************************************/ -VOID IoUpdateShareAccess(PFILE_OBJECT FileObject, PSHARE_ACCESS ShareAccess) +VOID +STDCALL +IoUpdateShareAccess(PFILE_OBJECT FileObject, PSHARE_ACCESS ShareAccess) { - UNIMPLEMENTED; + UNIMPLEMENTED; } -NTSTATUS IoCheckShareAccess(ACCESS_MASK DesiredAccess, + +VOID +STDCALL +IoCheckDesiredAccess ( + DWORD Unknown0, + DWORD Unknown1 + ) +{ + UNIMPLEMENTED; +} + + +NTSTATUS +STDCALL +IoCheckEaBufferValidity ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2 + ) +{ + UNIMPLEMENTED; + return (STATUS_NOT_IMPLEMENTED); +} + + +NTSTATUS +STDCALL +IoCheckFunctionAccess ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5 + ) +{ + UNIMPLEMENTED; + return (STATUS_NOT_IMPLEMENTED); +} + + +NTSTATUS +STDCALL +IoCheckShareAccess(ACCESS_MASK DesiredAccess, ULONG DesiredShareAccess, PFILE_OBJECT FileObject, PSHARE_ACCESS ShareAccess, BOOLEAN Update) { - UNIMPLEMENTED; + UNIMPLEMENTED; + return (STATUS_NOT_IMPLEMENTED); } -VOID IoRemoveShareAccess(PFILE_OBJECT FileObject, + +VOID +STDCALL +IoRemoveShareAccess(PFILE_OBJECT FileObject, PSHARE_ACCESS ShareAccess) { UNIMPLEMENTED; } -VOID IoSetShareAccess(ACCESS_MASK DesiredAccess, + +VOID +STDCALL +IoSetShareAccess(ACCESS_MASK DesiredAccess, ULONG DesiredShareAccess, PFILE_OBJECT FileObject, PSHARE_ACCESS ShareAccess) { UNIMPLEMENTED; } + + +NTSTATUS +STDCALL +IoSetInformation ( + IN PFILE_OBJECT FileObject, + IN FILE_INFORMATION_CLASS FileInformationClass, + IN ULONG Length, + OUT PVOID FileInformation + ) +{ + UNIMPLEMENTED; + return (STATUS_NOT_IMPLEMENTED); +} + + +VOID +STDCALL +IoFastQueryNetworkAttributes ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4 + ) +{ + UNIMPLEMENTED; +} + + +/* EOF */ diff --git a/reactos/ntoskrnl/io/shutdown.c b/reactos/ntoskrnl/io/shutdown.c index f2828cf77a1..51b129976d9 100644 --- a/reactos/ntoskrnl/io/shutdown.c +++ b/reactos/ntoskrnl/io/shutdown.c @@ -1,4 +1,5 @@ -/* +/* $Id: shutdown.c,v 1.2 2000/03/26 19:38:26 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/shutdown.c @@ -16,12 +17,14 @@ /* FUNCTIONS *****************************************************************/ -NTSTATUS IoRegisterShutdownNotification(PDEVICE_OBJECT DeviceObject) +NTSTATUS STDCALL IoRegisterShutdownNotification(PDEVICE_OBJECT DeviceObject) { UNIMPLEMENTED; } -VOID IoUnregisterShutdownNotification(PDEVICE_OBJECT DeviceObject) +VOID STDCALL IoUnregisterShutdownNotification(PDEVICE_OBJECT DeviceObject) { UNIMPLEMENTED; } + +/* EOF */ diff --git a/reactos/ntoskrnl/io/timer.c b/reactos/ntoskrnl/io/timer.c index f0112e28f9e..1fa29463af5 100644 --- a/reactos/ntoskrnl/io/timer.c +++ b/reactos/ntoskrnl/io/timer.c @@ -1,4 +1,5 @@ -/* +/* $Id: timer.c,v 1.5 2000/03/26 19:38:26 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/timer.c @@ -17,7 +18,9 @@ /* FUNCTIONS *****************************************************************/ -NTSTATUS IoInitializeTimer(PDEVICE_OBJECT DeviceObject, +NTSTATUS +STDCALL +IoInitializeTimer(PDEVICE_OBJECT DeviceObject, PIO_TIMER_ROUTINE TimerRoutine, PVOID Context) /* @@ -39,7 +42,9 @@ NTSTATUS IoInitializeTimer(PDEVICE_OBJECT DeviceObject, return(STATUS_SUCCESS); } -VOID IoStartTimer(PDEVICE_OBJECT DeviceObject) +VOID +STDCALL +IoStartTimer(PDEVICE_OBJECT DeviceObject) /* * FUNCTION: Starts a timer so the driver-supplied IoTimer routine will be * called once per second @@ -59,7 +64,9 @@ VOID IoStartTimer(PDEVICE_OBJECT DeviceObject) &(DeviceObject->Timer->dpc)); } -VOID IoStopTimer(PDEVICE_OBJECT DeviceObject) +VOID +STDCALL +IoStopTimer(PDEVICE_OBJECT DeviceObject) /* * FUNCTION: Disables for a specified device object so the driver-supplied * IoTimer is not called @@ -69,3 +76,6 @@ VOID IoStopTimer(PDEVICE_OBJECT DeviceObject) { KeCancelTimer(&(DeviceObject->Timer->timer)); } + + +/* EOF */ diff --git a/reactos/ntoskrnl/io/vpb.c b/reactos/ntoskrnl/io/vpb.c index 75edb085b82..108e10b83e9 100644 --- a/reactos/ntoskrnl/io/vpb.c +++ b/reactos/ntoskrnl/io/vpb.c @@ -1,4 +1,5 @@ -/* +/* $Id: vpb.c,v 1.9 2000/03/26 19:38:26 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/io/vpb.c @@ -95,9 +96,11 @@ PIRP IoBuildVolumeInformationIrp(ULONG MajorFunction, return(Irp); } + NTSTATUS STDCALL NtQueryVolumeInformationFile ( + IN HANDLE FileHandle, OUT PIO_STATUS_BLOCK IoStatusBlock, OUT PVOID FSInformation, @@ -167,6 +170,22 @@ NtQueryVolumeInformationFile ( return(Status); } + +NTSTATUS +STDCALL +IoQueryVolumeInformation ( + IN PFILE_OBJECT FileObject, + IN FS_INFORMATION_CLASS FsInformationClass, + IN ULONG Length, + OUT PVOID FsInformation, + OUT PULONG ReturnedLength + ) +{ + UNIMPLEMENTED; + return (STATUS_NOT_IMPLEMENTED); +} + + NTSTATUS STDCALL NtSetVolumeInformationFile ( @@ -211,3 +230,38 @@ NtSetVolumeInformationFile ( } return(Status); } + + +VOID +STDCALL +IoAcquireVpbSpinLock ( + PKIRQL Irpl + ) +{ + UNIMPLEMENTED; +} + + +VOID +STDCALL +IoReleaseVpbSpinLock ( + IN KIRQL Irql + ) +{ + UNIMPLEMENTED; +} + + +NTSTATUS +STDCALL +IoVerifyVolume ( + IN PDEVICE_OBJECT DeviceObject, + IN BOOLEAN AllowRawMount + ) +{ + UNIMPLEMENTED; + return (STATUS_NOT_IMPLEMENTED); +} + + +/* EOF */ diff --git a/reactos/ntoskrnl/ke/main.c b/reactos/ntoskrnl/ke/main.c index 25ac81fb3fa..ef70d61ac83 100644 --- a/reactos/ntoskrnl/ke/main.c +++ b/reactos/ntoskrnl/ke/main.c @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.41 2000/03/20 18:00:24 ekohl Exp $ +/* $Id: main.c,v 1.42 2000/03/26 19:38:27 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -30,10 +30,8 @@ /* DATA *********************************************************************/ -USHORT __declspec(dllexport) NtBuildNumber = KERNEL_VERSION_BUILD; -/* EXPORTED */ - -ULONG __declspec(dllexport) NtGlobalFlag = 0; /* FIXME: EXPORTED */ +USHORT EXPORTED NtBuildNumber = KERNEL_VERSION_BUILD; +ULONG EXPORTED NtGlobalFlag = 0; /* FUNCTIONS ****************************************************************/ diff --git a/reactos/ntoskrnl/makefile_rex b/reactos/ntoskrnl/makefile_rex index e48ff36633f..7456ffe0b01 100644 --- a/reactos/ntoskrnl/makefile_rex +++ b/reactos/ntoskrnl/makefile_rex @@ -1,4 +1,4 @@ -# $Id: makefile_rex,v 1.63 2000/03/24 22:25:37 dwelch Exp $ +# $Id: makefile_rex,v 1.64 2000/03/26 19:38:17 ea Exp $ # # ReactOS Operating System # @@ -44,7 +44,7 @@ MM_I386_OBJECTS = mm/i386/page.o mm/i386/memsafe.o IO_OBJECTS = io/iomgr.o io/create.o io/irp.o io/device.o io/rw.o \ io/queue.o io/drvlck.o io/timer.o io/share.o io/errlog.o \ - io/shutdown.o io/fdisk.o io/cancel.o io/error.o io/arc.o \ + io/shutdown.o io/cancel.o io/error.o io/arc.o \ io/dpc.o io/symlink.o io/adapter.o io/cntrller.o io/mdl.o \ io/resource.o io/event.o io/process.o io/file.o io/ioctrl.o \ io/fs.o io/vpb.o io/buildirp.o io/flush.o io/dir.o io/iocomp.o \ diff --git a/reactos/ntoskrnl/mm/mm.c b/reactos/ntoskrnl/mm/mm.c index d36e9d738a9..6d77419dfd8 100644 --- a/reactos/ntoskrnl/mm/mm.c +++ b/reactos/ntoskrnl/mm/mm.c @@ -1,4 +1,4 @@ -/* $Id: mm.c,v 1.24 2000/03/20 18:00:55 ekohl Exp $ +/* $Id: mm.c,v 1.25 2000/03/26 19:38:30 ea Exp $ * * COPYRIGHT: See COPYING in the top directory * PROJECT: ReactOS kernel @@ -203,7 +203,9 @@ NTSTATUS MmSectionHandleFault(MEMORY_AREA* MemoryArea, Status = IoPageRead(MemoryArea->Data.SectionData.Section->FileObject, Mdl, &Offset, - &IoStatus); + &IoStatus, + 0 /* FIXME: UNKNOWN ARG */ + ); if (!NT_SUCCESS(Status)) { diff --git a/reactos/ntoskrnl/mm/pagefile.c b/reactos/ntoskrnl/mm/pagefile.c index e1e1ee56559..0d7249bafdf 100644 --- a/reactos/ntoskrnl/mm/pagefile.c +++ b/reactos/ntoskrnl/mm/pagefile.c @@ -1,4 +1,5 @@ -/* +/* $Id: pagefile.c,v 1.3 2000/03/26 19:38:32 ea Exp $ + * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel * FILE: ntoskrnl/mm/pagefile.c @@ -194,7 +195,7 @@ NTSTATUS STDCALL NtCreatePagingFile(IN PUNICODE_STRING PageFileName, Status = ObReferenceObjectByHandle(FileHandle, FILE_ALL_ACCESS, - IoFileType, + IoFileObjectType, UserMode, (PVOID*)&FileObject, NULL); @@ -245,3 +246,6 @@ NTSTATUS STDCALL NtCreatePagingFile(IN PUNICODE_STRING PageFileName, return(STATUS_SUCCESS); } + + +/* EOF */ diff --git a/reactos/ntoskrnl/mm/section.c b/reactos/ntoskrnl/mm/section.c index 21a13cf1385..337e9693e12 100644 --- a/reactos/ntoskrnl/mm/section.c +++ b/reactos/ntoskrnl/mm/section.c @@ -1,4 +1,4 @@ -/* $Id: section.c,v 1.24 2000/03/19 09:14:51 ea Exp $ +/* $Id: section.c,v 1.25 2000/03/26 19:38:32 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -202,7 +202,7 @@ NTSTATUS STDCALL NtCreateSection (OUT PHANDLE SectionHandle, { Status = ObReferenceObjectByHandle(FileHandle, FILE_READ_DATA, - IoFileType, + IoFileObjectType, UserMode, (PVOID*)&Section->FileObject, NULL); diff --git a/reactos/ntoskrnl/ntoskrnl.def b/reactos/ntoskrnl/ntoskrnl.def index b45c83d6921..1e13b65b757 100644 --- a/reactos/ntoskrnl/ntoskrnl.def +++ b/reactos/ntoskrnl/ntoskrnl.def @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.def,v 1.62 2000/03/19 13:35:37 ekohl Exp $ +; $Id: ntoskrnl.def,v 1.63 2000/03/26 19:38:17 ea Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -164,44 +164,114 @@ FsRtlUninitializeFileLock@4 FsRtlUninitializeLargeMcb@4 FsRtlUninitializeMcb@4 FsRtlUninitializeOplock@4 +IoAcquireCancelSpinLock@4 +IoAcquireVpbSpinLock@4 +IoAllocateAdapterChannel@20 +IoAllocateController@16 +IoAllocateErrorLogEntry@8 IoAllocateIrp@8 -IoAllocateController -IoAttachDeviceToDeviceStack -IoBuildDeviceIoControlRequest -IoBuildSynchronousFsdRequest +IoAllocateMdl@20 +IoAssignResources@24 +IoAttachDevice@12 +IoAttachDeviceByPointer@8 +IoAttachDeviceToDeviceStack@8 +IoBuildAsynchronousFsdRequest@24 +IoBuildDeviceIoControlRequest@36 +IoBuildPartialMdl@16 +IoBuildSynchronousFsdRequest@28 IoCallDriver@8 +IoCancelIrp@4 +IoCheckDesiredAccess@8 +IoCheckEaBufferValidity@12 +IoCheckFunctionAccess@24 +IoCheckShareAccess@20 IoCompleteRequest@8 -IoConnectInterrupt -IoCreateController -IoCreateDevice +IoConnectInterrupt@44 +IoCreateController@4 +IoCreateDevice@28 IoCreateFile@56 -IoCreateStreamFileObject +IoCreateNotificationEvent@8 +IoCreateStreamFileObject@8 IoCreateSymbolicLink@8 -IoDeleteController -IoDeleteDevice -IoDisconnectInterrupt -IoFreeController +IoCreateSynchronizationEvent@8 +IoCreateUnprotectedSymbolicLink@8 +IoDeleteController@4 +IoDeleteDevice@4 +IoDeleteSymbolicLink@4 +IoDetachDevice@4 +IoDeviceHandlerObjectSize DATA +IoDeviceHandlerObjectType DATA +IoDeviceObjectType DATA +IoDisconnectInterrupt@4 +IoDeviceObjectType DATA +IoDriverObjectType=IoFileObjectType DATA +IoEnqueueIrp@4 +IoFastQueryNetworkAttributes@20 +IoFileObjectType DATA +IoFreeController@4 IoFreeIrp@4 +IoFreeMdl@4 +IoGetAttachedDevice@4 IoGetBaseFileSystemDeviceObject@4 -IoGetCurrentIrpStackLocation +IoGetConfigurationInformation@0 +IoGetCurrentProcess@0 +IoGetDeviceObjectPointer@16 IoGetDeviceToVerify@4 +IoGetFileObjectGenericMapping@0 +IoGetInitialStack@0 IoGetRelatedDeviceObject@4 -IoInitializeDpcRequest +IoGetRequestorProcess@4 +IoGetStackLimits@8 +IoGetTopLevelIrp@0 IoInitializeIrp@12 -IoInitializeTimer +IoInitializeTimer@12 IoIsOperationSynchronous@4 IoMakeAssociatedIrp@8 -IoMarkIrpPending -IoRegisterFileSystem -IoRequestDpc -IoStartPacket -IoStartNextPacket -IoStartNextPacketByKey -IoStartTimer -IoStopTimer -;@IofCallDriver@0 +IoOpenDeviceInstanceKey@20 +IoPageRead@20 +IoQueryDeviceDescription@32 +IoQueryDeviceEnumInfo@8 +IoQueryFileInformation@20 +IoQueryVolumeInformation@20 +IoQueueThreadIrp@4 +IoRaiseHardError@12 +IoRaiseInformationalHardError@12 +IoReadOperationCount DATA +IoReadTransferCount=IoAdapterObjectType DATA +IoRegisterDriverReinitialization@12 +IoRegisterFileSystem@4 +IoRegisterFsRegistrationChange@8 +IoRegisterShutdownNotification@4 +IoReleaseCancelSpinLock@4 +IoReleaseVpbSpinLock@4 +IoRemoveShareAccess@8 +;IoReportHalResourceUsage +IoReportResourceUsage@36 +IoSetDeviceToVerify@8 +IoSetHardErrorOrVerifyDevice@8 +IoSetInformation@16 +IoSetShareAccess@16 +IoSetThreadHardErrorMode@4 +IoSetTopLevelIrp@4 +IoStartNextPacket@8 +IoStartNextPacketByKey@12 +IoStartPacket@16 +IoStartTimer@4 +IoStatisticsLock DATA +IoStopTimer@4 +IoSynchronousPageWrite@20 +IoThreadToProcess@4 +IoUnregisterFileSystem@4 +IoUnregisterFsRegistrationChange@8 +IoUnregisterShutdownNotification@4 +IoUpdateShareAccess@8 +IoVerifyVolume@8 +IoWriteErrorLogEntry@4 +IoWriteOperationCount=IoDeviceObjectType DATA +IoWriteTransferCount DATA +;@IofCallDriver@8 IofCallDriver@8 -;@IofCompleteRequest@0 +;@IofCompleteRequest@8 IofCompleteRequest@8 KdDebuggerEnabled DATA KdDebuggerNotPresent DATA @@ -652,6 +722,13 @@ wcsstr wcstombs wctomb ; +; ReactOS Extensions +; +IoGetCurrentIrpStackLocation +IoInitializeDpcRequest +IoMarkIrpPending +IoRequestDpc +; ; ; exports from hal.dll ; @@ -704,14 +781,14 @@ HalSetRealTimeClock@4 ;HalStopProfileInterrupt ;HalSystemVectorDispatchEntry HalTranslateBusAddress@24 -;IoAssignDriveLetters -;IoFlushAdapterBuffers -;IoFreeAdapterChannel -;IoFreeMapRegisters -;IoMapTransfer -;IoReadPartitionTable -;IoSetPartitionInformation -;IoWritePartitionTable +IoAssignDriveLetters@16 +IoFlushAdapterBuffers@24 +IoFreeAdapterChannel@4 +IoFreeMapRegisters@12 +IoMapTransfer@24 +IoReadPartitionTable@16 +IoSetPartitionInformation@16 +IoWritePartitionTable@20 KdComPortInUse DATA KdPortGetByte@4 KdPortInitialize@12 @@ -748,3 +825,4 @@ WRITE_PORT_ULONG@8 WRITE_PORT_USHORT@8 InsertTailList RemoveEntryList + diff --git a/reactos/ntoskrnl/ntoskrnl.edf b/reactos/ntoskrnl/ntoskrnl.edf index 2a4b6dc9bcf..dc0c7b8a77c 100644 --- a/reactos/ntoskrnl/ntoskrnl.edf +++ b/reactos/ntoskrnl/ntoskrnl.edf @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.edf,v 1.49 2000/03/19 13:35:38 ekohl Exp $ +; $Id: ntoskrnl.edf,v 1.50 2000/03/26 19:38:18 ea Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -164,41 +164,110 @@ FsRtlUninitializeFileLock=FsRtlUninitializeFileLock@4 FsRtlUninitializeLargeMcb=FsRtlUninitializeLargeMcb@4 FsRtlUninitializeMcb=FsRtlUninitializeMcb@4 FsRtlUninitializeOplock=FsRtlUninitializeOplock@4 +IoAcquireCancelSpinLock=IoAcquireCancelSpinLock@4 +IoAcquireVpbSpinLock=IoAcquireVpbSpinLock@4 +IoAllocateAdapterChannel=IoAllocateAdapterChannel@20 IoAllocateIrp=IoAllocateIrp@8 -IoAllocateController -IoAttachDeviceToDeviceStack -IoBuildDeviceIoControlRequest -IoBuildSynchronousFsdRequest +IoAllocateMdl=IoAllocateMdl@20 +IoAllocateController=IoAllocateController@16 +IoAllocateErrorLogEntry=IoAllocateErrorLogEntry@8 +IoAssignResources=IoAssignResources@24 +IoAttachDevice=IoAttachDevice@12 +IoAttachDeviceByPointer=IoAttachDeviceByPointer@8 +IoAttachDeviceToDeviceStack=IoAttachDeviceToDeviceStack@8 +IoBuildAsynchronousFsdRequest=IoBuildAsynchronousFsdRequest@24 +IoBuildDeviceIoControlRequest=IoBuildDeviceIoControlRequest@36 +IoBuildPartialMdl=IoBuildPartialMdl@16 +IoBuildSynchronousFsdRequest=IoBuildSynchronousFsdRequest@28 IoCallDriver=IoCallDriver@8 +IoCancelIrp=IoCancelIrp@4 +IoCheckDesiredAccess=IoCheckDesiredAccess@8 +IoCheckEaBufferValidity=IoCheckEaBufferValidity@12 +IoCheckFunctionAccess=IoCheckFunctionAccess@24 +IoCheckShareAccess=IoCheckShareAccess@20 IoCompleteRequest=IoCompleteRequest@8 -IoConnectInterrupt -IoCreateController -IoCreateDevice +IoConnectInterrupt=IoConnectInterrupt@44 +IoCreateController=IoCreateController@4 +IoCreateDevice=IoCreateDevice@28 IoCreateFile=IoCreateFile@56 -IoCreateStreamFileObject +IoCreateNotificationEvent=IoCreateNotificationEvent@8 +IoCreateStreamFileObject=IoCreateStreamFileObject@8 IoCreateSymbolicLink=IoCreateSymbolicLink@8 -IoDeleteController -IoDeleteDevice -IoDisconnectInterrupt -IoFreeController +IoCreateSynchronizationEvent=IoCreateSynchronizationEvent@8 +IoCreateUnprotectedSymbolicLink=IoCreateUnprotectedSymbolicLink@8 +IoDeleteController=IoDeleteController@4 +IoDeleteDevice=IoDeleteDevice@4 +IoDeleteSymbolicLink=IoDeleteSymbolicLink@4 +IoDetachDevice=IoDetachDevice@4 +IoDeviceHandlerObjectSize DATA +IoDeviceHandlerObjectType DATA +IoDeviceObjectType DATA +IoDisconnectInterrupt=IoDisconnectInterrupt@4 +IoDriverObjectType=IoFileObjectType DATA +IoEnqueueIrp=IoEnqueueIrp@4 +IoFastQueryNetworkAttributes=IoFastQueryNetworkAttributes@20 +IoFileObjectType DATA +IoFreeController=IoFreeController@4 IoFreeIrp=IoFreeIrp@4 +IoFreeMdl=IoFreeMdl@4 +IoGetAttachedDevice=IoGetAttachedDevice@4 IoGetBaseFileSystemDeviceObject=IoGetBaseFileSystemDeviceObject@4 -IoGetCurrentIrpStackLocation +IoGetConfigurationInformation=IoGetConfigurationInformation@0 +IoGetCurrentProcess=IoGetCurrentProcess@0 +IoGetDeviceObjectPointer=IoGetDeviceObjectPointer@16 IoGetDeviceToVerify=IoGetDeviceToVerify@4 +IoGetFileObjectGenericMapping=IoGetFileObjectGenericMapping@0 +IoGetInitialStack=IoGetInitialStack@0 IoGetRelatedDeviceObject=IoGetRelatedDeviceObject@4 -IoInitializeDpcRequest +IoGetRequestorProcess=IoGetRequestorProcess@4 +IoGetStackLimits=IoGetStackLimits@8 +IoGetTopLevelIrp=IoGetTopLevelIrp@0 IoInitializeIrp=IoInitializeIrp@12 -IoInitializeTimer +IoInitializeTimer=IoInitializeTimer@12 IoIsOperationSynchronous=IoIsOperationSynchronous@4 -IoMakeAssociatedIrp@8 -IoMarkIrpPending -IoRegisterFileSystem -IoRequestDpc -IoStartPacket -IoStartNextPacket -IoStartNextPacketByKey -IoStartTimer -IoStopTimer +IoMakeAssociatedIrp=IoMakeAssociatedIrp@8 +IoOpenDeviceInstanceKey=IoOpenDeviceInstanceKey@20 +IoPageRead=IoPageRead@20 +IoQueryDeviceDescription=IoQueryDeviceDescription@32 +IoQueryDeviceEnumInfo=IoQueryDeviceEnumInfo@8 +IoQueryFileInformation=IoQueryFileInformation@20 +IoQueryVolumeInformation=IoQueryVolumeInformation@20 +IoQueueThreadIrp=IoQueueThreadIrp@4 +IoRaiseHardError=IoRaiseHardError@12 +IoRaiseInformationalHardError=IoRaiseInformationalHardError@12 +IoReadOperationCount DATA +IoReadTransferCount=IoAdapterObjectType DATA +IoRegisterDriverReinitialization=IoRegisterDriverReinitialization@12 +IoRegisterFileSystem=IoRegisterFileSystem@4 +IoRegisterFsRegistrationChange=IoRegisterFsRegistrationChange@8 +IoRegisterShutdownNotification=IoRegisterShutdownNotification@4 +IoReleaseCancelSpinLock=IoReleaseCancelSpinLock@4 +IoReleaseVpbSpinLock=IoReleaseVpbSpinLock@4 +IoRemoveShareAccess=IoRemoveShareAccess@8 +;IoReportHalResourceUsage +IoReportResourceUsage=IoReportResourceUsage@36 +IoSetDeviceToVerify=IoSetDeviceToVerify@8 +IoSetHardErrorOrVerifyDevice=IoSetHardErrorOrVerifyDevice@8 +IoSetInformation=IoSetInformation@16 +IoSetShareAccess=IoSetShareAccess@16 +IoSetThreadHardErrorMode=IoSetThreadHardErrorMode@4 +IoSetTopLevelIrp=IoSetTopLevelIrp@4 +IoStartNextPacket=IoStartNextPacket@8 +IoStartNextPacketByKey=IoStartNextPacketByKey@12 +IoStartPacket=IoStartPacket@16 +IoStartTimer=IoStartTimer@4 +IoStatisticsLock DATA +IoStopTimer=IoStopTimer@4 +IoSynchronousPageWrite=IoSynchronousPageWrite@20 +IoThreadToProcess=IoThreadToProcess@4 +IoUnregisterFileSystem=IoUnregisterFileSystem@4 +IoUnregisterFsRegistrationChange=IoUnregisterFsRegistrationChange@8 +IoUnregisterShutdownNotification=IoUnregisterShutdownNotification@4 +IoUpdateShareAccess=IoUpdateShareAccess@8 +IoVerifyVolume=IoVerifyVolume@8 +IoWriteErrorLogEntry=IoWriteErrorLogEntry@4 +IoWriteOperationCount=IoDeviceObjectType DATA +IoWriteTransferCount DATA ;IofCallDriver=@IofCallDriver@0 IofCallDriver=IofCallDriver@8 ;IofCompleteRequest=@IofCompleteRequest@0 @@ -579,6 +648,13 @@ wcsstr wcstombs wctomb ; +; ReactOS Extensions +; +IoGetCurrentIrpStackLocation +IoInitializeDpcRequest +IoMarkIrpPending +IoRequestDpc +; ; ; exports from hal.dll ; @@ -631,14 +707,14 @@ HalSetRealTimeClock=HalSetRealTimeClock@4 ;HalStopProfileInterrupt ;HalSystemVectorDispatchEntry HalTranslateBusAddress=HalTranslateBusAddress@24 -;IoAssignDriveLetters -;IoFlushAdapterBuffers -;IoFreeAdapterChannel -;IoFreeMapRegisters -;IoMapTransfer -;IoReadPartitionTable -;IoSetPartitionInformation -;IoWritePartitionTable +IoAssignDriveLetters=IoAssignDriveLetters@16 +IoFlushAdapterBuffers=IoFlushAdapterBuffers@24 +IoFreeAdapterChannel=IoFreeAdapterChannel@4 +IoFreeMapRegisters=IoFreeMapRegisters@12 +IoMapTransfer=IoMapTransfer@24 +IoReadPartitionTable=IoReadPartitionTable@16 +IoSetPartitionInformation=IoSetPartitionInformation@16 +IoWritePartitionTable=IoWritePartitionTable@20 KdComPortInUse DATA KdPortGetByte=KdPortGetByte@4 KdPortInitialize=KdPortInitialize@12 @@ -675,3 +751,4 @@ WRITE_PORT_ULONG=WRITE_PORT_ULONG@8 WRITE_PORT_USHORT=WRITE_PORT_USHORT@8 InsertTailList RemoveEntryList +