mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 04:13:34 +00:00
serial: Fix FileStandardInformation and FilePositionInformation classes
serial: Add FileNetworkOpenInformation class serenum: Pass all requests to next driver, even unknown ones svn path=/trunk/; revision=33430
This commit is contained in:
@@ -47,6 +47,7 @@ IrpStub(
|
||||
case IRP_MJ_CREATE:
|
||||
case IRP_MJ_CLOSE:
|
||||
case IRP_MJ_CLEANUP:
|
||||
case IRP_MJ_QUERY_INFORMATION:
|
||||
case IRP_MJ_READ:
|
||||
case IRP_MJ_WRITE:
|
||||
case IRP_MJ_DEVICE_CONTROL:
|
||||
@@ -56,7 +57,7 @@ IrpStub(
|
||||
WARN_(SERENUM, "FDO stub for major function 0x%lx\n",
|
||||
IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||
ASSERT(FALSE);
|
||||
Status = Irp->IoStatus.Status;
|
||||
return ForwardIrpToLowerDeviceAndForget(DeviceObject, Irp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -77,7 +78,7 @@ IrpStub(
|
||||
WARN_(SERENUM, "PDO stub for major function 0x%lx\n",
|
||||
IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||
ASSERT(FALSE);
|
||||
Status = Irp->IoStatus.Status;
|
||||
return ForwardIrpToAttachedFdoAndForget(DeviceObject, Irp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ SerialQueryInformation(
|
||||
StandardInfo->Directory = FALSE;
|
||||
StandardInfo->NumberOfLinks = 0;
|
||||
StandardInfo->DeletePending = FALSE; /* FIXME: should be TRUE sometimes */
|
||||
Information = sizeof(FILE_STANDARD_INFORMATION);
|
||||
Status = STATUS_SUCCESS;
|
||||
}
|
||||
break;
|
||||
@@ -55,13 +56,34 @@ SerialQueryInformation(
|
||||
ASSERT(PositionInfo);
|
||||
|
||||
TRACE_(SERIAL, "IRP_MJ_QUERY_INFORMATION / FilePositionInformation\n");
|
||||
if (BufferLength < sizeof(PFILE_POSITION_INFORMATION))
|
||||
if (BufferLength < sizeof(FILE_POSITION_INFORMATION))
|
||||
Status = STATUS_BUFFER_OVERFLOW;
|
||||
else if (!PositionInfo)
|
||||
Status = STATUS_INVALID_PARAMETER;
|
||||
else
|
||||
{
|
||||
PositionInfo->CurrentByteOffset.QuadPart = 0;
|
||||
Information = sizeof(FILE_POSITION_INFORMATION);
|
||||
Status = STATUS_SUCCESS;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FileNetworkOpenInformation:
|
||||
{
|
||||
PFILE_NETWORK_OPEN_INFORMATION NetworkOpenInfo = (PFILE_NETWORK_OPEN_INFORMATION)SystemBuffer;
|
||||
|
||||
ASSERT(NetworkOpenInfo);
|
||||
|
||||
TRACE_(SERIAL, "IRP_MJ_QUERY_INFORMATION / FileNetworkInformation\n");
|
||||
DbgBreakPoint();
|
||||
if (BufferLength < sizeof(FILE_NETWORK_OPEN_INFORMATION))
|
||||
Status = STATUS_BUFFER_OVERFLOW;
|
||||
else if (!NetworkOpenInfo)
|
||||
Status = STATUS_INVALID_PARAMETER;
|
||||
else
|
||||
{
|
||||
RtlZeroMemory(NetworkOpenInfo, sizeof(FILE_NETWORK_OPEN_INFORMATION));
|
||||
Information = sizeof(FILE_NETWORK_OPEN_INFORMATION);
|
||||
Status = STATUS_SUCCESS;
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user