- Define public version of DEVOBJ_EXTENSION in DDK.
svn path=/trunk/; revision=17650
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,
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)))
{
}
/* 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 */
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;
}
IoGetDeviceAttachmentBaseRef(IN PDEVICE_OBJECT DeviceObject)
{
/* Return the attached Device */
- return (DeviceObject->DeviceObjectExtension->AttachedTo);
+ return (((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->AttachedTo);
}
/*
IoGetDiskDeviceObject(IN PDEVICE_OBJECT FileSystemDeviceObject,
OUT PDEVICE_OBJECT *DiskDeviceObject)
{
- PDEVOBJ_EXTENSION DeviceExtension;
+ PEXTENDED_DEVOBJ_EXTENSION DeviceExtension;
PVPB Vpb;
KIRQL OldIrql;
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;
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 */
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;
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;
* 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;
if (DeviceObject == NULL)
return STATUS_NO_SUCH_DEVICE;
- DeviceNode = DeviceObject->DeviceObjectExtension->DeviceNode;
+ DeviceNode = ((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->DeviceNode;
}
switch (RelatedDeviceData->Relation)
if (DeviceObject == NULL)
return STATUS_NO_SUCH_DEVICE;
- DeviceNode = DeviceObject->DeviceObjectExtension->DeviceNode;
+ DeviceNode = ((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->DeviceNode;
switch (StatusData->Operation)
{
if (DeviceObject == NULL)
return STATUS_NO_SUCH_DEVICE;
- DeviceNode = DeviceObject->DeviceObjectExtension->DeviceNode;
+ DeviceNode = ((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->DeviceNode;
DepthData->Depth = DeviceNode->Level;
IopGetDeviceNode(
PDEVICE_OBJECT DeviceObject)
{
- return DeviceObject->DeviceObjectExtension->DeviceNode;
+ return ((PEXTENDED_DEVOBJ_EXTENSION)DeviceObject->DeviceObjectExtension)->DeviceNode;
}
NTSTATUS
Node->PhysicalDeviceObject = PhysicalDeviceObject;
- PhysicalDeviceObject->DeviceObjectExtension->DeviceNode = Node;
+ ((PEXTENDED_DEVOBJ_EXTENSION)PhysicalDeviceObject->DeviceObjectExtension)->DeviceNode = Node;
if (ParentNode)
{
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;
#define RESTRICTED_POINTER
#define NTAPI __stdcall
+
#define OBJ_INHERIT 0x00000002
#define OBJ_PERMANENT 0x00000010
#define OBJ_EXCLUSIVE 0x00000020