A folder entry id structure.
        /// <summary>
        /// Verify the FolderEntryID structure.
        /// </summary>
        /// <param name="folderEntryID">The FolderEntryID to be verified.</param>
        /// <param name="storeObjectType">Store Object Type.</param>
        private void VerifyFolderEntryID(FolderEntryID folderEntryID, StoreObjectType storeObjectType)
        {
            // Add the debug information.
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCDATA_R2225");

            // Verify MS-OXCDATA requirement: MS-OXCDATA_R2225.
            Site.CaptureRequirementIfAreEqual<int>(
                0,
                BitConverter.ToInt32(folderEntryID.Flag, 0),
                "MS-OXCDATA",
                2225,
                @"[In Folder EntryID Structure] Flags (4 bytes): This value MUST be set to 0x00000000.");

            // Add the debug information.
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCDATA_R2229");

            // Verify MS-OXCDATA requirement: MS-OXCDATA_R2229.
            Site.CaptureRequirementIfAreEqual<int>(
                16,
                folderEntryID.DataBaseGUID.Length,
                "MS-OXCDATA",
                2229,
                @"[In Folder EntryID Structure] DatabaseGuid (16 bytes): A GUID associated with the Store object and corresponding to the ReplicaId field of the FID structure.");

            // Add the debug information.
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCDATA_R2230");

            // Verify MS-OXCDATA requirement: MS-OXCDATA_R2230.
            Site.CaptureRequirementIfAreEqual<int>(
                6,
                folderEntryID.GlobalCounter.Length,
                "MS-OXCDATA",
                2230,
                @"[In Folder EntryID Structure] GlobalCounter (6 bytes): An unsigned integer identifying the folder.");

            // Add the debug information.
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCDATA_R2231");

            // Verify MS-OXCDATA requirement: MS-OXCDATA_R2231.
            Site.CaptureRequirementIfAreEqual<short>(
                0,
               BitConverter.ToInt16(folderEntryID.Pad, 0),
               "MS-OXCDATA",
                2231,
                @"[In Folder EntryID Structure] Pad (2 bytes): This value MUST be set to zero.");

            // Add the debug information.
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXORULE_R301");

            // The structure of FolderEId is verified by the requirements MS-OXCDATA_R2225, MS-OXCDATA_R2229, MS-OXCDATA_R2230, and MS-OXCDATA_R2231.
            // Verify MS-OXORULE_R301.
            Site.CaptureRequirement(
                301,
                @"[In OP_MOVE and OP_COPY ActionData Structure] [Buffer Format for Standard Rules] FolderEID (variable): A structure that identifies the destination folder.");

            if (storeObjectType == StoreObjectType.Mailbox)
            {
                // Add the debug information.
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCDATA_R2226");

                // Verify MS-OXCDATA requirement: MS-OXCDATA_R2226.
                Site.CaptureRequirementIfAreEqual<byte[]>(
                    this.mailboxGUID,
                    folderEntryID.ProviderUID,
                    "MS-OXCDATA",
                    2226,
                    @"[In Folder EntryID Structure] Provider UID (16 bytes): For a folder in a private mailbox, this value MUST be set to value of the MailboxGuid field from the RopLogon ROP response buffer ([MS-OXCROPS] section 2.2.3.1).");
            }
        }
        /// <summary>
        /// Get folder EntryID bytes array.
        /// </summary>
        /// <param name="storeObjectType">Identify the store object is a mailbox or a public folder.</param>
        /// <param name="objHandle">Logon handle.</param>
        /// <param name="folderid">Folder id value.</param>
        /// <returns>Folder EntryID bytes array.</returns>
        public byte[] GetFolderEntryId(StoreObjectType storeObjectType, uint objHandle, ulong folderid)
        {
            // Get folder longterm id.
            RopLongTermIdFromIdResponse longTermIdFromId = this.GetLongTermId(objHandle, folderid);
            FolderEntryID folderEntryId;
            if (storeObjectType == StoreObjectType.Mailbox)
            {
                folderEntryId = new FolderEntryID(storeObjectType, this.mailboxGUID, longTermIdFromId.LongTermId.DatabaseGuid, longTermIdFromId.LongTermId.GlobalCounter);
            }
            else
            {
                byte[] providerUID = new byte[] { 0x1A, 0x44, 0x73, 0x90, 0xAA, 0x66, 0x11, 0xCD, 0x9B, 0xC8, 0x00, 0xAA, 0x00, 0x2F, 0xC4, 0x5A };
                folderEntryId = new FolderEntryID(storeObjectType, providerUID, longTermIdFromId.LongTermId.DatabaseGuid, longTermIdFromId.LongTermId.GlobalCounter);
            }

            this.VerifyFolderEntryID(folderEntryId, storeObjectType);
            return folderEntryId.Serialize();
        }