2.2.3.3.12 Server Drive Lock Control Request (DR_DRIVE_LOCK_REQ)

The server issues a request to lock or unlock portions of a file.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

DeviceIoRequest (24 bytes)

...

...

Operation

F

Padding

NumLocks

Padding2 (20 bytes)

...

...

Locks (variable)

...

DeviceIoRequest (24 bytes): A DR_DEVICE_IOREQUEST (section 2.2.1.4) header. The MajorFunction field in the DR_DEVICE_IOREQUEST header MUST be set to IRP_MJ_LOCK_CONTROL.

Operation (4 bytes): A 32-bit unsigned integer that specifies the type of the locking operation. It MUST have one of the following values:

Value

Meaning

RDP_LOWIO_OP_SHAREDLOCK

0x00000002

 The server is requesting a shared lock.

RDP_LOWIO_OP_EXCLUSIVELOCK

0x00000003

 The server is requesting an exclusive lock.

RDP_LOWIO_OP_UNLOCK

0x00000004

 The server is requesting to unlock a portion of the file.

RDP_LOWIO_OP_UNLOCK_MULTIPLE

0x00000005

 The server is requesting to unlock multiple portions of the file.

If this field has any other value, the request MUST be failed immediately.

F (1 bit): If this bit is set, the client MUST wait for the locking operation to complete. If this bit is not set and the region cannot be locked, the request SHOULD fail.

Padding (31 bits): 31 bits of padding. This field is unused and MUST be ignored.

NumLocks (4 bytes): A 32-bit unsigned integer that specifies the number of RDP_LOCK_INFO structures in the Locks array.

Padding2 (20 bytes): An array of 20 bytes. Reserved. This field can be set to any value and MUST be ignored.

Locks (variable): A variable-length array of RDP_LOCK_INFO structures. This field specifies one or more regions of the file to lock or unlock.