Added required defines and typedefs for ntoskrnl/io modules.
[reactos.git] / reactos / include / ddk / iofuncs.h
index 5eb3f19..d3dd51e 100644 (file)
@@ -1,6 +1,6 @@
 #ifndef _INCLUDE_DDK_IOFUNCS_H
 #define _INCLUDE_DDK_IOFUNCS_H
-/* $Id: iofuncs.h,v 1.15 2000/06/30 22:49:26 ekohl Exp $ */
+/* $Id: iofuncs.h,v 1.34 2002/10/03 19:26:46 robd Exp $ */
 
 /* --- EXPORTED BY NTOSKRNL --- */
 
@@ -213,8 +213,8 @@ IoAllocateMdl (
  *             PUNICODE_STRING DeviceName
  *             );
  */
-#define IoAssignArcName (ArcName, DeviceName) \
-       (IoCreateSymbolicLink ((ArcName), (DeviceName)))
+#define IoAssignArcName(ArcName,DeviceName) \
+       (IoCreateSymbolicLink((ArcName),(DeviceName)))
 
 /**********************************************************************
  * NAME                                                        EXPORTED
@@ -376,29 +376,24 @@ 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
+IoCheckDesiredAccess(IN OUT PACCESS_MASK DesiredAccess,
+                    IN ACCESS_MASK GrantedAccess);
+
+NTSTATUS STDCALL
+IoCheckEaBufferValidity(IN PFILE_FULL_EA_INFORMATION EaBuffer,
+                       IN ULONG EaLength,
+                       OUT PULONG ErrorOffset);
+
+NTSTATUS STDCALL
+IoCheckFunctionAccess(IN ACCESS_MASK GrantedAccess,
+                     IN UCHAR MajorFunction,
+                     IN UCHAR MinorFunction,
+                     IN ULONG IoControlCode,
+                     IN PFILE_INFORMATION_CLASS FileInformationClass OPTIONAL,
+                     IN PFS_INFORMATION_CLASS FsInformationClass OPTIONAL);
+
 NTSTATUS
 STDCALL
 IoCheckShareAccess (
@@ -429,6 +424,7 @@ IoConnectInterrupt (
        KAFFINITY               ProcessorEnableMask,
        BOOLEAN                 FloatingSave
        );
+
 PCONTROLLER_OBJECT
 STDCALL
 IoCreateController (
@@ -559,15 +555,14 @@ STDCALL
 IoEnqueueIrp (
        PIRP    Irp
        );
-VOID
-STDCALL
-IoFastQueryNetworkAttributes (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3,
-       DWORD   Unknown4
-       );
+
+BOOLEAN STDCALL
+IoFastQueryNetworkAttributes(IN POBJECT_ATTRIBUTES ObjectAttributes,
+                            IN ACCESS_MASK DesiredAccess,
+                            IN ULONG OpenOptions,
+                            OUT PIO_STATUS_BLOCK IoStatus,
+                            OUT PFILE_NETWORK_OPEN_INFORMATION Buffer);
+
 VOID
 STDCALL
 IoFreeController (
@@ -590,6 +585,11 @@ IoGetAttachedDevice (
        );
 PDEVICE_OBJECT
 STDCALL
+IoGetAttachedDeviceReference (
+       PDEVICE_OBJECT  DeviceObject
+       );
+PDEVICE_OBJECT
+STDCALL
 IoGetBaseFileSystemDeviceObject (
        IN      PFILE_OBJECT    FileObject
        );
@@ -610,15 +610,27 @@ IoGetConfigurationInformation (
  *      PIO_STACK_LOCATION
  *      IoGetCurrentIrpStackLocation (PIRP Irp)
  */
-#define IoGetCurrentIrpStackLocation(Irp) \
-       (&(Irp)->Stack[(ULONG)((Irp)->CurrentLocation)])
-
-/* original macro */
-/*
 #define IoGetCurrentIrpStackLocation(Irp) \
        ((Irp)->Tail.Overlay.CurrentStackLocation)
-*/
-PEPROCESS
+
+#define IoSetNextIrpStackLocation(Irp) { \
+  (Irp)->CurrentLocation--; \
+  (Irp)->Tail.Overlay.CurrentStackLocation--; }
+
+#define IoCopyCurrentIrpStackLocationToNext(Irp) { \
+  PIO_STACK_LOCATION IrpSp; \
+  PIO_STACK_LOCATION NextIrpSp; \
+  IrpSp = IoGetCurrentIrpStackLocation((Irp)); \
+  NextIrpSp = IoGetNextIrpStackLocation((Irp)); \
+  RtlCopyMemory(NextIrpSp, IrpSp, \
+    FIELD_OFFSET(IO_STACK_LOCATION, CompletionRoutine)); \
+  NextIrpSp->Control = 0; }
+
+#define IoSkipCurrentIrpStackLocation(Irp) \
+  (Irp)->CurrentLocation++; \
+  (Irp)->Tail.Overlay.CurrentStackLocation++;
+
+struct _EPROCESS*
 STDCALL
 IoGetCurrentProcess (
        VOID
@@ -634,7 +646,7 @@ IoGetDeviceObjectPointer (
 PDEVICE_OBJECT
 STDCALL
 IoGetDeviceToVerify (
-       PETHREAD        Thread
+       struct _ETHREAD*        Thread
        );
 PGENERIC_MAPPING
 STDCALL
@@ -662,38 +674,35 @@ IoGetInitialStack (
  *      PIO_STACK_LOCATION
  *      IoGetNextIrpStackLocation (PIRP Irp)
  */
-#define IoGetNextIrpStackLocation(Irp) \
-       (&(Irp)->Stack[(Irp)->CurrentLocation-1])
-
-/* original macro */
-/*
 #define IoGetNextIrpStackLocation(Irp) \
        ((Irp)->Tail.Overlay.CurrentStackLocation-1)
-*/
+
 
 PDEVICE_OBJECT
 STDCALL
 IoGetRelatedDeviceObject (
        PFILE_OBJECT    FileObject
        );
-PEPROCESS
+struct _EPROCESS*
 STDCALL
 IoGetRequestorProcess (
        IN      PIRP    Irp
        );
+
 VOID
 STDCALL
 IoGetStackLimits (
-       PVOID   * Minimum, /* guess */
-       PVOID   * Maximum  /* guess */
+       PULONG  LowLimit,
+       PULONG  HighLimit
        );
+
 PIRP
 STDCALL
 IoGetTopLevelIrp (
        VOID
        );
 
-#define IoInitializeDpcRequest(DeviceObject, DpcRoutine) \
+#define IoInitializeDpcRequest(DeviceObject,DpcRoutine) \
        (KeInitializeDpc(&(DeviceObject)->Dpc, \
                         (PKDEFERRED_ROUTINE)(DpcRoutine), \
                         (DeviceObject)))
@@ -775,14 +784,6 @@ IoOpenDeviceInstanceKey (
        );
 NTSTATUS
 STDCALL
-IoPageRead (
-       PFILE_OBJECT            FileObject,
-       PMDL                    Mdl,
-       PLARGE_INTEGER          Offset,
-       PIO_STATUS_BLOCK        StatusBlock
-       );
-NTSTATUS
-STDCALL
 IoQueryDeviceDescription (
        PINTERFACE_TYPE                 BusType,
        PULONG                          BusNumber,
@@ -821,8 +822,33 @@ IoQueryVolumeInformation (
 VOID
 STDCALL
 IoQueueThreadIrp (
-       PVOID   Unknown0
+       IN      PIRP    Irp
        );
+
+typedef struct _IO_WORKITEM *PIO_WORKITEM;
+typedef VOID (*PIO_WORKITEM_ROUTINE)(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context);
+
+VOID
+STDCALL
+IoQueueWorkItem(
+    IN PIO_WORKITEM IoWorkItem, 
+       IN PIO_WORKITEM_ROUTINE WorkerRoutine, 
+       IN WORK_QUEUE_TYPE QueueType, 
+       IN PVOID Context
+       );
+
+VOID
+STDCALL
+IoFreeWorkItem(
+    PIO_WORKITEM IoWorkItem
+       );
+
+PIO_WORKITEM
+STDCALL
+IoAllocateWorkItem(
+       PDEVICE_OBJECT DeviceObject
+       );
+
 VOID
 STDCALL
 IoRaiseHardError (
@@ -835,7 +861,7 @@ STDCALL
 IoRaiseInformationalHardError (
        NTSTATUS        ErrorStatus,
        PUNICODE_STRING String,
-       PKTHREAD        Thread
+       struct _KTHREAD*        Thread
        );
 VOID
 STDCALL
@@ -881,10 +907,10 @@ IoRemoveShareAccess (
 NTSTATUS
 STDCALL
 IoReportHalResourceUsage (
-       PUNICODE_STRING HalDescription,
-       ULONG           Unknown1,
-       ULONG           Unknown2,
-       ULONG           Unknown3
+       IN      PUNICODE_STRING         HalDescription,
+       IN      PCM_RESOURCE_LIST       RawList,
+       IN      PCM_RESOURCE_LIST       TranslatedList,
+       IN      ULONG                   ListSize
        );
 NTSTATUS
 STDCALL
@@ -900,14 +926,14 @@ IoReportResourceUsage (
        PBOOLEAN                ConflictDetected
        );
 
-#define IoRequestDpc(DeviceObject, Irp, Context) \
+#define IoRequestDpc(DeviceObject,Irp,Context) \
        (KeInsertQueueDpc(&(DeviceObject)->Dpc,(Irp),(Context)))
 
-#define IoSetCancelRoutine(Irp, NewCancelRoutine) \
+#define IoSetCancelRoutine(Irp,NewCancelRoutine) \
        ((PDRIVER_CANCEL)InterlockedExchange((PULONG)&(Irp)->CancelRoutine, \
                                             (ULONG)(NewCancelRoutine)));
 
-#define IoSetCompletionRoutine (Irp,Routine,Context,Success,Error,Cancel) \
+#define IoSetCompletionRoutine(Irp,Routine,Context,Success,Error,Cancel) \
        { \
                PIO_STACK_LOCATION param; \
                assert((Success)||(Error)||(Cancel)?(Routine)!=NULL:TRUE); \
@@ -923,17 +949,14 @@ IoReportResourceUsage (
                        param->Control |= SL_INVOKE_ON_CANCEL; \
        } 
 
-VOID
-STDCALL
-IoSetDeviceToVerify (
-       DWORD   Unknown0,
-       DWORD   Unknown1
-       );
+VOID STDCALL
+IoSetDeviceToVerify (IN struct _ETHREAD* Thread,
+                    IN PDEVICE_OBJECT DeviceObject);
 VOID
 STDCALL
 IoSetHardErrorOrVerifyDevice (
-       PIRP            Irp,
-       PDEVICE_OBJECT  DeviceObject
+       IN      PIRP            Irp,
+       IN      PDEVICE_OBJECT  DeviceObject
        );
 NTSTATUS
 STDCALL
@@ -1033,20 +1056,22 @@ STDCALL
 IoStopTimer (
        PDEVICE_OBJECT  DeviceObject
        );
-NTSTATUS
-STDCALL
-IoSynchronousPageWrite (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3,
-       DWORD   Unknown4
-       );
-PEPROCESS
-STDCALL
-IoThreadToProcess (
-       IN      PETHREAD        Thread
-       );
+
+NTSTATUS STDCALL
+IoPageRead(PFILE_OBJECT                FileObject,
+          PMDL                 Mdl,
+          PLARGE_INTEGER       Offset,
+          PKEVENT              Event,
+          PIO_STATUS_BLOCK     StatusBlock);
+
+NTSTATUS STDCALL 
+IoSynchronousPageWrite (PFILE_OBJECT       FileObject,
+                       PMDL                Mdl,
+                       PLARGE_INTEGER      Offset,
+                       PKEVENT             Event,
+                       PIO_STATUS_BLOCK    StatusBlock);
+
+struct _EPROCESS* STDCALL IoThreadToProcess (struct _ETHREAD*  Thread);
 VOID
 STDCALL
 IoUnregisterFileSystem (
@@ -1056,14 +1081,14 @@ IoUnregisterFileSystem (
 VOID
 STDCALL
 IoUnregisterFsRegistrationChange (
-       DWORD   Unknown0,
-       DWORD   Unknown1
+       IN      PDRIVER_OBJECT          DriverObject,
+       IN      PFSDNOTIFICATIONPROC    FSDNotificationProc
        );
 #endif // (_WIN32_WINNT >= 0x0400)
 VOID
 STDCALL
 IoUnregisterShutdownNotification (
-       PDEVICE_OBJECT  DeviceObject
+       IN      PDEVICE_OBJECT  DeviceObject
        );
 VOID
 STDCALL
@@ -1178,7 +1203,7 @@ IoWritePartitionTable (
        ULONG                           SectorSize,
        ULONG                           SectorsPerTrack,
        ULONG                           NumberOfHeads,
-       PDRIVE_LAYOUT_INFORMATION       PartitionBuffer
+       PDRIVE_LAYOUT_INFORMATION       PartitionBuffer
        );