Author: ion
Date: Sun Dec 3 21:04:32 2006
New Revision: 25037
URL: http://svn.reactos.org/svn/reactos?rev=25037&view=rev
Log:
- Fix IopSecurityFile to send the IRP to the right device.
- Fix IoSetInformation to send the IRP to the right device.
- After the major fix in 24996, the functions that had been written to work with the I/O bug stopped working (by sending the IRP to the wrong device object, which, due to the bug was the ""right"" object), this is now fixed and the bootcd works again.
Modified:
trunk/reactos/ntoskrnl/io/iomgr/file.c
trunk/reactos/ntoskrnl/io/iomgr/iofunc.c
Modified: trunk/reactos/ntoskrnl/io/iomgr/file.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/file.c?r…
==============================================================================
--- trunk/reactos/ntoskrnl/io/iomgr/file.c (original)
+++ trunk/reactos/ntoskrnl/io/iomgr/file.c Sun Dec 3 21:04:32 2006
@@ -655,7 +655,6 @@
/* Set up Stack Pointer Data */
StackPtr = IoGetNextIrpStackLocation(Irp);
StackPtr->MajorFunction = IRP_MJ_CLOSE;
- StackPtr->DeviceObject = DeviceObject;
StackPtr->FileObject = FileObject;
/* Queue the IRP */
@@ -686,6 +685,8 @@
ObDereferenceObject(FileObject->CompletionContext->Port);
ExFreePool(FileObject->CompletionContext);
}
+
+ /* FIXME: Dereference device object */
}
}
@@ -839,7 +840,7 @@
IopUpdateOperationCount(IopOtherTransfer);
/* Call the Driver */
- Status = IoCallDriver(FileObject->DeviceObject, Irp);
+ Status = IoCallDriver(DeviceObject, Irp);
/* Check if this was async I/O */
if (LocalEvent)
@@ -1536,6 +1537,8 @@
(PVOID*)&CreatedFileObject,
&FileHandle);
CreatedFileObject->Flags |= FO_HANDLE_CREATED;
+
+ /* FIXME: Reference VPB */
/* Close the extra handle and return file */
NtClose(FileHandle);
Modified: trunk/reactos/ntoskrnl/io/iomgr/iofunc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/iofunc.c…
==============================================================================
--- trunk/reactos/ntoskrnl/io/iomgr/iofunc.c (original)
+++ trunk/reactos/ntoskrnl/io/iomgr/iofunc.c Sun Dec 3 21:04:32 2006
@@ -697,7 +697,7 @@
//IopQueueIrpToThread(Irp);
/* Call the Driver */
- Status = IoCallDriver(FileObject->DeviceObject, Irp);
+ Status = IoCallDriver(DeviceObject, Irp);
/* Check if this was synch I/O */
if (!LocalEvent)
Author: greatlrd
Date: Sun Dec 3 18:42:12 2006
New Revision: 25035
URL: http://svn.reactos.org/svn/reactos?rev=25035&view=rev
Log:
fixed a refer counter that was zero out, but it should be have set to 1
Modified:
trunk/reactos/dll/directx/ddraw/startup.c
Modified: trunk/reactos/dll/directx/ddraw/startup.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/startup.…
==============================================================================
--- trunk/reactos/dll/directx/ddraw/startup.c (original)
+++ trunk/reactos/dll/directx/ddraw/startup.c Sun Dec 3 18:42:12 2006
@@ -36,7 +36,9 @@
if (This->lpLink == NULL)
{
+
RtlZeroMemory(&ddgbl, sizeof(DDRAWI_DIRECTDRAW_GBL));
+ This->lpLcl->lpGbl->dwRefCnt++;
if (ddgbl.lpDDCBtmp == NULL)
{
Author: greatlrd
Date: Sun Dec 3 18:23:44 2006
New Revision: 25034
URL: http://svn.reactos.org/svn/reactos?rev=25034&view=rev
Log:
Fixed the initate process so it do not call to StartDirectDrawHel when GUID DDCREATE_HARDWAREONLY
Fixed the initate process so it do not call to StartDirectDrawHal when GUID DDCREATE_EMLATIONONLY
Modified:
trunk/reactos/dll/directx/ddraw/startup.c
Modified: trunk/reactos/dll/directx/ddraw/startup.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/ddraw/startup.…
==============================================================================
--- trunk/reactos/dll/directx/ddraw/startup.c (original)
+++ trunk/reactos/dll/directx/ddraw/startup.c Sun Dec 3 18:23:44 2006
@@ -175,9 +175,25 @@
This->lpLcl->lpDDCB = This->lpLcl->lpGbl->lpDDCBtmp;
This->lpLcl->dwProcessId = GetCurrentProcessId();
- hel_ret = StartDirectDrawHel(iface);
- hal_ret = StartDirectDrawHal(iface);
-
+ switch (devicetypes)
+ {
+ case 2:
+ hal_ret = StartDirectDrawHal(iface);
+ hel_ret = DD_OK;
+ This->lpLcl->lpDDCB->HELDD.dwFlags = 0;
+ break;
+
+ case 3:
+ hel_ret = StartDirectDrawHel(iface);
+ hal_ret = DD_OK;
+ This->lpLcl->lpDDCB->HALDD.dwFlags = 0;
+ break;
+
+ default:
+ hal_ret = StartDirectDrawHal(iface);
+ hel_ret = StartDirectDrawHel(iface);
+ }
+
if ((hal_ret!=DD_OK) && (hel_ret!=DD_OK))
{
DX_STUB_str("DDERR_NODIRECTDRAWSUPPORT");
@@ -946,8 +962,6 @@
read dwAppHackFlags flag from the system register instead for hard code it
*/
This->lpLcl->dwAppHackFlags = 0;
- /* Do mot inistate this value if we do we can not open the HAL interface */
- //This->lpLcl->dwErrorMode = 0;
This->lpLcl->dwHotTracking = 0;
This->lpLcl->dwIMEState = 0;
This->lpLcl->dwLocalFlags = DDRAWILCL_DIRECTDRAW7;
@@ -988,6 +1002,7 @@
if (StartDirectDraw((LPDIRECTDRAW*)This, pGUID) == DD_OK);
{
+
This->lpLcl->hDD = ddgbl.hDD;
return DD_OK;
}