mirror of
https://github.com/reactos/reactos.git
synced 2024-06-16 01:21:44 +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 );
|
||||
}
|
||||
|
||||
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
|
||||
AfdGetSockName( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||
PIO_STACK_LOCATION IrpSp ) {
|
||||
|
|
|
@ -422,6 +422,9 @@ AfdDispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp)
|
|||
case IOCTL_AFD_GET_INFO:
|
||||
return AfdGetInfo( DeviceObject, Irp, IrpSp );
|
||||
|
||||
case IOCTL_AFD_SET_INFO:
|
||||
return AfdSetInfo( DeviceObject, Irp, IrpSp );
|
||||
|
||||
case IOCTL_AFD_GET_CONTEXT:
|
||||
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"));
|
||||
break;
|
||||
|
||||
case IOCTL_AFD_SET_INFO:
|
||||
AFD_DbgPrint(MIN_TRACE, ("IOCTL_AFD_SET_INFO\n"));
|
||||
break;
|
||||
|
||||
case IOCTL_AFD_SET_CONNECT_DATA:
|
||||
AFD_DbgPrint(MIN_TRACE, ("IOCTL_AFD_SET_CONNECT_DATA\n"));
|
||||
break;
|
||||
|
|
|
@ -178,7 +178,7 @@ typedef struct _AFD_STORED_DATAGRAM {
|
|||
|
||||
typedef struct _AFD_FCB {
|
||||
BOOLEAN Locked, Critical, Overread;
|
||||
UINT State, Flags;
|
||||
UINT State, Flags, BlockingMode;
|
||||
KIRQL OldIrql;
|
||||
UINT LockCount;
|
||||
PVOID CurrentThread;
|
||||
|
@ -236,6 +236,10 @@ NTSTATUS NTAPI
|
|||
AfdGetInfo( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||
PIO_STACK_LOCATION IrpSp );
|
||||
|
||||
NTSTATUS NTAPI
|
||||
AfdSetInfo( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||
PIO_STACK_LOCATION IrpSp );
|
||||
|
||||
NTSTATUS NTAPI
|
||||
AfdGetSockName( PDEVICE_OBJECT DeviceObject, PIRP Irp,
|
||||
PIO_STACK_LOCATION IrpSp );
|
||||
|
|
Loading…
Reference in a new issue