public void RopLockRegionStreamMethod(PreStateBeforeLock preState, out CPRPTErrorCode error)
{
error = CPRPTErrorCode.None;
RopLockRegionStreamResponse lockRegionStreamResponse;
// The regionOffset value used in RopLockRegionStream.
ulong regionOffset = 0;
// The lockFlags value used in RopLockRegionStream.
uint lockFlags = (uint)LockFlags.OtherValue;
RopGetStreamSizeResponse getStreamSizeRes = this.RopGetStreamSize(this.cprptCurrentHandle, true);
ulong regionSize = getStreamSizeRes.StreamSize;
lockRegionStreamResponse = this.RopLockRegionStream(this.cprptCurrentHandle, regionOffset, regionSize, lockFlags, false);
if (preState == PreStateBeforeLock.PreLockNotExpired)
{
error = (CPRPTErrorCode)lockRegionStreamResponse.ReturnValue;
this.Site.Assert.AreEqual(CPRPTErrorCode.None, error, string.Format("RopLockRegionStream failed with error: 0x{0:X8}", lockRegionStreamResponse.ReturnValue));
lockRegionStreamResponse = this.RopLockRegionStream(this.cprptCurrentHandle, regionOffset, regionSize, lockFlags, false);
error = (CPRPTErrorCode)lockRegionStreamResponse.ReturnValue;
}
else if (preState == PreStateBeforeLock.WithExpiredLock)
{
// The byteCount variable in RopReadStream.
ushort byteCount = 1;
// The maxByteCount Variable in RopReadStream.
uint maxByteCount = 1;
this.RopReadStream(this.cprptCurrentHandle, byteCount, maxByteCount, false);
error = (CPRPTErrorCode)lockRegionStreamResponse.ReturnValue;
this.Site.Assert.AreNotEqual(CPRPTErrorCode.AccessDenied, error, string.Format("RopLockRegionStream failed with error: 0x{0:X8}", lockRegionStreamResponse.ReturnValue));
}
else if (preState == PreStateBeforeLock.Normal)
{
error = (CPRPTErrorCode)lockRegionStreamResponse.ReturnValue;
this.Site.Assert.AreEqual((uint)CPRPTErrorCode.None, lockRegionStreamResponse.ReturnValue, string.Format("RopLockRegionStream failed with error: 0x{0:X8}", lockRegionStreamResponse.ReturnValue));
}
this.VerifyRopLockRegionStream(lockRegionStreamResponse);
}