private void FillParameters(ReplayModelLeaseState leaseState, ReplayModelRequestedOplockLevel requestedOplockLevel, ReplayModelDurableHandle modelDurableHandle, Guid createGuid, Guid leaseKey, out LeaseStateValues requestLeaseState, out RequestedOplockLevel_Values oplockLevel, out Smb2CreateContextRequest[] contexts) { #region Fill lease state switch (leaseState) { case ReplayModelLeaseState.LeaseStateNotIncludeH: requestLeaseState = LeaseStateValues.SMB2_LEASE_READ_CACHING; break; case ReplayModelLeaseState.LeaseStateIncludeH: requestLeaseState = LeaseStateValues.SMB2_LEASE_READ_CACHING | LeaseStateValues.SMB2_LEASE_WRITE_CACHING | LeaseStateValues.SMB2_LEASE_HANDLE_CACHING; break; default: requestLeaseState = LeaseStateValues.SMB2_LEASE_NONE; break; } #endregion #region Fill oplockLevel and lease context contexts = new Smb2CreateContextRequest[] { }; switch (requestedOplockLevel) { case ReplayModelRequestedOplockLevel.OplockLevelLeaseV1: testConfig.CheckCreateContext(CreateContextTypeValue.SMB2_CREATE_REQUEST_LEASE); oplockLevel = RequestedOplockLevel_Values.OPLOCK_LEVEL_LEASE; contexts = new Smb2CreateContextRequest[] { new Smb2CreateRequestLease { LeaseKey = leaseKey, LeaseState = requestLeaseState, LeaseFlags = (uint)LeaseFlagsValues.NONE } }; break; case ReplayModelRequestedOplockLevel.OplockLevelLeaseV2: testConfig.CheckCreateContext(CreateContextTypeValue.SMB2_CREATE_REQUEST_LEASE_V2); oplockLevel = RequestedOplockLevel_Values.OPLOCK_LEVEL_LEASE; contexts = new Smb2CreateContextRequest[] { new Smb2CreateRequestLeaseV2 { LeaseKey = leaseKey, LeaseState = requestLeaseState, LeaseFlags = (uint)LeaseFlagsValues.NONE } }; break; case ReplayModelRequestedOplockLevel.OplockLevelBatch: oplockLevel = RequestedOplockLevel_Values.OPLOCK_LEVEL_BATCH; break; case ReplayModelRequestedOplockLevel.OplockLevelII: oplockLevel = RequestedOplockLevel_Values.OPLOCK_LEVEL_II; break; default: oplockLevel = RequestedOplockLevel_Values.OPLOCK_LEVEL_NONE; break; } #endregion #region Fill handle context switch (modelDurableHandle) { case ReplayModelDurableHandle.DurableHandleV1: testConfig.CheckCreateContext(CreateContextTypeValue.SMB2_CREATE_DURABLE_HANDLE_REQUEST); contexts = Smb2Utility.Append <Smb2CreateContextRequest>(contexts, new Smb2CreateDurableHandleRequest { }); break; case ReplayModelDurableHandle.DurableHandleV2: testConfig.CheckCreateContext(CreateContextTypeValue.SMB2_CREATE_DURABLE_HANDLE_REQUEST_V2); contexts = Smb2Utility.Append <Smb2CreateContextRequest>(contexts, new Smb2CreateDurableHandleRequestV2 { CreateGuid = createGuid, Timeout = 120 * 1000, }); break; case ReplayModelDurableHandle.DurableHandleV2Persistent: testConfig.CheckCreateContext(CreateContextTypeValue.SMB2_CREATE_DURABLE_HANDLE_REQUEST_V2); contexts = Smb2Utility.Append <Smb2CreateContextRequest>(contexts, new Smb2CreateDurableHandleRequestV2 { CreateGuid = createGuid, Flags = CREATE_DURABLE_HANDLE_REQUEST_V2_Flags.DHANDLE_FLAG_PERSISTENT, Timeout = 120 * 1000, }); break; default: break; } #endregion }