mirror of
https://github.com/reactos/reactos.git
synced 2024-06-23 14:31:47 +00:00
- Implement IOCTL_AFD_SET_INFO
- We currently disregard the value of BlockingMode so this causes no behavior change svn path=/trunk/; revision=41833
This commit is contained in:
parent
5571325492
commit
e99d1fe3f9
|
@ -69,6 +69,35 @@ AfdGetInfo( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||||
return UnlockAndMaybeComplete( FCB, Status, Irp, 0 );
|
return UnlockAndMaybeComplete( FCB, Status, Irp, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NTSTATUS NTAPI
|
||||||
|
AfdSetInfo( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||||
|
PIO_STACK_LOCATION IrpSp ) {
|
||||||
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
PAFD_INFO InfoReq = IrpSp->Parameters.DeviceIoControl.Type3InputBuffer;
|
||||||
|
PFILE_OBJECT FileObject = IrpSp->FileObject;
|
||||||
|
PAFD_FCB FCB = FileObject->FsContext;
|
||||||
|
|
||||||
|
if (!SocketAcquireStateLock(FCB)) return LostSocket(Irp);
|
||||||
|
|
||||||
|
_SEH2_TRY {
|
||||||
|
switch (InfoReq->InformationClass) {
|
||||||
|
case AFD_INFO_BLOCKING_MODE:
|
||||||
|
AFD_DbgPrint(MID_TRACE,("Blocking mode set to %d\n", InfoReq->Information.Ulong));
|
||||||
|
FCB->BlockingMode = InfoReq->Information.Ulong;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
AFD_DbgPrint(MIN_TRACE,("Unknown request %d\n", InfoReq->InformationClass));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {
|
||||||
|
Status = STATUS_INVALID_PARAMETER;
|
||||||
|
} _SEH2_END;
|
||||||
|
|
||||||
|
AFD_DbgPrint(MID_TRACE,("Returning %x\n", Status));
|
||||||
|
|
||||||
|
return UnlockAndMaybeComplete(FCB, Status, Irp, 0);
|
||||||
|
}
|
||||||
|
|
||||||
NTSTATUS NTAPI
|
NTSTATUS NTAPI
|
||||||
AfdGetSockName( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
AfdGetSockName( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||||
PIO_STACK_LOCATION IrpSp ) {
|
PIO_STACK_LOCATION IrpSp ) {
|
||||||
|
|
|
@ -422,6 +422,9 @@ AfdDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||||
case IOCTL_AFD_GET_INFO:
|
case IOCTL_AFD_GET_INFO:
|
||||||
return AfdGetInfo( DeviceObject, Irp, IrpSp );
|
return AfdGetInfo( DeviceObject, Irp, IrpSp );
|
||||||
|
|
||||||
|
case IOCTL_AFD_SET_INFO:
|
||||||
|
return AfdSetInfo( DeviceObject, Irp, IrpSp );
|
||||||
|
|
||||||
case IOCTL_AFD_GET_CONTEXT:
|
case IOCTL_AFD_GET_CONTEXT:
|
||||||
return AfdGetContext( DeviceObject, Irp, IrpSp );
|
return AfdGetContext( DeviceObject, Irp, IrpSp );
|
||||||
|
|
||||||
|
@ -447,10 +450,6 @@ AfdDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
||||||
AFD_DbgPrint(MIN_TRACE, ("IOCTL_AFD_GET_TDI_HANDLES\n"));
|
AFD_DbgPrint(MIN_TRACE, ("IOCTL_AFD_GET_TDI_HANDLES\n"));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IOCTL_AFD_SET_INFO:
|
|
||||||
AFD_DbgPrint(MIN_TRACE, ("IOCTL_AFD_SET_INFO\n"));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case IOCTL_AFD_SET_CONNECT_DATA:
|
case IOCTL_AFD_SET_CONNECT_DATA:
|
||||||
AFD_DbgPrint(MIN_TRACE, ("IOCTL_AFD_SET_CONNECT_DATA\n"));
|
AFD_DbgPrint(MIN_TRACE, ("IOCTL_AFD_SET_CONNECT_DATA\n"));
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -178,7 +178,7 @@ typedef struct _AFD_STORED_DATAGRAM {
|
||||||
|
|
||||||
typedef struct _AFD_FCB {
|
typedef struct _AFD_FCB {
|
||||||
BOOLEAN Locked, Critical, Overread;
|
BOOLEAN Locked, Critical, Overread;
|
||||||
UINT State, Flags;
|
UINT State, Flags, BlockingMode;
|
||||||
KIRQL OldIrql;
|
KIRQL OldIrql;
|
||||||
UINT LockCount;
|
UINT LockCount;
|
||||||
PVOID CurrentThread;
|
PVOID CurrentThread;
|
||||||
|
@ -236,6 +236,10 @@ NTSTATUS NTAPI
|
||||||
AfdGetInfo( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
AfdGetInfo( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||||
PIO_STACK_LOCATION IrpSp );
|
PIO_STACK_LOCATION IrpSp );
|
||||||
|
|
||||||
|
NTSTATUS NTAPI
|
||||||
|
AfdSetInfo( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||||
|
PIO_STACK_LOCATION IrpSp );
|
||||||
|
|
||||||
NTSTATUS NTAPI
|
NTSTATUS NTAPI
|
||||||
AfdGetSockName( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
AfdGetSockName( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||||
PIO_STACK_LOCATION IrpSp );
|
PIO_STACK_LOCATION IrpSp );
|
||||||
|
|
Loading…
Reference in a new issue