- Fix kernel32 and ntoskrnl build issues.
- Define public version of DEVOBJ_EXTENSION in DDK.
Modified: trunk/reactos/lib/kernel32/file/mailslot.c
Modified: trunk/reactos/ntoskrnl/io/device.c
Modified: trunk/reactos/ntoskrnl/io/deviface.c
Modified: trunk/reactos/ntoskrnl/io/file.c
Modified: trunk/reactos/ntoskrnl/io/plugplay.c
Modified: trunk/reactos/ntoskrnl/io/pnpmgr.c
Modified: trunk/reactos/w32api/include/ddk/winddk.h
Modified: trunk/reactos/w32api/include/ntdef.h

Modified: trunk/reactos/lib/kernel32/file/mailslot.c
--- trunk/reactos/lib/kernel32/file/mailslot.c	2005-09-04 23:26:35 UTC (rev 17649)
+++ trunk/reactos/lib/kernel32/file/mailslot.c	2005-09-04 23:48:19 UTC (rev 17650)
@@ -167,10 +167,12 @@
 		DWORD lReadTimeout)
 {
    FILE_MAILSLOT_SET_INFORMATION Buffer;
+   LARGE_INTEGER Timeout;
    IO_STATUS_BLOCK Iosb;
    NTSTATUS Status;
 
-   Buffer.ReadTimeout.QuadPart = lReadTimeout * -10000;
+   Timeout.QuadPart = lReadTimeout * -10000;
+   Buffer.ReadTimeout = &Timeout;
 
    Status = NtSetInformationFile(hMailslot,
 				 &Iosb,

Modified: trunk/reactos/ntoskrnl/io/device.c
--- trunk/reactos/ntoskrnl/io/device.c	2005-09-04 23:26:35 UTC (rev 17649)
+++ trunk/reactos/ntoskrnl/io/device.c	2005-09-04 23:48:19 UTC (rev 17650)
@@ -336,17 +336,17 @@
                                 OUT PDEVICE_OBJECT *AttachedToDeviceObject)
 {
     PDEVICE_OBJECT AttachedDevice;
-    PDEVOBJ_EXTENSION SourceDeviceExtension;
+    PEXTENDED_DEVOBJ_EXTENSION SourceDeviceExtension;
 
     DPRINT("IoAttachDeviceToDeviceStack(SourceDevice 0x%p, TargetDevice 0x%p)\n",
             SourceDevice, TargetDevice);
 
     /* Get the Attached Device and source extension */
     AttachedDevice = IoGetAttachedDevice(TargetDevice);
-    SourceDeviceExtension = SourceDevice->DeviceObjectExtension;
+    SourceDeviceExtension = (PEXTENDED_DEVOBJ_EXTENSION)SourceDevice->DeviceObjectExtension;
 
     /* Make sure that it's in a correct state */
-    if (!(AttachedDevice->DeviceObjectExtension->ExtensionFlags &
+    if (!(((PEXTENDED_DEVOBJ_EXTENSION)AttachedDevice->DeviceObjectExtension)->ExtensionFlags &
         (DOE_UNLOAD_PENDING | DOE_DELETE_PENDING |
          DOE_REMOVE_PENDING | DOE_REMOVE_PROCESSED)))
     {
@@ -624,7 +624,7 @@
    }
 
    /* I guess this should be removed later... but it shouldn't cause problems */
-   DeviceObject->DeviceObjectExtension->ExtensionFlags |= DOE_DELETE_PENDING;
+   ((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->ExtensionFlags |= DOE_DELETE_PENDING;
 
    /* Make the object temporary. This should automatically remove the device
       from the namespace */
@@ -650,7 +650,7 @@
     DPRINT("IoDetachDevice(TargetDevice 0x%p)\n", TargetDevice);
 
     /* Remove the attachment */
-    TargetDevice->AttachedDevice->DeviceObjectExtension->AttachedTo = NULL;
+    ((PEXTENDED_DEVOBJ_EXTENSION)TargetDevice->AttachedDevice->DeviceObjectExtension)->AttachedTo = NULL;
     TargetDevice->AttachedDevice = NULL;
 }
 
@@ -758,7 +758,7 @@
 IoGetDeviceAttachmentBaseRef(IN PDEVICE_OBJECT DeviceObject)
 {
     /* Return the attached Device */
-    return (DeviceObject->DeviceObjectExtension->AttachedTo);
+    return (((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->AttachedTo);
 }
 
 /*
@@ -790,7 +790,7 @@
 IoGetDiskDeviceObject(IN  PDEVICE_OBJECT FileSystemDeviceObject,
                       OUT PDEVICE_OBJECT *DiskDeviceObject)
 {
-    PDEVOBJ_EXTENSION DeviceExtension;
+    PEXTENDED_DEVOBJ_EXTENSION DeviceExtension;
     PVPB Vpb;
     KIRQL OldIrql;
 
@@ -801,7 +801,7 @@
     IoAcquireVpbSpinLock(&OldIrql);
 
     /* Get the Device Extension */
-    DeviceExtension = FileSystemDeviceObject->DeviceObjectExtension;
+    DeviceExtension = (PEXTENDED_DEVOBJ_EXTENSION)FileSystemDeviceObject->DeviceObjectExtension;
 
     /* Make sure this one has a VPB too */
     Vpb = DeviceExtension->Vpb;
@@ -825,7 +825,7 @@
 STDCALL
 IoGetLowerDeviceObject(IN PDEVICE_OBJECT DeviceObject)
 {
-    PDEVOBJ_EXTENSION DeviceExtension = DeviceObject->DeviceObjectExtension;
+    PEXTENDED_DEVOBJ_EXTENSION DeviceExtension = (PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension;
     PDEVICE_OBJECT LowerDeviceObject = NULL;
 
     /* Make sure it's not getting deleted */

Modified: trunk/reactos/ntoskrnl/io/deviface.c
--- trunk/reactos/ntoskrnl/io/deviface.c	2005-09-04 23:26:35 UTC (rev 17649)
+++ trunk/reactos/ntoskrnl/io/deviface.c	2005-09-04 23:48:19 UTC (rev 17650)
@@ -618,8 +618,8 @@
    ASSERT(PdoNameInfo->Name.Length);
 
    /* Create base key name for this interface: HKLM\SYSTEM\CurrentControlSet\Control\DeviceClasses\{GUID} */
-   ASSERT(PhysicalDeviceObject->DeviceObjectExtension->DeviceNode);
-   InstancePath = &PhysicalDeviceObject->DeviceObjectExtension->DeviceNode->InstancePath;
+   ASSERT(((PEXTENDED_DEVOBJ_EXTENSION)PhysicalDeviceObject->DeviceObjectExtension)->DeviceNode);
+   InstancePath = &((PEXTENDED_DEVOBJ_EXTENSION)PhysicalDeviceObject->DeviceObjectExtension)->DeviceNode->InstancePath;
    BaseKeyName.Length = wcslen(BaseKeyString) * sizeof(WCHAR);
    BaseKeyName.MaximumLength = BaseKeyName.Length
       + GuidString.Length;

Modified: trunk/reactos/ntoskrnl/io/file.c
--- trunk/reactos/ntoskrnl/io/file.c	2005-09-04 23:26:35 UTC (rev 17649)
+++ trunk/reactos/ntoskrnl/io/file.c	2005-09-04 23:48:19 UTC (rev 17650)
@@ -751,7 +751,7 @@
    PFILE_OBJECT  FileObject = NULL;
    PDEVICE_OBJECT DeviceObject;
    PIRP   Irp;
-   PIO_STACK_LOCATION StackLoc;
+   PEXTENDED_IO_STACK_LOCATION StackLoc;
    IO_SECURITY_CONTEXT  SecurityContext;
    KPROCESSOR_MODE      AccessMode;
    HANDLE               LocalHandle;
@@ -999,7 +999,7 @@
     * Get the stack location for the new
     * IRP and prepare it.
     */
-   StackLoc = IoGetNextIrpStackLocation(Irp);
+   StackLoc = (PEXTENDED_IO_STACK_LOCATION)IoGetNextIrpStackLocation(Irp);
    StackLoc->MinorFunction = 0;
    StackLoc->Flags = (UCHAR)Options;
    StackLoc->Control = 0;

Modified: trunk/reactos/ntoskrnl/io/plugplay.c
--- trunk/reactos/ntoskrnl/io/plugplay.c	2005-09-04 23:26:35 UTC (rev 17649)
+++ trunk/reactos/ntoskrnl/io/plugplay.c	2005-09-04 23:48:19 UTC (rev 17650)
@@ -439,7 +439,7 @@
         if (DeviceObject == NULL)
             return STATUS_NO_SUCH_DEVICE;
 
-        DeviceNode = DeviceObject->DeviceObjectExtension->DeviceNode;
+        DeviceNode = ((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->DeviceNode;
     }
 
     switch (RelatedDeviceData->Relation)
@@ -518,7 +518,7 @@
     if (DeviceObject == NULL)
         return STATUS_NO_SUCH_DEVICE;
 
-    DeviceNode = DeviceObject->DeviceObjectExtension->DeviceNode;
+    DeviceNode = ((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->DeviceNode;
 
     switch (StatusData->Operation)
     {
@@ -559,7 +559,7 @@
     if (DeviceObject == NULL)
         return STATUS_NO_SUCH_DEVICE;
 
-    DeviceNode = DeviceObject->DeviceObjectExtension->DeviceNode;
+    DeviceNode = ((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->DeviceNode;
 
     DepthData->Depth = DeviceNode->Level;
 

Modified: trunk/reactos/ntoskrnl/io/pnpmgr.c
--- trunk/reactos/ntoskrnl/io/pnpmgr.c	2005-09-04 23:26:35 UTC (rev 17649)
+++ trunk/reactos/ntoskrnl/io/pnpmgr.c	2005-09-04 23:48:19 UTC (rev 17650)
@@ -30,7 +30,7 @@
 IopGetDeviceNode(
   PDEVICE_OBJECT DeviceObject)
 {
-  return DeviceObject->DeviceObjectExtension->DeviceNode;
+  return ((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->DeviceNode;
 }
 
 NTSTATUS
@@ -619,7 +619,7 @@
 
   Node->PhysicalDeviceObject = PhysicalDeviceObject;
 
-  PhysicalDeviceObject->DeviceObjectExtension->DeviceNode = Node;
+  ((PEXTENDED_DEVOBJ_EXTENSION)PhysicalDeviceObject->DeviceObjectExtension)->DeviceNode = Node;
 
   if (ParentNode)
     {

Modified: trunk/reactos/w32api/include/ddk/winddk.h
--- trunk/reactos/w32api/include/ddk/winddk.h	2005-09-04 23:26:35 UTC (rev 17649)
+++ trunk/reactos/w32api/include/ddk/winddk.h	2005-09-04 23:48:19 UTC (rev 17650)
@@ -2668,6 +2668,13 @@
   KSPIN_LOCK  SpinLock;
 } ERESOURCE, *PERESOURCE;
 
+typedef struct _DEVOBJ_EXTENSION
+{
+    CSHORT Type;
+    USHORT Size;
+    PDEVICE_OBJECT DeviceObject;
+} DEVOBJ_EXTENSION, *PDEVOBJ_EXTENSION;
+
 typedef struct _DRIVER_EXTENSION {
   struct _DRIVER_OBJECT  *DriverObject;
   PDRIVER_ADD_DEVICE  AddDevice;

Modified: trunk/reactos/w32api/include/ntdef.h
--- trunk/reactos/w32api/include/ntdef.h	2005-09-04 23:26:35 UTC (rev 17649)
+++ trunk/reactos/w32api/include/ntdef.h	2005-09-04 23:48:19 UTC (rev 17650)
@@ -8,6 +8,7 @@
 #define RESTRICTED_POINTER
 
 #define NTAPI __stdcall
+
 #define OBJ_INHERIT          0x00000002
 #define OBJ_PERMANENT        0x00000010
 #define OBJ_EXCLUSIVE        0x00000020