├── .clang-format ├── .editorconfig ├── .gdn ├── .gdnsettings ├── .gitignore ├── internal.gdnhistory └── r │ └── .gdntoolsdata ├── .gitattributes ├── .github ├── CODEOWNERS ├── dependabot.yml └── workflows │ ├── UpdateWinget.yml │ ├── clang.yml │ ├── codeql.yml │ ├── dependency-review.yml │ ├── devskim.yml │ ├── github-ci.yml │ └── scorecards.yml ├── .gitignore ├── .gitmodules ├── .pre-commit-config.yaml ├── .vscode ├── c_cpp_properties.json ├── launch.json └── tasks.json ├── .vsconfig ├── CONTRIBUTING.md ├── MFCMapi.sln ├── MFCMapi.vcxproj ├── MFCMapi.vcxproj.filters ├── MrMapi ├── MMAccounts.cpp ├── MMAccounts.h ├── MMAcls.cpp ├── MMAcls.h ├── MMContents.cpp ├── MMContents.h ├── MMErr.cpp ├── MMErr.h ├── MMFidMid.cpp ├── MMFidMid.h ├── MMFolder.cpp ├── MMFolder.h ├── MMMapiMime.cpp ├── MMMapiMime.h ├── MMNamedProps.cpp ├── MMNamedProps.h ├── MMProfile.cpp ├── MMProfile.h ├── MMPropTag.cpp ├── MMPropTag.h ├── MMPst.cpp ├── MMPst.h ├── MMReceiveFolder.cpp ├── MMReceiveFolder.h ├── MMRules.cpp ├── MMRules.h ├── MMSmartView.cpp ├── MMSmartView.h ├── MMStore.cpp ├── MMStore.h ├── MrMAPI.cpp ├── MrMAPI.exe.manifest ├── MrMAPI.h ├── MrMAPI.vcxproj ├── MrMAPI.vcxproj.filters ├── mmcli.cpp ├── mmcli.h └── packages.config ├── NuGet.Config ├── README.md ├── SECURITY.md ├── StdAfx.h ├── UI ├── CMAPIProgress.cpp ├── CMAPIProgress.h ├── Controls │ ├── FakeSplitter.cpp │ ├── FakeSplitter.h │ ├── PaneHeader │ │ ├── PaneHeader.cpp │ │ └── PaneHeader.h │ ├── SortList │ │ ├── ContentsTableListCtrl.cpp │ │ ├── ContentsTableListCtrl.h │ │ ├── SingleMAPIPropListCtrl.cpp │ │ ├── SingleMAPIPropListCtrl.h │ │ ├── SortHeader.cpp │ │ ├── SortHeader.h │ │ ├── SortListCtrl.cpp │ │ └── SortListCtrl.h │ └── StyleTree │ │ ├── HierarchyTableTreeCtrl.cpp │ │ ├── HierarchyTableTreeCtrl.h │ │ ├── StyleTreeCtrl.cpp │ │ └── StyleTreeCtrl.h ├── Dialogs │ ├── AboutDlg.cpp │ ├── AboutDlg.h │ ├── BaseDialog.cpp │ ├── BaseDialog.h │ ├── ContentsTable │ │ ├── ABDlg.h │ │ ├── AbDlg.cpp │ │ ├── AclDlg.cpp │ │ ├── AclDlg.h │ │ ├── AttachmentsDlg.cpp │ │ ├── AttachmentsDlg.h │ │ ├── ContentsTableDlg.cpp │ │ ├── ContentsTableDlg.h │ │ ├── FolderDlg.cpp │ │ ├── FolderDlg.h │ │ ├── FormContainerDlg.cpp │ │ ├── FormContainerDlg.h │ │ ├── MailboxTableDlg.cpp │ │ ├── MailboxTableDlg.h │ │ ├── MainDlg.cpp │ │ ├── MainDlg.h │ │ ├── MsgServiceTableDlg.cpp │ │ ├── MsgServiceTableDlg.h │ │ ├── ProfileListDlg.cpp │ │ ├── ProfileListDlg.h │ │ ├── ProviderTableDlg.cpp │ │ ├── ProviderTableDlg.h │ │ ├── PublicFolderTableDlg.cpp │ │ ├── PublicFolderTableDlg.h │ │ ├── RecipientsDlg.cpp │ │ ├── RecipientsDlg.h │ │ ├── RulesDlg.cpp │ │ └── RulesDlg.h │ ├── Dialog.cpp │ ├── Dialog.h │ ├── Editors │ │ ├── DbgView.cpp │ │ ├── DbgView.h │ │ ├── Editor.cpp │ │ ├── Editor.h │ │ ├── HexEditor.cpp │ │ ├── HexEditor.h │ │ ├── Options.cpp │ │ ├── Options.h │ │ ├── PropertySelector.cpp │ │ ├── PropertySelector.h │ │ ├── PropertyTagEditor.cpp │ │ ├── PropertyTagEditor.h │ │ ├── QSSpecialFolders.cpp │ │ ├── QSSpecialFolders.h │ │ ├── SearchEditor.cpp │ │ ├── SearchEditor.h │ │ ├── StreamEditor.cpp │ │ ├── StreamEditor.h │ │ ├── TagArrayEditor.cpp │ │ ├── TagArrayEditor.h │ │ ├── propeditor │ │ │ ├── MultiValuePropertyEditor.cpp │ │ │ ├── MultiValuePropertyEditor.h │ │ │ ├── PropertyEditor.cpp │ │ │ ├── PropertyEditor.h │ │ │ ├── ipropeditor.cpp │ │ │ └── ipropeditor.h │ │ └── restriction │ │ │ ├── CriteriaEditor.cpp │ │ │ ├── CriteriaEditor.h │ │ │ ├── ResAndOrEditor.cpp │ │ │ ├── ResAndOrEditor.h │ │ │ ├── ResBitmaskEditor.cpp │ │ │ ├── ResBitmaskEditor.h │ │ │ ├── ResCombinedEditor.cpp │ │ │ ├── ResCombinedEditor.h │ │ │ ├── ResCommentEditor.cpp │ │ │ ├── ResCommentEditor.h │ │ │ ├── ResCompareEditor.cpp │ │ │ ├── ResCompareEditor.h │ │ │ ├── ResExistEditor.cpp │ │ │ ├── ResExistEditor.h │ │ │ ├── ResSizeEditor.cpp │ │ │ ├── ResSizeEditor.h │ │ │ ├── ResSubResEditor.cpp │ │ │ ├── ResSubResEditor.h │ │ │ ├── RestrictEditor.cpp │ │ │ └── RestrictEditor.h │ ├── HierarchyTable │ │ ├── ABContDlg.cpp │ │ ├── ABContDlg.h │ │ ├── HierarchyTableDlg.cpp │ │ ├── HierarchyTableDlg.h │ │ ├── MsgStoreDlg.cpp │ │ └── MsgStoreDlg.h │ ├── MFCUtilityFunctions.cpp │ ├── MFCUtilityFunctions.h │ └── propList │ │ ├── AccountsDialog.cpp │ │ ├── AccountsDialog.h │ │ ├── RegistryDialog.cpp │ │ ├── RegistryDialog.h │ │ ├── SingleMessageDialog.cpp │ │ ├── SingleMessageDialog.h │ │ ├── SingleRecipientDialog.cpp │ │ └── SingleRecipientDialog.h ├── DoubleBuffer.cpp ├── DoubleBuffer.h ├── MAPIFormFunctions.cpp ├── MAPIFormFunctions.h ├── MyMAPIFormViewer.cpp ├── MyMAPIFormViewer.h ├── MySecInfo.cpp ├── MySecInfo.h ├── MyWinApp.cpp ├── MyWinApp.h ├── OnNotify.cpp ├── OnNotify.h ├── ParentWnd.cpp ├── ParentWnd.h ├── QuickStart.cpp ├── QuickStart.h ├── RichEditOleCallback.cpp ├── RichEditOleCallback.h ├── UIFunctions.cpp ├── UIFunctions.h ├── ViewPane │ ├── CheckPane.cpp │ ├── CheckPane.h │ ├── CountedTextPane.cpp │ ├── CountedTextPane.h │ ├── DropDownPane.cpp │ ├── DropDownPane.h │ ├── ListPane.cpp │ ├── ListPane.h │ ├── SmartViewPane.cpp │ ├── SmartViewPane.h │ ├── SplitterPane.cpp │ ├── SplitterPane.h │ ├── TextPane.cpp │ ├── TextPane.h │ ├── TreePane.cpp │ ├── TreePane.h │ ├── ViewPane.cpp │ ├── ViewPane.h │ └── getpane.h ├── addinui.cpp ├── addinui.h ├── enums.h ├── file │ ├── FileDialogEx.cpp │ ├── FileDialogEx.h │ ├── exporter.cpp │ └── exporter.h ├── mapiui.cpp ├── mapiui.h ├── profile.cpp └── profile.h ├── UnitTest ├── .gitattributes ├── SmartViewTestData │ ├── In │ │ ├── ACECONTAINER-1.dat │ │ ├── ACEFB-1.dat │ │ ├── ACEMESSAGE-1.dat │ │ ├── ACEMESSAGE-2.dat │ │ ├── ACL-1.dat │ │ ├── ADDITIONALRENENTRYIDSEX-1.dat │ │ ├── ADDITIONALRENENTRYIDSEX-2.dat │ │ ├── ADDITIONALRENENTRYIDSEX-3.dat │ │ ├── ADDITIONALRENENTRYIDSEX-4.dat │ │ ├── APPOINTMENTRECURRENCEPATTERN-1.dat │ │ ├── APPOINTMENTRECURRENCEPATTERN-2.dat │ │ ├── APPOINTMENTRECURRENCEPATTERN-3.dat │ │ ├── APPOINTMENTRECURRENCEPATTERN-4.dat │ │ ├── CONVERSATIONINDEX-1.dat │ │ ├── CONVERSATIONINDEX-2.dat │ │ ├── CONVERSATIONINDEX-3.dat │ │ ├── CONVERSATIONINDEX-4.dat │ │ ├── DECODEENTRYID-1.dat │ │ ├── ENCODEENTRYID-1.dat │ │ ├── ENTRYID-1.dat │ │ ├── ENTRYID-10.dat │ │ ├── ENTRYID-11.dat │ │ ├── ENTRYID-12.dat │ │ ├── ENTRYID-13.dat │ │ ├── ENTRYID-14.dat │ │ ├── ENTRYID-15.dat │ │ ├── ENTRYID-16.dat │ │ ├── ENTRYID-17.dat │ │ ├── ENTRYID-18.dat │ │ ├── ENTRYID-19.dat │ │ ├── ENTRYID-2.dat │ │ ├── ENTRYID-20.dat │ │ ├── ENTRYID-21.dat │ │ ├── ENTRYID-22.dat │ │ ├── ENTRYID-23.dat │ │ ├── ENTRYID-24.dat │ │ ├── ENTRYID-25.dat │ │ ├── ENTRYID-26.dat │ │ ├── ENTRYID-27.dat │ │ ├── ENTRYID-28.dat │ │ ├── ENTRYID-29.dat │ │ ├── ENTRYID-3.dat │ │ ├── ENTRYID-30.dat │ │ ├── ENTRYID-31.dat │ │ ├── ENTRYID-32.dat │ │ ├── ENTRYID-33.dat │ │ ├── ENTRYID-34.dat │ │ ├── ENTRYID-35.dat │ │ ├── ENTRYID-36.dat │ │ ├── ENTRYID-37.dat │ │ ├── ENTRYID-38.dat │ │ ├── ENTRYID-39.dat │ │ ├── ENTRYID-4.dat │ │ ├── ENTRYID-40.dat │ │ ├── ENTRYID-5.dat │ │ ├── ENTRYID-6.dat │ │ ├── ENTRYID-7.dat │ │ ├── ENTRYID-8.dat │ │ ├── ENTRYID-9.dat │ │ ├── ENTRYLIST-1.dat │ │ ├── ENTRYLIST-2.dat │ │ ├── EXTENDEDFOLDERFLAGS-1.dat │ │ ├── EXTENDEDFOLDERFLAGS-2.dat │ │ ├── EXTENDEDRULEACTION-1.dat │ │ ├── EXTENDEDRULEACTION-2.dat │ │ ├── EXTENDEDRULEACTION-3.dat │ │ ├── EXTENDEDRULECONDITION-1.dat │ │ ├── EXTENDEDRULECONDITION-2.dat │ │ ├── EXTENDEDRULECONDITION-3.dat │ │ ├── EXTENDEDRULECONDITION-4.dat │ │ ├── FBSECURITYDESCRIPTOR-1.dat │ │ ├── FBSECURITYDESCRIPTOR-2.dat │ │ ├── FLATENTRYLIST-1.dat │ │ ├── FLATENTRYLIST-2.dat │ │ ├── FLATENTRYLIST-3.dat │ │ ├── FOLDERUSERFIELDS-1.dat │ │ ├── FOLDERUSERFIELDS-2.dat │ │ ├── FOLDERUSERFIELDS-3.dat │ │ ├── FOLDERUSERFIELDS-4.dat │ │ ├── FOLDERUSERFIELDS-5.dat │ │ ├── GLOBALOBJECTID-1.dat │ │ ├── GLOBALOBJECTID-2.dat │ │ ├── NICKNAMECACHE-2.dat │ │ ├── NICKNAMECACHE-3.dat │ │ ├── NICKNAMECACHE-4.dat │ │ ├── NTSD-1.dat │ │ ├── NTSD-2.dat │ │ ├── NTSD-3.dat │ │ ├── NTSD-4.dat │ │ ├── NTSD-5.dat │ │ ├── PCL-1.dat │ │ ├── PCL-2.dat │ │ ├── PCL-3.dat │ │ ├── PROPERTIES-1.dat │ │ ├── PROPERTIES-2.dat │ │ ├── PROPERTIES-3.dat │ │ ├── PROPERTIES-4.dat │ │ ├── PROPERTIES-5.dat │ │ ├── PROPERTIES-6.dat │ │ ├── PROPERTIES-7.dat │ │ ├── PROPERTIES-8.dat │ │ ├── PROPERTYDEFINITIONSTREAM-1.dat │ │ ├── PROPERTYDEFINITIONSTREAM-2.dat │ │ ├── PROPERTYDEFINITIONSTREAM-3.dat │ │ ├── PROPERTYDEFINITIONSTREAM-4.dat │ │ ├── PROPERTYDEFINITIONSTREAM-5.dat │ │ ├── PROPERTYDEFINITIONSTREAM-6.dat │ │ ├── PROPERTYDEFINITIONSTREAM-7.dat │ │ ├── PROPERTYDEFINITIONSTREAM-8.dat │ │ ├── RECIPIENTROWSTREAM-1.dat │ │ ├── RECIPIENTROWSTREAM-2.dat │ │ ├── RECURRENCEPATTERN-1.dat │ │ ├── RECURRENCEPATTERN-2.dat │ │ ├── RECURRENCEPATTERN-3.dat │ │ ├── REPORTTAG-1.dat │ │ ├── RESTRICTION-1.dat │ │ ├── RESTRICTION-2.dat │ │ ├── RESTRICTION-3.dat │ │ ├── RESTRICTION-4.dat │ │ ├── RULECONDITION-1.dat │ │ ├── RULECONDITION-2.dat │ │ ├── RULECONDITION-3.dat │ │ ├── RULECONDITION-4.dat │ │ ├── SEARCHFOLDERDEFINITION-1.dat │ │ ├── SEARCHFOLDERDEFINITION-2.dat │ │ ├── SEARCHFOLDERDEFINITION-3.dat │ │ ├── SEARCHFOLDERDEFINITION-4.dat │ │ ├── SEARCHFOLDERDEFINITION-5.dat │ │ ├── SEARCHFOLDERDEFINITION-6.dat │ │ ├── SEARCHFOLDERDEFINITION-7.dat │ │ ├── SECURITYDESCRIPTOR-1.dat │ │ ├── SID-1.dat │ │ ├── SID-2.dat │ │ ├── SID-3.dat │ │ ├── SID-4.dat │ │ ├── SID-5.dat │ │ ├── SID-6.dat │ │ ├── SID-7.dat │ │ ├── SWAPPEDTODO-1.dat │ │ ├── SWAPPEDTODO-2.dat │ │ ├── TASKASSIGNERS-1.dat │ │ ├── TIMEZONE-1.dat │ │ ├── TIMEZONEDEFINITION-1.dat │ │ ├── TIMEZONEDEFINITION-2.dat │ │ ├── TIMEZONEDEFINITION-3.dat │ │ ├── TOMBSTONE-1.dat │ │ ├── TOMBSTONE-2.dat │ │ ├── TOMBSTONE-3.dat │ │ ├── VERBSTREAM-1.dat │ │ ├── VERBSTREAM-2.dat │ │ ├── VERBSTREAM-3.dat │ │ ├── VERBSTREAM-4.dat │ │ ├── VERBSTREAM-5.dat │ │ ├── VERBSTREAM-6.dat │ │ ├── VERBSTREAM-7.dat │ │ ├── WEBVIEWPERSISTSTREAM-1.dat │ │ ├── WEBVIEWPERSISTSTREAM-2.dat │ │ ├── WEBVIEWPERSISTSTREAM-3.dat │ │ ├── WEBVIEWPERSISTSTREAM-4.dat │ │ ├── WEBVIEWPERSISTSTREAM-5.dat │ │ ├── WEBVIEWPERSISTSTREAM-6.dat │ │ ├── WEBVIEWPERSISTSTREAM-7.dat │ │ ├── XID-1.dat │ │ ├── XID-2.dat │ │ ├── XID-3.dat │ │ └── XID-4.dat │ ├── Out │ │ ├── ACECONTAINER-out-1.dat │ │ ├── ACEFB-out-1.dat │ │ ├── ACEMESSAGE-out-1.dat │ │ ├── ACEMESSAGE-out-2.dat │ │ ├── ACL-out-1.dat │ │ ├── ADDITIONALRENENTRYIDSEX-out-1.dat │ │ ├── ADDITIONALRENENTRYIDSEX-out-2.dat │ │ ├── ADDITIONALRENENTRYIDSEX-out-3.dat │ │ ├── ADDITIONALRENENTRYIDSEX-out-4.dat │ │ ├── APPOINTMENTRECURRENCEPATTERN-out-1.dat │ │ ├── APPOINTMENTRECURRENCEPATTERN-out-2.dat │ │ ├── APPOINTMENTRECURRENCEPATTERN-out-3.dat │ │ ├── APPOINTMENTRECURRENCEPATTERN-out-4.dat │ │ ├── CONVERSATIONINDEX-out-1.dat │ │ ├── CONVERSATIONINDEX-out-2.dat │ │ ├── CONVERSATIONINDEX-out-3.dat │ │ ├── CONVERSATIONINDEX-out-4.dat │ │ ├── DECODEENTRYID-out-1.dat │ │ ├── ENCODEENTRYID-out-1.dat │ │ ├── ENTRYID-out-1.dat │ │ ├── ENTRYID-out-10.dat │ │ ├── ENTRYID-out-11.dat │ │ ├── ENTRYID-out-12.dat │ │ ├── ENTRYID-out-13.dat │ │ ├── ENTRYID-out-14.dat │ │ ├── ENTRYID-out-15.dat │ │ ├── ENTRYID-out-16.dat │ │ ├── ENTRYID-out-17.dat │ │ ├── ENTRYID-out-18.dat │ │ ├── ENTRYID-out-19.dat │ │ ├── ENTRYID-out-2.dat │ │ ├── ENTRYID-out-20.dat │ │ ├── ENTRYID-out-21.dat │ │ ├── ENTRYID-out-22.dat │ │ ├── ENTRYID-out-23.dat │ │ ├── ENTRYID-out-24.dat │ │ ├── ENTRYID-out-25.dat │ │ ├── ENTRYID-out-26.dat │ │ ├── ENTRYID-out-27.dat │ │ ├── ENTRYID-out-28.dat │ │ ├── ENTRYID-out-29.dat │ │ ├── ENTRYID-out-3.dat │ │ ├── ENTRYID-out-30.dat │ │ ├── ENTRYID-out-31.dat │ │ ├── ENTRYID-out-32.dat │ │ ├── ENTRYID-out-33.dat │ │ ├── ENTRYID-out-34.dat │ │ ├── ENTRYID-out-35.dat │ │ ├── ENTRYID-out-36.dat │ │ ├── ENTRYID-out-37.dat │ │ ├── ENTRYID-out-38.dat │ │ ├── ENTRYID-out-39.dat │ │ ├── ENTRYID-out-4.dat │ │ ├── ENTRYID-out-40.dat │ │ ├── ENTRYID-out-5.dat │ │ ├── ENTRYID-out-6.dat │ │ ├── ENTRYID-out-7.dat │ │ ├── ENTRYID-out-8.dat │ │ ├── ENTRYID-out-9.dat │ │ ├── ENTRYLIST-out-1.dat │ │ ├── ENTRYLIST-out-2.dat │ │ ├── EXTENDEDFOLDERFLAGS-out-1.dat │ │ ├── EXTENDEDFOLDERFLAGS-out-2.dat │ │ ├── EXTENDEDRULEACTION-out-1.dat │ │ ├── EXTENDEDRULEACTION-out-2.dat │ │ ├── EXTENDEDRULEACTION-out-3.dat │ │ ├── EXTENDEDRULECONDITION-out-1.dat │ │ ├── EXTENDEDRULECONDITION-out-2.dat │ │ ├── EXTENDEDRULECONDITION-out-3.dat │ │ ├── EXTENDEDRULECONDITION-out-4.dat │ │ ├── FBSECURITYDESCRIPTOR-out-1.dat │ │ ├── FBSECURITYDESCRIPTOR-out-2.dat │ │ ├── FLATENTRYLIST-out-1.dat │ │ ├── FLATENTRYLIST-out-2.dat │ │ ├── FLATENTRYLIST-out-3.dat │ │ ├── FOLDERUSERFIELDS-out-1.dat │ │ ├── FOLDERUSERFIELDS-out-2.dat │ │ ├── FOLDERUSERFIELDS-out-3.dat │ │ ├── FOLDERUSERFIELDS-out-4.dat │ │ ├── FOLDERUSERFIELDS-out-5.dat │ │ ├── GLOBALOBJECTID-out-1.dat │ │ ├── GLOBALOBJECTID-out-2.dat │ │ ├── NICKNAMECACHE-out-2.dat │ │ ├── NICKNAMECACHE-out-3.dat │ │ ├── NICKNAMECACHE-out-4.dat │ │ ├── NTSD-out-1.dat │ │ ├── NTSD-out-2.dat │ │ ├── NTSD-out-3.dat │ │ ├── NTSD-out-4.dat │ │ ├── NTSD-out-5.dat │ │ ├── PCL-out-1.dat │ │ ├── PCL-out-2.dat │ │ ├── PCL-out-3.dat │ │ ├── PROPERTIES-out-1.dat │ │ ├── PROPERTIES-out-2.dat │ │ ├── PROPERTIES-out-3.dat │ │ ├── PROPERTIES-out-4.dat │ │ ├── PROPERTIES-out-5.dat │ │ ├── PROPERTIES-out-6.dat │ │ ├── PROPERTIES-out-7.dat │ │ ├── PROPERTIES-out-8.dat │ │ ├── PROPERTYDEFINITIONSTREAM-out-1.dat │ │ ├── PROPERTYDEFINITIONSTREAM-out-2.dat │ │ ├── PROPERTYDEFINITIONSTREAM-out-3.dat │ │ ├── PROPERTYDEFINITIONSTREAM-out-4.dat │ │ ├── PROPERTYDEFINITIONSTREAM-out-5.dat │ │ ├── PROPERTYDEFINITIONSTREAM-out-6.dat │ │ ├── PROPERTYDEFINITIONSTREAM-out-7.dat │ │ ├── PROPERTYDEFINITIONSTREAM-out-8.dat │ │ ├── RECIPIENTROWSTREAM-out-1.dat │ │ ├── RECIPIENTROWSTREAM-out-2.dat │ │ ├── RECURRENCEPATTERN-out-1.dat │ │ ├── RECURRENCEPATTERN-out-2.dat │ │ ├── RECURRENCEPATTERN-out-3.dat │ │ ├── REPORTTAG-out-1.dat │ │ ├── RESTRICTION-out-1.dat │ │ ├── RESTRICTION-out-2.dat │ │ ├── RESTRICTION-out-3.dat │ │ ├── RESTRICTION-out-4.dat │ │ ├── RULECONDITION-out-1.dat │ │ ├── RULECONDITION-out-2.dat │ │ ├── RULECONDITION-out-3.dat │ │ ├── RULECONDITION-out-4.dat │ │ ├── SEARCHFOLDERDEFINITION-out-1.dat │ │ ├── SEARCHFOLDERDEFINITION-out-2.dat │ │ ├── SEARCHFOLDERDEFINITION-out-3.dat │ │ ├── SEARCHFOLDERDEFINITION-out-4.dat │ │ ├── SEARCHFOLDERDEFINITION-out-5.dat │ │ ├── SEARCHFOLDERDEFINITION-out-6.dat │ │ ├── SEARCHFOLDERDEFINITION-out-7.dat │ │ ├── SECURITYDESCRIPTOR-out-1.dat │ │ ├── SID-out-1.dat │ │ ├── SID-out-2.dat │ │ ├── SID-out-3.dat │ │ ├── SID-out-4.dat │ │ ├── SID-out-5.dat │ │ ├── SID-out-6.dat │ │ ├── SID-out-7.dat │ │ ├── SWAPPEDTODO-out-1.dat │ │ ├── SWAPPEDTODO-out-2.dat │ │ ├── TASKASSIGNERS-out-1.dat │ │ ├── TIMEZONE-out-1.dat │ │ ├── TIMEZONEDEFINITION-out-1.dat │ │ ├── TIMEZONEDEFINITION-out-2.dat │ │ ├── TIMEZONEDEFINITION-out-3.dat │ │ ├── TOMBSTONE-out-1.dat │ │ ├── TOMBSTONE-out-2.dat │ │ ├── TOMBSTONE-out-3.dat │ │ ├── VERBSTREAM-out-1.dat │ │ ├── VERBSTREAM-out-2.dat │ │ ├── VERBSTREAM-out-3.dat │ │ ├── VERBSTREAM-out-4.dat │ │ ├── VERBSTREAM-out-5.dat │ │ ├── VERBSTREAM-out-6.dat │ │ ├── VERBSTREAM-out-7.dat │ │ ├── WEBVIEWPERSISTSTREAM-out-1.dat │ │ ├── WEBVIEWPERSISTSTREAM-out-2.dat │ │ ├── WEBVIEWPERSISTSTREAM-out-3.dat │ │ ├── WEBVIEWPERSISTSTREAM-out-4.dat │ │ ├── WEBVIEWPERSISTSTREAM-out-5.dat │ │ ├── WEBVIEWPERSISTSTREAM-out-6.dat │ │ ├── WEBVIEWPERSISTSTREAM-out-7.dat │ │ ├── XID-out-1.dat │ │ ├── XID-out-2.dat │ │ ├── XID-out-3.dat │ │ └── XID-out-4.dat │ ├── japanese.dat │ └── test.dat ├── UnitTest.cpp ├── UnitTest.h ├── UnitTest.vcxproj ├── UnitTest.vcxproj.filters ├── Win32.runsettings ├── packages.config ├── res │ ├── UnitTest.rc │ └── resource.h ├── scripts │ └── Build-SmartViewTests.ps1 ├── stdafx.cpp ├── stdafx.h ├── tests │ ├── addintest.cpp │ ├── blockPVtest.cpp │ ├── blocktest.cpp │ ├── clitest.cpp │ ├── filetest.cpp │ ├── flagtest.cpp │ ├── guidtest.cpp │ ├── namedproptest.cpp │ ├── propertytest.cpp │ ├── proptagTest.cpp │ ├── sidtest.cpp │ └── stringtest.cpp └── x64.runsettings ├── _config.yml ├── _includes ├── page-footer.html └── page-header.html ├── core ├── addin │ ├── addin.cpp │ ├── addin.h │ └── mfcmapi.h ├── core.vcxproj ├── core.vcxproj.filters ├── interpret │ ├── errorArray.h │ ├── flagArray.h │ ├── flags.cpp │ ├── flags.h │ ├── genTagArray.h │ ├── guid.cpp │ ├── guid.h │ ├── guidArray.h │ ├── nameIDArray.h │ ├── propTypeArray.h │ ├── proptags.cpp │ ├── proptags.h │ ├── proptype.cpp │ ├── proptype.h │ ├── sid.cpp │ ├── sid.h │ └── smartViewParsers.h ├── mapi │ ├── account │ │ ├── accountHelper.cpp │ │ └── accountHelper.h │ ├── adviseSink.cpp │ ├── adviseSink.h │ ├── cache │ │ ├── globalCache.cpp │ │ ├── globalCache.h │ │ ├── mapiObjects.cpp │ │ ├── mapiObjects.h │ │ ├── namedPropCache.cpp │ │ ├── namedPropCache.h │ │ ├── namedProps.cpp │ │ └── namedProps.h │ ├── columnTags.h │ ├── exportProfile.cpp │ ├── exportProfile.h │ ├── extraPropTags.h │ ├── interfaces.h │ ├── mapiABFunctions.cpp │ ├── mapiABFunctions.h │ ├── mapiFile.cpp │ ├── mapiFile.h │ ├── mapiFunctions.cpp │ ├── mapiFunctions.h │ ├── mapiMemory.h │ ├── mapiMime.cpp │ ├── mapiMime.h │ ├── mapiOutput.cpp │ ├── mapiOutput.h │ ├── mapiProfileFunctions.cpp │ ├── mapiProfileFunctions.h │ ├── mapiProgress.cpp │ ├── mapiProgress.h │ ├── mapiStoreFunctions.cpp │ ├── mapiStoreFunctions.h │ ├── processor │ │ ├── dumpStore.cpp │ │ ├── dumpStore.h │ │ ├── mapiProcessor.cpp │ │ └── mapiProcessor.h │ ├── version.cpp │ └── version.h ├── model │ ├── mapiRowModel.cpp │ └── mapiRowModel.h ├── packages.config ├── property │ ├── attributes.cpp │ ├── attributes.h │ ├── parseProperty.cpp │ ├── parseProperty.h │ ├── property.cpp │ └── property.h ├── propertyBag │ ├── accountPropertyBag.cpp │ ├── accountPropertyBag.h │ ├── mapiPropPropertyBag.cpp │ ├── mapiPropPropertyBag.h │ ├── propertyBag.h │ ├── registryProperty.cpp │ ├── registryProperty.h │ ├── registryPropertyBag.cpp │ ├── registryPropertyBag.h │ ├── rowPropertyBag.cpp │ └── rowPropertyBag.h ├── res │ ├── MFCMAPI64x64_logo.bmp │ ├── MFCMapi.ico │ ├── MFCMapi.rc │ ├── MFCMapi.rc2 │ ├── Resource.h │ ├── advise.bmp │ ├── bldver.rc │ ├── close.bmp │ ├── icons.bmp │ ├── maximize.bmp │ ├── minimize.bmp │ ├── restore.bmp │ ├── splith.cur │ └── splitv.cur ├── smartview │ ├── AdditionalRenEntryIDs.cpp │ ├── AdditionalRenEntryIDs.h │ ├── AppointmentRecurrencePattern.cpp │ ├── AppointmentRecurrencePattern.h │ ├── ConversationIndex.cpp │ ├── ConversationIndex.h │ ├── EntryIdStruct.cpp │ ├── EntryIdStruct.h │ ├── EntryList.cpp │ ├── EntryList.h │ ├── ExtendedFlags.cpp │ ├── ExtendedFlags.h │ ├── FlatEntryList.cpp │ ├── FlatEntryList.h │ ├── FolderUserFieldStream.cpp │ ├── FolderUserFieldStream.h │ ├── GlobalObjectId.cpp │ ├── GlobalObjectId.h │ ├── NickNameCache.cpp │ ├── NickNameCache.h │ ├── PCL.cpp │ ├── PCL.h │ ├── PropertiesStruct.cpp │ ├── PropertiesStruct.h │ ├── PropertyDefinitionStream.cpp │ ├── PropertyDefinitionStream.h │ ├── RecipientRowStream.cpp │ ├── RecipientRowStream.h │ ├── RecurrencePattern.cpp │ ├── RecurrencePattern.h │ ├── ReportTag.cpp │ ├── ReportTag.h │ ├── RestrictionStruct.cpp │ ├── RestrictionStruct.h │ ├── RuleAction.cpp │ ├── RuleAction.h │ ├── RuleCondition.cpp │ ├── RuleCondition.h │ ├── SD │ │ ├── ACEBin.cpp │ │ ├── ACEBin.h │ │ ├── ACLBin.cpp │ │ ├── ACLBin.h │ │ ├── NTSD.cpp │ │ ├── NTSD.h │ │ ├── SDBin.cpp │ │ ├── SDBin.h │ │ ├── SIDBin.cpp │ │ └── SIDBin.h │ ├── SPropValueStruct.cpp │ ├── SPropValueStruct.h │ ├── SearchFolderDefinition.cpp │ ├── SearchFolderDefinition.h │ ├── SmartView.cpp │ ├── SmartView.h │ ├── TaskAssigners.cpp │ ├── TaskAssigners.h │ ├── TimeZone.cpp │ ├── TimeZone.h │ ├── TimeZoneDefinition.cpp │ ├── TimeZoneDefinition.h │ ├── TombStone.cpp │ ├── TombStone.h │ ├── VerbStream.cpp │ ├── VerbStream.h │ ├── WebViewPersistStream.cpp │ ├── WebViewPersistStream.h │ ├── XID.cpp │ ├── XID.h │ ├── addinParser.cpp │ ├── addinParser.h │ ├── block │ │ ├── binaryParser.h │ │ ├── block.cpp │ │ ├── block.h │ │ ├── blockBytes.h │ │ ├── blockPV.h │ │ ├── blockStringA.h │ │ ├── blockStringW.h │ │ ├── blockT.h │ │ └── scratchBlock.h │ ├── decodeEntryID.cpp │ ├── decodeEntryID.h │ ├── encodeEntryID.cpp │ ├── encodeEntryID.h │ ├── swappedToDo.cpp │ └── swappedToDo.h ├── sortlistdata │ ├── binaryData.cpp │ ├── binaryData.h │ ├── commentData.cpp │ ├── commentData.h │ ├── contentsData.cpp │ ├── contentsData.h │ ├── data.h │ ├── mvPropData.cpp │ ├── mvPropData.h │ ├── nodeData.cpp │ ├── nodeData.h │ ├── propListData.cpp │ ├── propListData.h │ ├── propModelData.cpp │ ├── propModelData.h │ ├── resData.cpp │ ├── resData.h │ ├── sortListData.cpp │ └── sortListData.h ├── stdafx.cpp ├── stdafx.h └── utility │ ├── cli.cpp │ ├── cli.h │ ├── clipboard.cpp │ ├── clipboard.h │ ├── error.cpp │ ├── error.h │ ├── file.cpp │ ├── file.h │ ├── import.cpp │ ├── import.h │ ├── memory.cpp │ ├── memory.h │ ├── output.cpp │ ├── output.h │ ├── registry.cpp │ ├── registry.h │ ├── strings.cpp │ └── strings.h ├── docs ├── CreateOutlookItemsAddin.md ├── CreateOutlookItemsAddin.zip ├── Documentation.md ├── MFCMAPI.h ├── MFCMAPIAddinDevelopment.md ├── MFCMAPIArticles.md └── TestAddIn.zip ├── exampleMapiConsoleApp ├── exampleMapiConsoleApp.cpp ├── exampleMapiConsoleApp.vcxproj ├── exampleMapiConsoleApp.vcxproj.filters └── packages.config ├── fuzz ├── Build-FuzzingCorpus.ps1 └── fuzz.cpp ├── license.md ├── mfcmapi.exe.manifest ├── package-lock.json ├── package.json ├── packages.config └── scripts ├── .gdnconfig ├── NuGet.Config ├── build.ps1 ├── clang.ps1 ├── cleancodeql.ps1 ├── codeql.ps1 ├── guardian.ps1 ├── install-codeql.ps1 ├── packages.config └── prefast.proj /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | indent_style = tab 3 | trim_trailing_whitespace = true 4 | [*.yml] 5 | indent_style = space 6 | indent_size = 2 -------------------------------------------------------------------------------- /.gdn/.gdnsettings: -------------------------------------------------------------------------------- 1 | { 2 | "files": { }, 3 | "folders": { }, 4 | "overwriteLogs": true, 5 | "telemetryFlushTimeout": 10, 6 | "variables": { } 7 | } -------------------------------------------------------------------------------- /.gdn/.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Guardian internal files 2 | .r/ 3 | rc/ 4 | rs/ 5 | i/ 6 | p/ 7 | c/ 8 | o/ 9 | 10 | ## Ignore Guardian Local settings 11 | LocalSettings.gdn.json -------------------------------------------------------------------------------- /.gdn/internal.gdnhistory: -------------------------------------------------------------------------------- 1 | { 2 | "hydrated": false, 3 | "properties": { 4 | "hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance." 5 | }, 6 | "version": "1.0.0", 7 | 8 | } -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.txt text eol=crlf 2 | UnitTest/SmartViewTestData/** -linguist-detectable 3 | scripts/** -linguist-detectable -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @microsoft/css-outlook -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: github-actions 4 | directory: / 5 | schedule: 6 | interval: daily 7 | 8 | - package-ecosystem: npm 9 | directory: / 10 | schedule: 11 | interval: daily 12 | -------------------------------------------------------------------------------- /.github/workflows/clang.yml: -------------------------------------------------------------------------------- 1 | name: Clang-format 2 | 3 | on: 4 | pull_request: 5 | branches: [ "main" ] 6 | workflow_dispatch: 7 | 8 | permissions: 9 | contents: read 10 | 11 | jobs: 12 | check-formatting: 13 | name: Formatting Check 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Harden Runner 17 | uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 18 | with: 19 | egress-policy: audit 20 | 21 | - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 22 | - name: Run clang-format style check for C/C++ programs. 23 | uses: jidicula/clang-format-action@4726374d1aa3c6aecf132e5197e498979588ebc8 # v4.15.0 24 | with: 25 | clang-format-version: '17' 26 | exclude-regex: 'mapistub/*' 27 | fallback-style: 'Microsoft' -------------------------------------------------------------------------------- /.github/workflows/devskim.yml: -------------------------------------------------------------------------------- 1 | name: DevSkim 2 | 3 | on: 4 | pull_request: 5 | branches: [ "main" ] 6 | workflow_dispatch: 7 | 8 | permissions: 9 | contents: read 10 | 11 | jobs: 12 | lint: 13 | name: DevSkim 14 | runs-on: ubuntu-latest 15 | permissions: 16 | actions: read 17 | contents: read 18 | security-events: write 19 | steps: 20 | - name: Harden Runner 21 | uses: step-security/harden-runner@0634a2670c59f64b4a01f0f96f84700a4088b9f0 # v2.12.0 22 | with: 23 | egress-policy: audit 24 | 25 | - name: Checkout code 26 | uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 27 | 28 | - name: Run DevSkim scanner 29 | uses: microsoft/DevSkim-Action@4b5047945a44163b94642a1cecc0d93a3f428cc6 # v1.0.16 30 | 31 | - name: Upload DevSkim scan results to GitHub Security tab 32 | uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 33 | with: 34 | path: devskim-results.sarif -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # This .gitignore file was automatically created by Microsoft(R) Visual Studio. 3 | ################################################################################ 4 | 5 | *.user 6 | /bin 7 | /obj 8 | /.vs 9 | /node_modules 10 | /packages 11 | /fuzz/corpus/ 12 | /fuzz/artifacts/ -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "mapistub"] 2 | path = mapistub 3 | url = https://github.com/microsoft/MAPIStubLibrary.git 4 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/gitleaks/gitleaks 3 | rev: v8.16.3 4 | hooks: 5 | - id: gitleaks 6 | - repo: https://github.com/pocc/pre-commit-hooks 7 | rev: v1.3.5 8 | hooks: 9 | - id: cpplint 10 | - repo: https://github.com/pre-commit/pre-commit-hooks 11 | rev: v4.4.0 12 | hooks: 13 | - id: end-of-file-fixer 14 | - id: trailing-whitespace 15 | -------------------------------------------------------------------------------- /.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "Win32", 5 | "includePath": [ 6 | "${workspaceFolder}/**" 7 | ], 8 | "defines": [ 9 | "_DEBUG", 10 | "UNICODE", 11 | "_UNICODE" 12 | ], 13 | "windowsSdkVersion": "10.0.22621.0", 14 | "compilerPath": "cl.exe", 15 | "cStandard": "c17", 16 | "cppStandard": "c++17", 17 | "intelliSenseMode": "windows-msvc-x64" 18 | } 19 | ], 20 | "version": 4 21 | } -------------------------------------------------------------------------------- /MrMapi/MMAccounts.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Account enum for MrMAPI 3 | 4 | void DoAccounts(_In_opt_ LPMAPISESSION lpMAPISession); -------------------------------------------------------------------------------- /MrMapi/MMAcls.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Acl table dumping for MrMAPI 3 | 4 | void DoAcls(_In_opt_ LPMAPIFOLDER lpFolder); 5 | void DumpExchangeTable(_In_ ULONG ulPropTag, _In_opt_ LPMAPIFOLDER lpFolder); -------------------------------------------------------------------------------- /MrMapi/MMContents.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Contents table output for MrMAPI 3 | 4 | void DoContents(LPMDB lpMDB, LPMAPIFOLDER lpFolder); 5 | void DoMSG(); -------------------------------------------------------------------------------- /MrMapi/MMErr.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Error code parsing for MrMAPI 3 | 4 | void DoErrorParse(); -------------------------------------------------------------------------------- /MrMapi/MMFidMid.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Fid / Mid lookup 3 | 4 | void DoFidMid(_In_opt_ LPMDB lpMDB); 5 | -------------------------------------------------------------------------------- /MrMapi/MMFolder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Folder related utilities for MrMAPI 3 | 4 | void DoChildFolders(_In_opt_ LPMAPIFOLDER lpFolder); 5 | void DoFolderProps(_In_opt_ LPMAPIFOLDER lpFolder); 6 | void DoFolderSize(_In_opt_ LPMAPIFOLDER lpFolder); 7 | void DoSearchState(_In_opt_ LPMAPIFOLDER lpFolder); 8 | 9 | LPMAPIFOLDER MAPIOpenFolderExW( 10 | _In_opt_ LPMDB lpMdb, // Open message store 11 | _In_ const std::wstring& lpszFolderPath); // folder path -------------------------------------------------------------------------------- /MrMapi/MMMapiMime.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // MAPI <-> MIME conversion for MrMAPI 3 | 4 | void DoMAPIMIME(_In_opt_ LPMAPISESSION lpMAPISession); -------------------------------------------------------------------------------- /MrMapi/MMNamedProps.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Named Property dump 3 | 4 | void DoNamedProps(_In_opt_ LPMAPISESSION lpSession, _In_opt_ LPMDB lpMDB); 5 | -------------------------------------------------------------------------------- /MrMapi/MMProfile.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Profile dumping for MrMAPI 3 | 4 | namespace output 5 | { 6 | void DoProfile(); 7 | } -------------------------------------------------------------------------------- /MrMapi/MMPropTag.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Prop tag parsing for MrMAPI 3 | 4 | void DoPropTags(); 5 | void DoGUIDs() noexcept; 6 | void DoFlagSearch() noexcept; -------------------------------------------------------------------------------- /MrMapi/MMPst.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // PST related utilities for MrMAPI 3 | 4 | void DoPST(); -------------------------------------------------------------------------------- /MrMapi/MMReceiveFolder.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // ReceiveFolder related stuff for MrMAPI 3 | 4 | void DoReceiveFolder(_In_opt_ LPMDB lpMDB); -------------------------------------------------------------------------------- /MrMapi/MMRules.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | void DoRules(_In_opt_ LPMAPIFOLDER lpFolder) { DumpExchangeTable(PR_RULES_TABLE, lpFolder); } 7 | -------------------------------------------------------------------------------- /MrMapi/MMRules.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Rule table dumping for MrMAPI 3 | 4 | void DoRules(_In_opt_ LPMAPIFOLDER lpFolder); 5 | -------------------------------------------------------------------------------- /MrMapi/MMSmartView.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Smart View parsing for MrMAPI 3 | 4 | void DoSmartView(); -------------------------------------------------------------------------------- /MrMapi/MMStore.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Store Properties for MrMAPI 3 | 4 | HRESULT HrMAPIOpenStoreAndFolder( 5 | _In_ LPMAPISESSION lpMAPISession, 6 | _In_ std::wstring lpszFolderPath, 7 | _Out_opt_ LPMDB* lppMDB, 8 | _Deref_out_opt_ LPMAPIFOLDER* lppFolder); 9 | 10 | void PrintObjectProperties(const std::wstring& szObjType, _In_ LPMAPIPROP lpMAPIProp, ULONG ulPropTag); 11 | 12 | void DoStore(LPMAPISESSION lpMAPISession, LPMDB lpMDB); 13 | 14 | LPMDB OpenStore(_In_ LPMAPISESSION lpMAPISession, ULONG ulIndex); -------------------------------------------------------------------------------- /MrMapi/MrMAPI.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | _Check_return_ LPMAPISESSION MrMAPILogonEx(const std::wstring& lpszProfile); 3 | _Check_return_ LPMDB OpenExchangeOrDefaultMessageStore(_In_ LPMAPISESSION lpMAPISession); -------------------------------------------------------------------------------- /MrMapi/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /NuGet.Config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /UI/Controls/SortList/SortHeader.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Custom sort list control header 3 | 4 | namespace controls::sortlistctrl 5 | { 6 | struct HeaderData 7 | { 8 | ULONG ulTagArrayRow{}; 9 | ULONG ulPropTag{}; 10 | bool bIsAB{}; 11 | std::wstring szHeaderString; 12 | std::wstring szTipString; 13 | }; 14 | typedef HeaderData* LPHEADERDATA; 15 | 16 | class CSortHeader : public CHeaderCtrl 17 | { 18 | public: 19 | CSortHeader(); 20 | _Check_return_ bool Init(_In_ CHeaderCtrl* pHeader, _In_ HWND hwndParent); 21 | 22 | private: 23 | LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam) override; 24 | void RegisterHeaderTooltip(); 25 | 26 | // Custom messages 27 | _Check_return_ LRESULT msgOnSaveColumnOrder(WPARAM wParam, LPARAM lParam); 28 | void OnCustomDraw(_In_ NMHDR* pNMHDR, _In_ LRESULT* pResult); 29 | 30 | HWND m_hwndTip; 31 | TOOLINFOW m_ti; 32 | HWND m_hwndParent; 33 | bool m_bTooltipDisplayed; 34 | 35 | DECLARE_MESSAGE_MAP() 36 | }; 37 | } // namespace controls::sortlistctrl -------------------------------------------------------------------------------- /UI/Dialogs/AboutDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Displays an about dialog 3 | #include 4 | 5 | namespace dialog 6 | { 7 | void DisplayAboutDlg(_In_ CWnd* lpParentWnd); 8 | 9 | class CAboutDlg : public CMyDialog 10 | { 11 | public: 12 | CAboutDlg(_In_ CWnd* pParentWnd); 13 | ~CAboutDlg(); 14 | 15 | private: 16 | void OnOK() override; 17 | LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam) override; 18 | BOOL OnInitDialog() override; 19 | 20 | CRichEditCtrl m_HelpText; 21 | CButton m_DisplayAboutCheck; 22 | }; 23 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/ContentsTable/ABDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace dialog 5 | { 6 | class CAbDlg : public CContentsTableDlg 7 | { 8 | public: 9 | CAbDlg(_In_ std::shared_ptr lpMapiObjects, _In_ LPMAPIPROP lpAbCont); 10 | ~CAbDlg(); 11 | 12 | private: 13 | // Overrides from base class 14 | void CreateDialogAndMenu(UINT nIDMenuResource) override; 15 | void HandleAddInMenuSingle( 16 | _In_ LPADDINMENUPARAMS lpParams, 17 | _In_ LPMAPIPROP lpMAPIProp, 18 | _In_ LPMAPICONTAINER lpContainer) override; 19 | void HandleCopy() override; 20 | _Check_return_ bool HandlePaste() override; 21 | void OnCreatePropertyStringRestriction() override; 22 | void OnDeleteSelectedItem() override; 23 | void OnDisplayDetails(); 24 | void OnInitMenu(_In_ CMenu* pMenu) override; 25 | 26 | // Menu items 27 | void OnOpenContact(); 28 | void OnOpenManager(); 29 | void OnOpenOwner(); 30 | 31 | LPABCONT m_lpAbCont{}; 32 | 33 | DECLARE_MESSAGE_MAP() 34 | }; 35 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/ContentsTable/MailboxTableDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | class CContentsTableListCtrl; 5 | class CSingleMAPIPropListCtrl; 6 | 7 | namespace cache 8 | { 9 | class CMapiObjects; 10 | } 11 | 12 | namespace dialog 13 | { 14 | class CMailboxTableDlg : public CContentsTableDlg 15 | { 16 | public: 17 | CMailboxTableDlg( 18 | _In_ std::shared_ptr lpMapiObjects, 19 | _In_ const std::wstring& lpszServerName, 20 | _In_ LPMAPITABLE lpMAPITable); 21 | ~CMailboxTableDlg(); 22 | 23 | private: 24 | // Overrides from base class 25 | void CreateDialogAndMenu(UINT nIDMenuResource) override; 26 | void DisplayItem(ULONG ulFlags); 27 | void OnCreatePropertyStringRestriction() override; 28 | void OnDisplayItem() override; 29 | void OnInitMenu(_In_ CMenu* pMenu) override; 30 | 31 | // Menu items 32 | void OnOpenWithFlags(); 33 | 34 | std::wstring m_lpszServerName; 35 | 36 | DECLARE_MESSAGE_MAP() 37 | }; 38 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/ContentsTable/ProviderTableDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace cache 5 | { 6 | class CMapiObjects; 7 | } 8 | 9 | namespace dialog 10 | { 11 | class CProviderTableDlg : public CContentsTableDlg 12 | { 13 | public: 14 | CProviderTableDlg( 15 | _In_ std::shared_ptr lpMapiObjects, 16 | _In_ LPMAPITABLE lpMAPITable, 17 | _In_ LPPROVIDERADMIN lpProviderAdmin); 18 | ~CProviderTableDlg(); 19 | 20 | private: 21 | // Overrides from base class 22 | void HandleAddInMenuSingle( 23 | _In_ LPADDINMENUPARAMS lpParams, 24 | _In_ LPMAPIPROP lpMAPIProp, 25 | _In_ LPMAPICONTAINER lpContainer) override; 26 | _Check_return_ LPMAPIPROP OpenItemProp(int iSelectedItem, modifyType bModify) override; 27 | 28 | // Menu items 29 | void OnOpenProfileSection(); 30 | 31 | LPPROVIDERADMIN m_lpProviderAdmin; 32 | 33 | DECLARE_MESSAGE_MAP() 34 | }; 35 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/ContentsTable/PublicFolderTableDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace cache 5 | { 6 | class CMapiObjects; 7 | } 8 | 9 | namespace dialog 10 | { 11 | class CPublicFolderTableDlg : public CContentsTableDlg 12 | { 13 | public: 14 | CPublicFolderTableDlg( 15 | _In_ std::shared_ptr lpMapiObjects, 16 | _In_ const std::wstring& lpszServerName, 17 | _In_ LPMAPITABLE lpMAPITable); 18 | ~CPublicFolderTableDlg(); 19 | 20 | private: 21 | // Overrides from base class 22 | void CreateDialogAndMenu(UINT nIDMenuResource) override; 23 | void OnCreatePropertyStringRestriction() override; 24 | void OnDisplayItem() override; 25 | _Check_return_ LPMAPIPROP OpenItemProp(int iSelectedItem, modifyType bModify) override; 26 | 27 | std::wstring m_lpszServerName; 28 | }; 29 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/ContentsTable/RecipientsDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace 5 | { 6 | class CMapiObjects; 7 | } 8 | 9 | namespace dialog 10 | { 11 | class CRecipientsDlg : public CContentsTableDlg 12 | { 13 | public: 14 | CRecipientsDlg( 15 | _In_ std::shared_ptr lpMapiObjects, 16 | _In_ LPMAPITABLE lpMAPITable, 17 | _In_ LPMAPIPROP lpMessage); 18 | ~CRecipientsDlg(); 19 | 20 | private: 21 | // Overrides from base class 22 | void OnDeleteSelectedItem() override; 23 | void OnInitMenu(_In_ CMenu* pMenu) override; 24 | _Check_return_ LPMAPIPROP OpenItemProp(int iSelectedItem, modifyType bModify) override; 25 | 26 | // Menu items 27 | void OnModifyRecipients(); 28 | void OnRecipOptions(); 29 | void OnSaveChanges(); 30 | void OnViewRecipientABEntry(); 31 | 32 | LPMESSAGE m_lpMessage; 33 | bool m_bViewRecipientABEntry; 34 | 35 | DECLARE_MESSAGE_MAP() 36 | }; 37 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/ContentsTable/RulesDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace cache 5 | { 6 | class CMapiObjects; 7 | } 8 | 9 | namespace dialog 10 | { 11 | class CRulesDlg : public CContentsTableDlg 12 | { 13 | public: 14 | CRulesDlg(_In_ std::shared_ptr lpMapiObjects, _In_ LPEXCHANGEMODIFYTABLE lpExchTbl); 15 | ~CRulesDlg(); 16 | 17 | private: 18 | // Overrides from base class 19 | void HandleAddInMenuSingle( 20 | _In_ LPADDINMENUPARAMS lpParams, 21 | _In_ LPMAPIPROP lpMAPIProp, 22 | _In_ LPMAPICONTAINER lpContainer) override; 23 | void OnDeleteSelectedItem() override; 24 | void OnInitMenu(_In_opt_ CMenu* pMenu) override; 25 | void OnRefreshView() override; 26 | 27 | // Menu items 28 | void OnModifySelectedItem(); 29 | 30 | _Check_return_ HRESULT GetSelectedItems(ULONG ulFlags, ULONG ulRowFlags, _In_ LPROWLIST* lppRowList) const; 31 | 32 | LPEXCHANGEMODIFYTABLE m_lpExchTbl; 33 | 34 | DECLARE_MESSAGE_MAP() 35 | }; 36 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/Dialog.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Base class for dialog class customization 3 | #include 4 | 5 | namespace dialog 6 | { 7 | class CMyDialog : public CDialog 8 | { 9 | public: 10 | CMyDialog(); 11 | CMyDialog(UINT nIDTemplate, CWnd* pParentWnd = nullptr); 12 | ~CMyDialog(); 13 | void DisplayParentedDialog(UINT iAutoCenterWidth); 14 | 15 | protected: 16 | LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam) override; 17 | BOOL CheckAutoCenter() override; 18 | void SetStatusHeight(int iHeight) noexcept; 19 | int GetStatusHeight() const noexcept; 20 | void SetTitle(_In_ const std::wstring& szTitle) const; 21 | ui::CParentWnd* m_lpNonModalParent{}; 22 | 23 | private: 24 | void Constructor(); 25 | LRESULT NCHitTest(WPARAM wParam, LPARAM lParam); 26 | CWnd* m_hwndCenteringWindow{}; 27 | UINT m_iAutoCenterWidth{}; 28 | int m_iStatusHeight{}; 29 | HWND m_hWndPrevious{}; 30 | }; 31 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/Editors/DbgView.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace dialog::editor 5 | { 6 | void DisplayDbgView(); 7 | void OutputToDbgView(const std::wstring& szMsg); 8 | } // namespace dialog::editor -------------------------------------------------------------------------------- /UI/Dialogs/Editors/HexEditor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | namespace dialog::editor 8 | { 9 | class CHexEditor : public CEditor 10 | { 11 | public: 12 | CHexEditor(_In_ std::shared_ptr lpMapiObjects); 13 | 14 | private: 15 | _Check_return_ ULONG HandleChange(UINT nID) override; 16 | void OnEditAction1() override; 17 | void OnEditAction2() override; 18 | void OnEditAction3() override; 19 | void UpdateParser() const; 20 | 21 | void OnOK() override; 22 | void OnCancel() override; 23 | void SetHex(_In_opt_count_(cb) LPBYTE lpb, size_t cb) const; 24 | void OpenEntry(_In_ const SBinary& bin); 25 | 26 | std::shared_ptr m_lpMapiObjects{}; 27 | }; 28 | } // namespace dialog::editor -------------------------------------------------------------------------------- /UI/Dialogs/Editors/Options.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace dialog::editor 4 | { 5 | // Returns true if options changed that may require a property refresh 6 | bool DisplayOptionsDlg(_In_ CWnd* lpParentWnd); 7 | } // namespace dialog::editor -------------------------------------------------------------------------------- /UI/Dialogs/Editors/PropertySelector.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace dialog::editor 5 | { 6 | class CPropertySelector : public CEditor 7 | { 8 | public: 9 | CPropertySelector(bool bIncludeABProps, _In_ LPMAPIPROP lpMAPIProp, _In_ CWnd* pParentWnd); 10 | ~CPropertySelector(); 11 | 12 | _Check_return_ ULONG GetPropertyTag() const noexcept; 13 | _Check_return_ bool DoListEdit(ULONG ulListNum, int iItem, _In_ sortlistdata::sortListData* lpData) override; 14 | 15 | private: 16 | BOOL OnInitDialog() override; 17 | void OnOK() override; 18 | _Check_return_ sortlistdata::sortListData* GetSelectedListRowData(ULONG id) const; 19 | 20 | ULONG m_ulPropTag; 21 | bool m_bIncludeABProps; 22 | LPMAPIPROP m_lpMAPIProp; 23 | }; 24 | } // namespace dialog::editor -------------------------------------------------------------------------------- /UI/Dialogs/Editors/QSSpecialFolders.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | class CMainDlg; 4 | 5 | namespace dialog::editor 6 | { 7 | void OnQSCheckSpecialFolders(_In_ CMainDlg* lpHostDlg, _In_ HWND hwnd); 8 | } // namespace dialog::editor -------------------------------------------------------------------------------- /UI/Dialogs/Editors/SearchEditor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace dialog::editor 5 | { 6 | #define NOSKIPFIELD ((ULONG) 0xffffffff) 7 | 8 | class CSearchEditor : public CEditor 9 | { 10 | public: 11 | enum SearchFields 12 | { 13 | PROPNAME, 14 | SEARCHTERM, 15 | FUZZYLEVEL, 16 | FINDROW, 17 | }; 18 | 19 | CSearchEditor(ULONG ulPropTag, _In_opt_ LPMAPIPROP lpMAPIProp, _In_ CWnd* pParentWnd); 20 | ~CSearchEditor(); 21 | 22 | _Check_return_ const _SRestriction* GetRestriction() const; 23 | 24 | private: 25 | _Check_return_ ULONG HandleChange(UINT nID) override; 26 | void OnEditAction1() override; 27 | void PopulateFields(ULONG ulSkipField) const; 28 | _Check_return_ ULONG GetSelectedFuzzyLevel() const; 29 | 30 | LPMAPIPROP m_lpMAPIProp; 31 | ULONG m_ulPropTag; 32 | ULONG m_ulFuzzyLevel; 33 | }; 34 | } // namespace dialog::editor -------------------------------------------------------------------------------- /UI/Dialogs/Editors/restriction/ResBitmaskEditor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace dialog::editor 5 | { 6 | static std::wstring BITMASKCLASS = L"ResBitmaskEditor"; // STRING_OK 7 | class ResBitmaskEditor : public CEditor 8 | { 9 | public: 10 | ResBitmaskEditor(_In_ CWnd* pParentWnd, ULONG relBMR, ULONG ulPropTag, ULONG ulMask); 11 | 12 | private: 13 | _Check_return_ ULONG HandleChange(UINT nID) override; 14 | }; 15 | } // namespace dialog::editor -------------------------------------------------------------------------------- /UI/Dialogs/Editors/restriction/ResCompareEditor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace dialog::editor 5 | { 6 | static std::wstring COMPCLASS = L"ResCompareEditor"; // STRING_OK 7 | class ResCompareEditor : public CEditor 8 | { 9 | public: 10 | ResCompareEditor(_In_ CWnd* pParentWnd, ULONG ulRelop, ULONG ulPropTag1, ULONG ulPropTag2); 11 | 12 | private: 13 | _Check_return_ ULONG HandleChange(UINT nID) override; 14 | }; 15 | } // namespace dialog::editor -------------------------------------------------------------------------------- /UI/Dialogs/Editors/restriction/ResExistEditor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace dialog::editor 5 | { 6 | static std::wstring EXISTCLASS = L"ResExistEditor"; // STRING_OK 7 | class ResExistEditor : public CEditor 8 | { 9 | public: 10 | ResExistEditor(_In_ CWnd* pParentWnd, ULONG ulPropTag); 11 | 12 | private: 13 | _Check_return_ ULONG HandleChange(UINT nID) override; 14 | }; 15 | } // namespace dialog::editor -------------------------------------------------------------------------------- /UI/Dialogs/Editors/restriction/ResSizeEditor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace dialog::editor 5 | { 6 | static std::wstring SIZECLASS = L"ResSizeEditor"; // STRING_OK 7 | class ResSizeEditor : public CEditor 8 | { 9 | public: 10 | ResSizeEditor(_In_ CWnd* pParentWnd, ULONG relop, ULONG ulPropTag, ULONG cb); 11 | 12 | private: 13 | _Check_return_ ULONG HandleChange(UINT nID) override; 14 | }; 15 | } // namespace dialog::editor -------------------------------------------------------------------------------- /UI/Dialogs/Editors/restriction/ResSubResEditor.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace dialog::editor 5 | { 6 | // This class is only invoked by RestrictEditor. RestrictEditor always passes an alloc parent. 7 | // So all memory detached from this class is owned by a parent and must not be freed manually 8 | static std::wstring SUBRESCLASS = L"ResSubResEditor"; // STRING_OK 9 | class ResSubResEditor : public CEditor 10 | { 11 | public: 12 | ResSubResEditor( 13 | _In_ CWnd* pParentWnd, 14 | _In_ std::shared_ptr lpMapiObjects, 15 | ULONG ulSubObject, 16 | _In_ const _SRestriction* lpRes, 17 | _In_ LPVOID lpAllocParent); 18 | 19 | void OnEditAction1() override; 20 | _Check_return_ LPSRestriction DetachModifiedSRestriction() noexcept; 21 | 22 | private: 23 | _Check_return_ ULONG HandleChange(UINT nID) override; 24 | 25 | LPVOID m_lpAllocParent; 26 | const _SRestriction* m_lpOldRes; 27 | LPSRestriction m_lpNewRes; 28 | std::shared_ptr m_lpMapiObjects{}; 29 | }; 30 | } // namespace dialog::editor -------------------------------------------------------------------------------- /UI/Dialogs/HierarchyTable/ABContDlg.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace dialog 5 | { 6 | class CAbContDlg : public CHierarchyTableDlg 7 | { 8 | public: 9 | CAbContDlg(_In_ std::shared_ptr lpMapiObjects); 10 | ~CAbContDlg(); 11 | 12 | private: 13 | // Overrides from base class 14 | void HandleAddInMenuSingle( 15 | _In_ LPADDINMENUPARAMS lpParams, 16 | _In_ LPMAPIPROP lpMAPIProp, 17 | _In_ LPMAPICONTAINER lpContainer) override; 18 | 19 | // Menu items 20 | void OnSetDefaultDir(); 21 | void OnSetPAB(); 22 | 23 | DECLARE_MESSAGE_MAP() 24 | }; 25 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/propList/AccountsDialog.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | namespace dialog 8 | { 9 | class AccountsDialog : public CBaseDialog 10 | { 11 | public: 12 | AccountsDialog(_In_ std::shared_ptr lpMapiObjects, _In_opt_ LPMAPISESSION lpMAPISession); 13 | ~AccountsDialog(); 14 | 15 | protected: 16 | // Overrides from base class 17 | BOOL OnInitDialog() override; 18 | void OnInitMenu(_In_ CMenu* pMenu); 19 | 20 | private: 21 | controls::StyleTreeCtrl m_lpAccountsList{}; 22 | LPMAPISESSION m_lpMAPISession{}; 23 | LPOLKACCOUNTMANAGER m_lpAcctMgr{}; 24 | CAccountHelper* m_lpMyAcctHelper{}; 25 | std::wstring m_lpwszProfile; 26 | 27 | void InitAccountManager(); 28 | void EnumAccounts(const std::wstring& szCat, const CLSID* pclsidCategory); 29 | void EnumCategories(); 30 | DECLARE_MESSAGE_MAP() 31 | }; 32 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/propList/RegistryDialog.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace dialog 7 | { 8 | class RegistryDialog : public CBaseDialog 9 | { 10 | public: 11 | RegistryDialog(_In_ std::shared_ptr lpMapiObjects); 12 | ~RegistryDialog(); 13 | 14 | protected: 15 | // Overrides from base class 16 | BOOL OnInitDialog() override; 17 | void OnInitMenu(_In_ CMenu* pMenu) override; 18 | void OnRefreshView() override; 19 | 20 | private: 21 | controls::StyleTreeCtrl m_lpRegKeyTree{}; 22 | 23 | void AddProfileRoot(const std::wstring& szName, const std::wstring& szRoot); 24 | void AddChildren(const HTREEITEM hParent, const HKEY hRootKey); 25 | void EnumRegistry(); 26 | DECLARE_MESSAGE_MAP() 27 | }; 28 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/propList/SingleMessageDialog.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | class CContentsTableListCtrl; 3 | 4 | #include 5 | 6 | namespace dialog 7 | { 8 | class SingleMessageDialog : public CBaseDialog 9 | { 10 | public: 11 | SingleMessageDialog(_In_ std::shared_ptr lpMapiObjects, _In_opt_ LPMAPIPROP lpMAPIProp); 12 | ~SingleMessageDialog(); 13 | 14 | protected: 15 | // Overrides from base class 16 | BOOL OnInitDialog() override; 17 | 18 | private: 19 | LPMESSAGE m_lpMessage; 20 | 21 | // Menu items 22 | void OnRefreshView() override; 23 | void OnSaveMessageToFile(); 24 | void OnAttachmentProperties(); 25 | void OnRecipientProperties(); 26 | void OnRTFSync(); 27 | 28 | void OnTestEditBody(); 29 | void OnTestEditHTML(); 30 | void OnTestEditRTF(); 31 | void OnSaveChanges(); 32 | 33 | DECLARE_MESSAGE_MAP() 34 | }; 35 | } // namespace dialog -------------------------------------------------------------------------------- /UI/Dialogs/propList/SingleRecipientDialog.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | class CContentsTableListCtrl; 5 | 6 | namespace dialog 7 | { 8 | class SingleRecipientDialog : public CBaseDialog 9 | { 10 | public: 11 | SingleRecipientDialog(_In_ std::shared_ptr lpMapiObjects, _In_opt_ LPMAPIPROP lpMailUser); 12 | ~SingleRecipientDialog(); 13 | 14 | protected: 15 | // Overrides from base class 16 | void CreateDialogAndMenu(UINT nIDMenuResource); 17 | BOOL OnInitDialog() override; 18 | 19 | private: 20 | LPMAILUSER m_lpMailUser; 21 | 22 | // Menu items 23 | void OnRefreshView() override; 24 | 25 | DECLARE_MESSAGE_MAP() 26 | }; 27 | } // namespace dialog -------------------------------------------------------------------------------- /UI/DoubleBuffer.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace ui 4 | { 5 | // Enable this to skip double buffering while investigating drawing issues 6 | //#define SKIPBUFFER 7 | 8 | class CDoubleBuffer 9 | { 10 | private: 11 | HDC m_hdcMem; 12 | HBITMAP m_hbmpMem; 13 | HDC m_hdcPaint; 14 | RECT m_rcPaint; 15 | 16 | void Cleanup() noexcept; 17 | 18 | public: 19 | CDoubleBuffer(); 20 | ~CDoubleBuffer(); 21 | void Begin(_Inout_ HDC& hdc, _In_ const RECT& prcPaint) noexcept; 22 | void End(_Inout_ HDC& hdc) noexcept; 23 | }; 24 | } // namespace ui -------------------------------------------------------------------------------- /UI/MyWinApp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Main header file for the MFCMAPI application 3 | 4 | #ifndef __AFXWIN_H__ 5 | #error include 'stdafx.h' before including this file for PCH 6 | #endif 7 | 8 | namespace ui 9 | { 10 | class CMyWinApp : public CWinApp 11 | { 12 | public: 13 | CMyWinApp(); 14 | 15 | private: 16 | BOOL InitInstance() override; 17 | }; 18 | } // namespace ui -------------------------------------------------------------------------------- /UI/OnNotify.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace mapi::mapiui 4 | { 5 | void OnNotify(HWND hWndParent, HTREEITEM hTreeParent, ULONG cNotify, LPNOTIFICATION lpNotifications); 6 | } // namespace mapi::mapiui -------------------------------------------------------------------------------- /UI/QuickStart.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace dialog 4 | { 5 | class CMainDlg; 6 | bool HandleQuickStart(_In_ WORD wMenuSelect, _In_ CMainDlg* lpHostDlg, _In_ HWND hwnd); 7 | LPMDB OpenStoreForQuickStart(_In_ CMainDlg* lpHostDlg, _In_ HWND hwnd); 8 | } // namespace dialog -------------------------------------------------------------------------------- /UI/ViewPane/CountedTextPane.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace viewpane 5 | { 6 | class CountedTextPane : public TextPane 7 | { 8 | public: 9 | static std::shared_ptr Create(int paneID, UINT uidLabel, bool bReadOnly, UINT uidCountLabel); 10 | void SetCount(size_t iCount); 11 | 12 | private: 13 | void Initialize(_In_ CWnd* pParent, _In_ HDC hdc) override; 14 | 15 | std::wstring m_szCountLabel; // String name of the count 16 | size_t m_iCount{0}; // The numeric count 17 | }; 18 | } // namespace viewpane -------------------------------------------------------------------------------- /UI/ViewPane/TreePane.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | namespace viewpane 6 | { 7 | class TreePane : public ViewPane 8 | { 9 | public: 10 | static std::shared_ptr Create(int paneID, UINT uidLabel, bool bReadOnly); 11 | 12 | std::function InitializeCallback = nullptr; 13 | bool containsWindow(HWND hWnd) const noexcept override; 14 | 15 | controls::StyleTreeCtrl m_Tree; 16 | 17 | private: 18 | void Initialize(_In_ CWnd* pParent, _In_ HDC hdc) override; 19 | HDWP DeferWindowPos(_In_ HDWP hWinPosInfo, _In_ int x, _In_ int y, _In_ int width, _In_ int height) override; 20 | void CommitUIValues() override{}; 21 | int GetFixedHeight() override; 22 | int GetLines() override { return collapsed() ? 0 : 4; } 23 | }; 24 | } // namespace viewpane -------------------------------------------------------------------------------- /UI/addinui.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace ui::addinui 5 | { 6 | EXTERN_C _Check_return_ __declspec(dllexport) HRESULT 7 | __cdecl SimpleDialog(_In_z_ LPWSTR szTitle, _Printf_format_string_ LPWSTR szMsg, ...); 8 | EXTERN_C _Check_return_ __declspec(dllexport) HRESULT 9 | __cdecl ComplexDialog(_In_ LPADDINDIALOG lpDialog, _Out_opt_ LPADDINDIALOGRESULT* lppDialogResult); 10 | EXTERN_C __declspec(dllexport) void __cdecl FreeDialogResult(_In_ LPADDINDIALOGRESULT lpDialogResult); 11 | 12 | _Check_return_ ULONG ExtendAddInMenu(HMENU hMenu, ULONG ulAddInContext); 13 | _Check_return_ LPMENUITEM GetAddinMenuItem(HWND hWnd, UINT uidMsg) noexcept; 14 | void InvokeAddInMenu(_In_opt_ LPADDINMENUPARAMS lpParams); 15 | } // namespace ui::addinui -------------------------------------------------------------------------------- /UI/file/exporter.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace file 4 | { 5 | enum class exportType 6 | { 7 | text = 0, 8 | msgAnsi = 1, 9 | msgUnicode = 2, 10 | eml = 3, 11 | emlIConverter = 4, 12 | tnef = 5 13 | }; 14 | 15 | class exporter 16 | { 17 | public: 18 | bool init(CWnd* _pParentWnd, bool bMultiSelect, LPADRBOOK _lpAddrBook); 19 | HRESULT exportMessage(LPMESSAGE lpMessage); 20 | 21 | private: 22 | CWnd* pParentWnd{}; 23 | LPADRBOOK lpAddrBook{}; 24 | bool bPrompt{}; 25 | exportType exportType{}; 26 | std::wstring szExt{}; 27 | std::wstring szDotExt{}; 28 | std::wstring szFilter{}; 29 | std::wstring dir{}; 30 | }; 31 | } // namespace file -------------------------------------------------------------------------------- /UI/profile.h: -------------------------------------------------------------------------------- 1 | // Stand alone MAPI profile functions 2 | #pragma once 3 | 4 | namespace ui::profile 5 | { 6 | std::wstring LaunchProfileWizard(_In_ HWND hParentWnd, ULONG ulFlags, _In_ const std::wstring& szServiceNameToAdd); 7 | 8 | void DisplayMAPISVCPath(_In_ CWnd* pParentWnd); 9 | std::wstring GetMAPISVCPath(); 10 | 11 | void AddServicesToMapiSvcInf(); 12 | void RemoveServicesFromMapiSvcInf(); 13 | } // namespace ui::profile -------------------------------------------------------------------------------- /UnitTest/.gitattributes: -------------------------------------------------------------------------------- 1 | *.dat binary 2 | *.dat diff -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ACECONTAINER-1.dat: -------------------------------------------------------------------------------- 1 | 00092400a9081200010500000000000515000000371a6c07352f372aad20fa5b01930100 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ACEFB-1.dat: -------------------------------------------------------------------------------- 1 | 06 1f 3800 03000000 ffffffff 2 | 0A0D0200-0000-0000-C000-000000000046 3 | C02EBC53-53D9-CD11-9752-00AA004AE40E 4 | 01 01 000000000005 0B000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ACEMESSAGE-1.dat: -------------------------------------------------------------------------------- 1 | 05 1f 3800 a9081200 ffffffff 2 | 0A0D0200-0000-0000-C000-000000000046 3 | C02EBC53-53D9-CD11-9752-00AA004AE40E 4 | FF 01 000000000005 0B000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ACEMESSAGE-2.dat: -------------------------------------------------------------------------------- 1 | 01 09 1400 a9081200 01 01 000000000005 0B000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ACL-1.dat: -------------------------------------------------------------------------------- 1 | 0200E000 0600 0000 2 | 00 09 2400 A9081200 010500000000000515000000371A6C07352F372AAD20FA5B01930100 3 | 01 09 2400 16071F00 010500000000000515000000371A6C07352F372AAD20FA5B01930100 4 | 01 09 2400 BF0F1F00 010500000000000515000000271A6C07352F372AAD20FA5BAA830B00 5 | 00 02 2400 A9081200 010500000000000515000000371A6C07352F372AAD20FA5B01930100 6 | 01 02 2400 16C90D00 010500000000000515000000371A6C07352F372AAD20FA5B01930100 7 | 01 02 2400 BFC91F00 010500000000000515000000271A6C07352F372AAD20FA5BAA830B00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ADDITIONALRENENTRYIDSEX-1.dat: -------------------------------------------------------------------------------- 1 | 0180320001002E000000000096614EC66601D211A3B10008C728E7F101004D7FE57B4C92944987F5B588C78CF72D00000265000100000380320001002E000000000096614EC66601D211A3B10008C728E7F101004D7FE57B4C92944987F5B588C78CF72D00000265000200000580320001002E000000000096614EC66601D211A3B10008C728E7F101004D7FE57B4C92944987F5B588C78CF72D000002D8001300000280320001002E000000000096614EC66601D211A3B10008C728E7F101004423BFDC35888C4BACC4B3D80C10040600054F75036F00000480320001002E000000000096614EC66601D211A3B10008C728E7F101004423BFDC35888C4BACC4B3D80C10040600054F75036E00000680320001002E000000000096614EC66601D211A3B10008C728E7F10100FB607ECAC549C44A9151DA03A7BC66B9001A0F59DE7B000007803200 01002E000000000096614EC66601D211A3B10008C728E7F10100D094AF544E42F54A919C624F36579EA80023FB5D000200000880320001002E000000000096614EC66601D211A3B10008C728E7F10100109588ED42DE85428287935E058A904C001A0E620018000000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ADDITIONALRENENTRYIDSEX-2.dat: -------------------------------------------------------------------------------- 1 | 0180320001002f000000000096614EC66601D211A3B10008C728E7F1010 2 | 04D7FE57B4C92944987F5B588C78CF72D00000265000100000380320001002E000000000096614EC66601D211A3B10008C728E7F101004D 7FE57B4C92944987F5B588C78CF72D00000265000200000580320001002E000000000096614EC66601D211A3B10008C728E7F101004D7FE57B4C92944987F5B588C78CF72D000002D8001300000280320001002E00 0000000096614EC66601D211A3B10008C728E7F101004423BFDC35888C4BACC4B3D80C10040600054F75036F00000480320001002E000000000096614EC66601D211A3B10008C728E7F101004423BFDC35888C4BAC C4B3D80C10040600054F75036E00000680320001002E000000000096614EC66601D211A3B10008C728E7F10100FB607ECAC549C44A9151DA03A7BC66B9001A0F59DE7B00000780320001002E000000000096614EC6 6601D211A3B10008C728E7F10100D094AF544E42F54A919C624F36579EA80023FB5D000200000880320001002E000000000096614EC66601D211A3B10008C728E7F10100109588ED42DE85428287935E058A904C00 1A0E620018000000000000 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ADDITIONALRENENTRYIDSEX-3.dat: -------------------------------------------------------------------------------- 1 | 03806800 2 | 0100 3 | 2E000000000096614EC66601D211A3B10008C728E7F101004D 7FE57B4C92944987F5B588C78CF72D0000026500020000 4 | 0100 5 | 2E000000000096614EC66601D211A3B10008C728E7F101004D 7FE57B4C92944987F5B588C78CF72D0000026500020000 6 | 0000 7 | 0000 8 | 9 | 0480320001002E000000000096614EC66601D211A3B10008C728E7F101004D 7FE57B4C92944987F5B588C78CF72D0000026500020000 10 | 0580320001002E000000000096614EC66601D211A3B10008C728E7F101004D 7FE57B4C92944987F5B588C78CF72D000002D800130000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ADDITIONALRENENTRYIDSEX-4.dat: -------------------------------------------------------------------------------- 1 | 03809600 2 | 12345678 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/APPOINTMENTRECURRENCEPATTERN-1.dat: -------------------------------------------------------------------------------- 1 | 043004300B2001000000C021000002000000000000001000000021200000120000000000000004000000806ADB0C40B9DB0C0008DC0CC056DC0C01000000806ADB0C80F4D80CA056DE0C063000000930000066030000A20300000100E66DDB0C226EDB0CE66DDB0C820201000000000000000000000004000000800100000000000000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/APPOINTMENTRECURRENCEPATTERN-2.dat: -------------------------------------------------------------------------------- 1 | 043004300B20010000002049000002000000000000000200000021200000060000000000000000000000000000004081D70C000BD90C0630000009300000480300008403000000000000000000000000D90C80A8D90C40F7D90C4081D70CDF80E95A0630000009300000480300008403000004008884D70CC484D70C8884D70C82000100000000000000480ED90C840ED90C480ED90C0000C8ABD90C04ACD90CC8ABD90C000088FAD90CC4FAD90C88FAD90C10022F002E004C697665204D656574696E67207C20466172676F3A2054656C6567726170682032207C204C433A20322F323030310000000004000000000000000000000004000000000000000000000004000000000000000000000004000000000000000000000088FAD90CC4FAD90C88FAD90C2E004C0069007600650020004D0065006500740069006E00670020007C00200046006100720067006F003A002000540065006C006500670072006100700068002000320020007C0020004C0043003A00200032002F0032003000300031000000000000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/CONVERSATIONINDEX-1.dat: -------------------------------------------------------------------------------- 1 | 01 2 | CAE55B20E5 3 | FEE284D557D84277BAB585FBD4BB2BE9 4 | 00006F3E 5 | 90 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/CONVERSATIONINDEX-2.dat: -------------------------------------------------------------------------------- 1 | 01CB8689063677A2CE55DFB04D199A5F3C0723B540DB00005D407000664616D000000D12300000C7FED000001445300236274CB00000186550 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/CONVERSATIONINDEX-3.dat: -------------------------------------------------------------------------------- 1 | 01CA697FF84A28B660A5B37D4058B462AF2C2CE5CCA600011C476000005ABB40001A3E6490000246F8A00005A625B00009B7BBF0 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/CONVERSATIONINDEX-4.dat: -------------------------------------------------------------------------------- 1 | 01 2 | CA697FF84A 3 | 28B660A5B37D4058B462AF2C2CE5CCA6 4 | 80011C4760 5 | 00005ABB40 6 | 001A3E6490 7 | 000246F8A0 8 | 0005A625B0 9 | 0009B7BBF0 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/DECODEENTRYID-1.dat: -------------------------------------------------------------------------------- 1 | 00AC00AC00AC00ACF9ACE2AC99AC04AC83AC42AC6DAC42AC85AC8FAC0BACBEACBDACFFAC27AC7AACA4AC00AC20AC00AC -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENCODEENTRYID-1.dat: -------------------------------------------------------------------------------- 1 | 00000000F9E2990483426D42858F0BBEBDFF277AA4002000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-1.dat: -------------------------------------------------------------------------------- 1 | 2 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001B55FA20AA6611CD9BC800AA002FC45A0C000000424F4F4558324B37002F6F3D4669727374204F7267616E697A6174696F6E2F6F753D45786368616E67652041646D696E6973747261746976652047726F7570202846594449424F484632335350444C54292F636E3D526563697069656E74732F636E3D41646D696E6973747261746F7200 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-10.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 0000000096614EC66601D211A3B10008C728E7F10100C3B68E10F77511CEB4CD00AA00BBB6E60000000000050000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-11.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 00000000FCF2CFBB2398134F93883E49A74F94B601007A83AFC80E0A5A429FAF06395C2813D400000536281F0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-12.dat: -------------------------------------------------------------------------------- 1 | 2 | 000000001A447390AA6611CD9BC800AA002FC45A0300790431D57047B94A8B692E587C735EEE0000000000060000 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-13.dat: -------------------------------------------------------------------------------- 1 | 2 | 0000000096614EC66601D211A3B10008C728E7F1070085FA5C86FCE6D111A3A60008C728E7F1000000019EBA00004423BFDC35888C4BACC4B3D80C10040600240E16BDE90000 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-14.dat: -------------------------------------------------------------------------------- 1 | 2 | 00000000FCF2CFBB2398134F93883E49A74F94B607007A83AFC80E0A5A429FAF06395C2813D400000536281B00007A83AFC80E0A5A429FAF06395C2813D40007D676A15F0000 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-15.dat: -------------------------------------------------------------------------------- 1 | 2 | 000000001A447390AA6611CD9BC800AA002FC45A0900790431D57047B94A8B692E587C735EEE003C1F16617E0000790431D57047B94A8B692E587C735EEE003C1F1B833F0000 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-16.dat: -------------------------------------------------------------------------------- 1 | 00000000DCA740C8C042101AB4B908002B2FE18201000000000000002F4F3D6D6963726F736F66742F4F553D666172656173742F636E3D526563697069656E74732F636E3D6578616D706C6500 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-17.dat: -------------------------------------------------------------------------------- 1 | 00000000812B1FA4BEA310199D6E00DD010F5402000001102761646D696E406578616D706C652E636F6D2700534D54500061646D696E406578616D706C652E636F6D00 2 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-18.dat: -------------------------------------------------------------------------------- 1 | 2 | 00000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F000020A7A751D553394AB9D41BB443250C4700000048765400001B0300 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-19.dat: -------------------------------------------------------------------------------- 1 | 2 | 000000000FC47A51C32F264AAA1CD7F2BA4F1D7A82800000 3 | 4 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-2.dat: -------------------------------------------------------------------------------- 1 | 2 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001B55FA20AA6611CD9BC800AA002FC45A0C000000534552564552002F6F3D6D6963726F736F66742F6F753D736F6D657468696E672F636E3D526563697069656E74732F636E3D313233343500 3 | 4 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-20.dat: -------------------------------------------------------------------------------- 1 | 2 | 000000000FC47A51C32F264AAA1CD7F2BA4F1D7A44002000 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-21.dat: -------------------------------------------------------------------------------- 1 | 2 | 00000000DCA740C8C042101AB4B908002B2FE18201000000010000002F4F3D4D4943524F534F46542F4F553D536F6D657468696E672F636E3D65786368616E67655F646C732F636E3D7B39393246373645362D373142452D343231352D424142342D4633374138414231353841377D00 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-22.dat: -------------------------------------------------------------------------------- 1 | 2 | 00000000DCA740C8C042101AB4B908002B2FE18201000000010000002F4F3D4D4943524F534F46542F4F553D536F6D657468696E672F636E3D65786368616E67655F646C732F636E3D7B39393246373645362D373142452D343231352D424142342D4633374138414231353841377D00 3 | 4 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-23.dat: -------------------------------------------------------------------------------- 1 | 2 | 00000000DCA740C8C042101AB4B908002B2FE18201000000000100002F00 3 | 4 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-24.dat: -------------------------------------------------------------------------------- 1 | 2 | 00000000DCA740C8C042101AB4B908002B2FE18201000000000100002F677569643D37353631306165363433353866333439383431646137 3 | EF000000198262C0AA6611CD9BC800AA002FC45A06000000AF0A000000019EBA280B00240E16BDBB 4 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-25.dat: -------------------------------------------------------------------------------- 1 | 2 | 87000000A13B2B00CE5ECA4D976D076EC81BA4A4010000000000000022BB0000 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-26.dat: -------------------------------------------------------------------------------- 1 | 2 | 87000000A13B2B00CE5ECA4D976D076EC81BA4A40100000001000000BEF12D00 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-27.dat: -------------------------------------------------------------------------------- 1 | 2 | 00000000C091ADD3519DCF11A4A900AA0047FAA4C30000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F0000318FBDF46ED6B44C9F12881F0692F761000000BF55160000 3 | 4 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-28.dat: -------------------------------------------------------------------------------- 1 | 2 | 00000000C091ADD3519DCF11A4A900AA0047FAA4C30000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F0000318FBDF46ED6B44C9F12881F0692F761000000BF55160000 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-29.dat: -------------------------------------------------------------------------------- 1 | 2 | 00000000C091ADD3519DCF11A4A900AA0047FAA4B500000000DCA740C8C042101AB4B908002B2FE18201000000000000002F6F3D6D6963726F736F66742F6F753D736F6D657468696E672F636E3D526563697069656E74732F636E3D313233343500 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-3.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 00000000C091ADD3519DCF11A4A900AA0047FAA4B500000000DCA740C8C042101AB4B908002B2FE18201000000000000002F6F3D6D6963726F736F66742F6F753D736F6D657468696E672F636E3D526563697069656E74732F636E3D313233343500 4 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-30.dat: -------------------------------------------------------------------------------- 1 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001B55FA20AA6611CD9BC800AA002FC45A0C000000534552564552002F4F3D6D6963726F736F66742F4F553D736F6D657468696E672F636E3D526563697069656E74732F636E3D736F6D65626F647900D83521F3830000000100000014000000000000002F6F3D6D6963726F736F66742F6F753D45786368616E67652041646D696E6973747261746976652047726F7570202846594449424F484632335350444C54292F636E3D436F6E66696775726174696F6E2F636E3D536572766572732F636E3D534552564552000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-31.dat: -------------------------------------------------------------------------------- 1 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001C830210AA6611CD9BC800AA002FC45A0600000053452D52562D455200D83521F3D80000000100000014000000820000002F6F3D6D6963726F736F66742F6F753D45786368616E67652041646D696E6973747261746976652047726F7570202846594449424F484632335350444C54292F636E3D436F6E66696775726174696F6E2F636E3D536572766572732F636E3D53455256455200730065002D00720076002D00650072002E0073006F006D0065007400680069006E0067002E0063006F00720070002E006500780061006D0070006C0065002E0063006F006D0000000000 2 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-32.dat: -------------------------------------------------------------------------------- 1 | 00 00 00 00 38 a1 bb 10-05 e5 10 1a a1 bb 08 00 2 | 2b 2a 56 c2 00 00 45 4d-53 4d 44 42 2e 44 4c 4c 3 | 00 00 00 00 00 00 00 00-1b 55 fa 20 aa 66 11 cd 4 | 9b c8 00 aa 00 2f c4 5a-08 00 00 00 53 45 52 56 5 | 45 52 00 2f 6f 3d 6f 72-67 2f 6f 75 3d 45 78 63 6 | 68 61 6e 67 65 20 41 64-6d 69 6e 69 73 74 72 61 7 | 74 69 76 65 20 47 72 6f-75 70 20 28 46 59 44 49 8 | 42 4f 48 46 32 33 53 50-44 4c 54 29 2f 63 6e 3d 9 | 52 65 63 69 70 69 65 6e-74 73 2f 63 6e 3d 73 6f 10 | 6d 65 20 63 6e 00 d8 35-21 f3 95 00 00 00 01 00 11 | 00 00 14 00 00 00 93 00-00 00 2f 6f 3d 6f 72 67 12 | 2f 6f 75 3d 45 78 63 68-61 6e 67 65 20 41 64 6d 13 | 69 6e 69 73 74 72 61 74-69 76 65 20 47 72 6f 75 14 | 70 20 28 46 59 44 49 42-4f 48 46 32 33 53 50 44 15 | 4c 54 29 2f 63 6e 3d 43-6f 6e 66 69 67 75 72 61 16 | 74 69 6f 6e 2f 63 6e 3d-53 65 72 76 65 72 73 2f 17 | 63 6e 3d 53 45 52 56 45-52 2f 63 6e 3d 4d 69 63 18 | 72 6f 73 6f 66 74 20 50-72 69 76 61 74 65 20 4d 19 | 44 42 00 00 00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-33.dat: -------------------------------------------------------------------------------- 1 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001C830210AA6611CD9BC800AA002FC45A0600000055534552002F6F3D6F72672F6F753D45786368616E67652041646D696E6973747261746976652047726F7570202846594449424F484632335350444C54292F636E3D526563697069656E74732F636E3D4D79526F6F6D00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-34.dat: -------------------------------------------------------------------------------- 1 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001C830210AA6611CD9BC800AA002FC45A06000000534552564552313031002F6F3D6D6963726F736F66742F6F753D736F6D657468696E672F636E3D526563697069656E74732F636E3D313233343500 2 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-35.dat: -------------------------------------------------------------------------------- 1 | 00000000FE42AA0A18C71A10E8850B651C2400000300000003000000A06D377943EB164498340BAD544EFF72000000009EFDFC3C2E3A254C9C086F5D93F6E96342810000 2 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-36.dat: -------------------------------------------------------------------------------- 1 | 00000000FE42AA0A18C71A10E8850B651C24000003000000030000002FE80A7D86B17949BAFD7DBE4B03BF380000000096614EC66601D211A3B10008C728E7F10100831B4C2B03E7D1118FB200805F9F2EAC000000481F4F0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-37.dat: -------------------------------------------------------------------------------- 1 | 00000000FE42AA0A18C71A10E8850B651C2400000300000030000000A06D377943EB164498340BAD544EFF72000000009EFDFC3C2E3A254C9C086F5D93F6E96342810000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-38.dat: -------------------------------------------------------------------------------- 1 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001B55FA20AA6611CD9BC800AA002FC45A0C000000555345522E4E414D45406578616D706C652E636F6D002F6F3D4F52472F6F753D45786368616E67652041646D696E6973747261746976652047726F7570202846594449424F484632335350444C54292F636E3D526563697069656E74732F636E3D557365722E4E616D6562646563303035322D643133302D346662322D626134622D61336563643262356461323700E94632F440000000020000001000000055005300450052002E004E0041004D00450040006500780061006D0070006C0065002E0063006F006D0000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-39.dat: -------------------------------------------------------------------------------- 1 | 112233 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-4.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001B55FA20AA6611CD9BC800AA002FC45A0C000000534552564552002F6F3D6D6963726F736F66742F6F753D6E6F727468616D65726963612F636E3D526563697069656E74732F636E3D313233343500 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-40.dat: -------------------------------------------------------------------------------- 1 | 00000000812B1FA4BEA310199D6E00DD010F5402000001806E006F0062006F00640079005F0040006D006900630072006F0073006F00660074002E0063006F006D00000053004D005400500000006E006F0062006F00640079005F0040006D006900630072006F0073006F00660074002E0063006F006D000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-5.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 0000000038A1BB1005E5101AA1BB08002B2A56C200006D737073742E646C6C00000000004E495441F9BFB80100AA0037D96E0000000043003A005C004F00660066006C0069006E006500530074006F007200650073005C004F00660066006C0069006E00650020002D00200032003000300034002D0032003000300035002E007000730074000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-6.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001C830210AA6611CD9BC800AA002FC45A0600000053455256455231303200 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-7.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001C830210AA6611CD9BC800AA002FC45A06000000424F4F4558324B3700 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-8.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 0000000096614EC66601D211A3B10008C728E7F1010085FA5C86FCE6D111A3A60008C728E7F1000000019EBA0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYID-9.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 0000000096614EC66601D211A3B10008C728E7F1010085FA5C86FCE6D111A3A60008C728E7F1000000019EBA0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYLIST-1.dat: -------------------------------------------------------------------------------- 1 | 01000000486C10262E000000506C10260000000096614EC66601D211A3B10008C728E7F1010085FA5C86FCE6D111A3A60008C728E7F1000000019EBE0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/ENTRYLIST-2.dat: -------------------------------------------------------------------------------- 1 | 010000009068A6062E0000009868A6060000000096614EC66601D211A3B10008C728E7F1010085FA5C86FCE6D111A3A60008C728E7F1000000019EBB0000 2 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/EXTENDEDFOLDERFLAGS-1.dat: -------------------------------------------------------------------------------- 1 | 010400001000060403000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/EXTENDEDFOLDERFLAGS-2.dat: -------------------------------------------------------------------------------- 1 | 010400801A00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/EXTENDEDRULEACTION-1.dat: -------------------------------------------------------------------------------- 1 | 01007E8384000000012903020000000000C0000000000000467268007400740070003A002F002F0073006300680065006D00610073002E006D006900630072006F0073006F00660074002E0063006F006D002F00650078006300680061006E00670065002F006A0075006E006B0065006D00610069006C006D006F00760065007300740061006D007000000001000000020000004F000000010000000000000000100000006A07EF6249312049B80C4C3EE1CF26982E00000000000000C31A1BB1FC55D34693186631C218FEB60100CDC2D035C80A7848AA532A41B8AAE17F00000000012200001100000009000000000000000003007E830ADC7B37 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/EXTENDEDRULECONDITION-1.dat: -------------------------------------------------------------------------------- 1 | 0000030100000002011D0C02011D0C100000007465737430314074657374312E434F4D -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/EXTENDEDRULECONDITION-3.dat: -------------------------------------------------------------------------------- 1 | 00000A040300006001000000020101006D00000000000000FE42AA0A18C71A10E8850B651C2400000300000004000000000000004600000000000000C31A1BB1FC55D34693186631C218FEB60700CDC2D035C80A7848AA532A41B8AAE17F00000000010E0000CDC2D035C80A7848AA532A41B8AAE17F000000001CCC0000A505681F000100 2 | 740065007300740040006500780061006D0070006C0065002E0063006F006D00 3 | 0000 4 | 030000390000000001040402011D0C02011D0C 5 | 16000000 6 | 534D54503A54455354404558414D504C452E434F4D00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/FBSECURITYDESCRIPTOR-1.dat: -------------------------------------------------------------------------------- 1 | 0800030000000000010004801400000020000000000000002C00000001010000000000051200000001010000000000051200000002001C00010000000002140001000000010100000000000100000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/FBSECURITYDESCRIPTOR-2.dat: -------------------------------------------------------------------------------- 1 | 0800030000000000010004801400000020000000000000002C00000001010000000000051200000001010000000000051200000002004000020000000002240003000000010500000000000515000000EFA475449104D8672FCB86C2AF8B30000002140001000000010100000000000100000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/FLATENTRYLIST-1.dat: -------------------------------------------------------------------------------- 1 | 030000005C0100006D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F0000109588ED42DE85428287935E058A904C0016DE1CB80E0000000000007C006D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F0000FB607ECAC549C44A9151DA03A7BC66B9001B181E8A1500000000000000006D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F000020A7A751D553394AB9D41BB443250C470000004876C600000000001F3521 2 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/FLATENTRYLIST-2.dat: -------------------------------------------------------------------------------- 1 | 030000005C0100006D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB20C000000481F4F0000109588ED42DE85428287935E058A904C0016DE1CB80E0000000000007C006D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F0000FB607ECAC549C44A9151DA03A7BC66B9001B181E8A1500000000000000006D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F000020A7A751D553394AB9D41BB443250C470000004876C600000000001F3521 2 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/FLATENTRYLIST-3.dat: -------------------------------------------------------------------------------- 1 | 000000005C0100006D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB20C000000481F4F0000109588ED42DE85428287935E058A904C0016DE1CB80E0000000000007C006D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F0000FB607ECAC549C44A9151DA03A7BC66B9001B181E8A1500000000000000006D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F000020A7A751D553394AB9D41BB443250C470000004876C600000000001F3521 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/FOLDERUSERFIELDS-1.dat: -------------------------------------------------------------------------------- 1 | 02000000010000000A00546578744669656C64312903020000000000C00000000000004607000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000010000000A0054006500780074004600690065006C00640031002903020000000000C000000000000046070000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/FOLDERUSERFIELDS-3.dat: -------------------------------------------------------------------------------- 1 | 0000000000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/FOLDERUSERFIELDS-4.dat: -------------------------------------------------------------------------------- 1 | 01000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/FOLDERUSERFIELDS-5.dat: -------------------------------------------------------------------------------- 1 | 0000000001000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/GLOBALOBJECTID-1.dat: -------------------------------------------------------------------------------- 1 | 040000008200E00074C5B7101A82E00800000000F0DB09F532E5CA01000000000000000010000000E73C73F73F1C3941BDD6450F640703F3 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/GLOBALOBJECTID-2.dat: -------------------------------------------------------------------------------- 1 | 040000008200E00074C5B7101A82E00807DB0112C0A52CE8E7DFCA01000000000000000010000000FFAFECEBDB4A2E4FA02EBC759661827B -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/NICKNAMECACHE-3.dat: -------------------------------------------------------------------------------- 1 | 0DF0ADBA0A0000000100000001000000FFFFFFFF1F00016090FD1300801AE304000000002C0000006A0061006E00650073006D00690074006800400063006F006E0074006F0073006F002E006F0072006700000001000000AAabcd123456781234 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/NICKNAMECACHE-4.dat: -------------------------------------------------------------------------------- 1 | 0DF0ADBA0A00000001000000FFFFFFFFFFFFFFFF1F00016090FD1300801AE304000000002C0000006A0061006E00650073006D00690074006800400063006F006E0074006F0073006F002E006F0072006700000001000000AAabcd123456781234 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/NTSD-1.dat: -------------------------------------------------------------------------------- 1 | 0800 2 | 0300 3 | 00000000 4 | 5 | 01 6 | 00 7 | 0780 8 | F4000000 9 | 00010000 10 | 00000000 11 | 14000000 12 | 13 | 02 14 | 00 15 | E000 16 | 0600 17 | 0000 18 | 00092400A9081200010500000000000515000000371A6C07352F372AAD20FA5B01930100 19 | 0109240016071F00010500000000000515000000371A6C07352F372AAD20FA5B01930100 20 | 01092400BF0F1F00010500000000000515000000271A6C07352F372AAD20FA5BAA830B00 21 | 00022400A9081200010500000000000515000000371A6C07352F372AAD20FA5B01930100 22 | 0102240016C90D00010500000000000515000000371A6C07352F372AAD20FA5B01930100 23 | 01022400BFC91F00010500000000000515000000271A6C07352F372AAD20FA5BAA830B00 24 | 25 | 010100000000000512000000 26 | 27 | 01020000000000052000000020020000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/NTSD-2.dat: -------------------------------------------------------------------------------- 1 | 08000300000000000100078064000000700000000000000014000000020050000200000001092400BF0F1F00010500000000000515000000271A6C07352F372AAD20FA5BAA830B0001022400BFC91F00010500000000000515000000271A6C07352F372AAD20FA5BAA830B0001010000000000051200000001020000000000052000000020020000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/NTSD-3.dat: -------------------------------------------------------------------------------- 1 | 0800030000000000010007801C000000280000000000000014000000020008000000000001010000000000051200000001020000000000052000000020020000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/NTSD-4.dat: -------------------------------------------------------------------------------- 1 | B606B07ABB6079AB2082C760 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/NTSD-5.dat: -------------------------------------------------------------------------------- 1 | 0A00B07ABB6079AB2082C760 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PCL-1.dat: -------------------------------------------------------------------------------- 1 | 14F247869D7436E64FA4CC56F8B480928000000006 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PCL-2.dat: -------------------------------------------------------------------------------- 1 | 16373B21412876FE448E8D71BE34CC3154000061E71533166F267F483887D948AAFCA58AB2BC910F0000DC0B3A12148FABC61C6C4C5E47930B9B30AA0ED4EB00005CA8 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PCL-3.dat: -------------------------------------------------------------------------------- 1 | 16373B21412876FE448E8D71BE34CC315400004B0D991F14D8512C0F622D464192E5C355973A6236000009E8 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTIES-1.dat: -------------------------------------------------------------------------------- 1 | 1F0001301E004D006900730074006500720020004D00690073007400740065007200000040000730B0355508EC87D301 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTIES-2.dat: -------------------------------------------------------------------------------- 1 | 0201FF0F510000000000DCA740C8C042101AB4B908002B2FE18201000000000000002F6F3D6D6963726F736F66742F6F753D6E6F727468616D65726963612F636E3D526563697069656E74732F636E3D35353136373300 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTIES-3.dat: -------------------------------------------------------------------------------- 1 | 0300FE0F06000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTIES-4.dat: -------------------------------------------------------------------------------- 1 | 0B000F0E0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTIES-5.dat: -------------------------------------------------------------------------------- 1 | 0A00F90F0F010480 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTIES-6.dat: -------------------------------------------------------------------------------- 1 | 0300FE0F06000000 2 | 0300003900000000 3 | 1F0003306A002F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F00 4 | 6F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F006F000000 5 | 0300150C01000000 6 | 7 | 1F00013024006600660066006600660066006600660066006600660066006600660066006600660000001F00023006004500580000000201FF0F510000000000DCA740C8C042101AB4B908002B2FE18201000000000000002F666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666000300FE0F0600000003000039000000001F0003306A002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F002F000000 8 | 0300150C01000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTIES-7.dat: -------------------------------------------------------------------------------- 1 | 1F0001301E004A00610073006F006E0020004A006F0068006E00730074006F006E000000 2 | 1F0002300600450058000000 3 | 0201FF0F510000000000DCA740C8C042101AB4B908002B2FE18201000000000000002F6F3D6D6963726F736F66742F6F753D6E6F727468616D65 4 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTIES-8.dat: -------------------------------------------------------------------------------- 1 | 0211e436 2 | 0200 3 | AD000000 4 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001B55FA20AA6611CD9BC800AA002FC45A0C000000424F4F4558324B37002F6F3D4669727374204F7267616E697A6174696F6E2F6F753D45786368616E67652041646D696E6973747261746976652047726F7570202846594449424F484632335350444C54292F636E3D526563697069656E74732F636E3D41646D696E6973747261746F7200 5 | 74000000 6 | 0000000038A1BB1005E5101AA1BB08002B2A56C20000454D534D44422E444C4C00000000000000001B55FA20AA6611CD9BC800AA002FC45A0C000000534552564552002F6F3D6D6963726F736F66742F6F753D736F6D657468696E672F636E3D526563697069656E74732F636E3D313233343500 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTYDEFINITIONSTREAM-1.dat: -------------------------------------------------------------------------------- 1 | 03010400000045000000080000000000030066006F006F0003666F6F0000000000000000070000000366006F006F0000000000450000000800000000000D004D0079004D00460043004D00410050004900500072006F0070000D4D794D46434D41504950726F7000000000000000001B0000000D4D0079004D00460043004D00410050004900500072006F00700000000000450000000800000000000B004D0079005500730065007200500072006F00700031000B4D795573657250726F70310000000000000000170000000B4D0079005500730065007200500072006F0070003100000000004500000008000000000005005400650078007400790005546578747900000000000000000B000000055400650078007400790000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTYDEFINITIONSTREAM-4.dat: -------------------------------------------------------------------------------- 1 | 2 | 02010400000045000000080000000000030066006F006F0003666F6F00000000450000000800000000000D004D0079004D00460043004D00410050004900500072006F0070000D4D794D46434D41504950726F7000000000450000000800000000000B004D0079005500730065007200500072006F00700031000B4D795573657250726F7031000000004500000008000000000005005400650078007400790005546578747900000000 3 | 4 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTYDEFINITIONSTREAM-6.dat: -------------------------------------------------------------------------------- 1 | 030101000000450000000800000000000F00630072006D005400650073007400500072006F00700065007200740079000F63726D5465737450726F706572747900000000000000001F0000000F630072006D005400650073007400500072006F0070006500720074007900000000004500000008000000000016004D00610069006C004500780070007200650073007300490067006E006F007200650045006D00610069006C00164D61696C4578707265737349676E6F7265456D61696C00000000000000002D000000164D00610069006C004500780070007200650073007300490067006E006F007200650045006D00610069006C0000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTYDEFINITIONSTREAM-7.dat: -------------------------------------------------------------------------------- 1 | 0301 2 | 02000000 3 | 45000000 4 | 0800 5 | 00000000 6 | 0F00 7 | 630072006D005400650073007400500072006F0070006500720074007900 8 | 0F 9 | 63726D5465737450726F7065727479 10 | 00 11 | 00 12 | 00 13 | 00 14 | 00000000 15 | 21000000 16 | FF 17 | 0F00 18 | 630072006D005400650073007400500072006F0070006500720074007900 19 | 00000000 20 | 45000000 21 | 0800 22 | 00000000 23 | 0F00 24 | 630072006D005400650073007400500072006F0070006500720074007900 25 | 0F 26 | 63726D5465737450726F7065727479 27 | 00 28 | 00 29 | 00 30 | 00 31 | 00000000 32 | 1F000000 33 | 0F 34 | 630072006D005400650073007400500072006F0070006500720074007900 35 | 00000000 36 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/PROPERTYDEFINITIONSTREAM-8.dat: -------------------------------------------------------------------------------- 1 | 0301 2 | 02000000 3 | 45000000 4 | 0800 5 | 00000000 6 | 0F00 7 | 630072006D005400650073007400500072006F0070006500720074007900 8 | 0F 9 | 63726D5465737450726F7065727479 10 | 00 11 | 00 12 | 00 13 | 00 14 | 00000000 15 | 21000000 16 | FF 17 | 0F00 18 | 630072006D005400650073007400500072006F0070006500720074007900 19 | 00000000 20 | 45000000 21 | 0800 22 | 00000000 23 | 0F00 24 | 630072006D005400650073007400500072006F0070006500720074007900 25 | 0F 26 | 63726D5465737450726F7065727479 27 | 00 28 | 00 29 | 00 30 | 00 31 | 00000000 32 | 1F000000 33 | 0F 34 | 630072006D005400650073007400500072006F0070006500720074007900 35 | 1F000000 36 | 0F 37 | 630072006D005400650073007400500072006F0070006500720074007900 38 | 00000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/RECURRENCEPATTERN-1.dat: -------------------------------------------------------------------------------- 1 | 043004300B2001000000C021000002000000000000001000000021200000120000000000000004000000806ADB0C40B9DB0C0008DC0CC056DC0C01000000806ADB0C80F4D80CA056DE0C -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/RECURRENCEPATTERN-2.dat: -------------------------------------------------------------------------------- 1 | 043004300B20010000002049000002000000000000000200000021200000060000000000000000000000000000004081D70C000BD90C -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/RECURRENCEPATTERN-3.dat: -------------------------------------------------------------------------------- 1 | 043004300B2001000000C0210000020000000000000010000000212000000A000000000000000A0000004057D40C00A6D40CC0F4D40C8043D50C4092D50C00E1D50CC02FD60C807ED60C40CDD60C001CD70C050000004057D40C00A6D40CA08CD50C00E1D50C001CD70C4057D40C001CD70C -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/REPORTTAG-1.dat: -------------------------------------------------------------------------------- 1 | 504344464542303900010002000000000000000000000000002E0000000000000096614EC66601D211A3B10008C728E7F1010085FA5C86FCE6D111A3A60008C728E7F1000000019EC0000010000000E866555BC88F2E4AB665769B02770F900100000000 2 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/RESTRICTION-1.dat: -------------------------------------------------------------------------------- 1 | 030000000100000002011D0C02011D0C10007465737430314074657374312E434F4D -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/RESTRICTION-3.dat: -------------------------------------------------------------------------------- 1 | 0A000000 2 | 04000000 3 | 03000060 4 | 01000000 5 | 02010100 6 | 6D00 7 | 00000000FE42AA0A18C71A10E8850B651C2400000300000004000000000000004600000000000000C31A1BB1FC55D34693186631C218FEB60700CDC2D035C80A7848AA532A41B8AAE17F00000000010E0000CDC2D035C80A7848AA532A41B8AAE17F000000001CCC0000A50568 8 | 1F000100 9 | 2200740065007300740040006500780061006D0070006C0065002E0063006F006D000000 10 | 03000039 11 | 00000000 12 | 01 13 | 04000000 14 | 04000000 15 | 02011D0C 16 | 02011D0C 17 | 1600 18 | 534D54503A54455354404558414D504C452E434F4D00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/RULECONDITION-1.dat: -------------------------------------------------------------------------------- 1 | 0000030100000002011D0C02011D0C100000007465737430314074657374312E434F4D -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/RULECONDITION-3.dat: -------------------------------------------------------------------------------- 1 | 00000A040300006001000000020101006D00000000000000FE42AA0A18C71A10E8850B651C2400000300000004000000000000004600000000000000C31A1BB1FC55D34693186631C218FEB60700CDC2D035C80A7848AA532A41B8AAE17F00000000010E0000CDC2D035C80A7848AA532A41B8AAE17F000000001CCC0000A505681F000100 2 | 740065007300740040006500780061006D0070006C0065002E0063006F006D00 3 | 0000 4 | 030000390000000001040402011D0C02011D0C 5 | 16000000 6 | 534D54503A54455354404558414D504C452E434F4D00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SEARCHFOLDERDEFINITION-1.dat: -------------------------------------------------------------------------------- 1 | 041000004800000000000000000000000000000000003E00000001000000486C10262E000000506C10260000000096614EC66601D211A3B10008C728E7F1010085FA5C86FCE6D111A3A60008C728E7F1000000019EBE00000000000003000000210001001F0037001F0037000A005400650073007400000000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SEARCHFOLDERDEFINITION-2.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 0410000052000000000000000941006C006C0020004900740065006D00730000000000010000000F4D0072002000540068006100740020004700750079007A007A007A007A003E0000000100000020A230122E00000028A230120000000096614EC66601D211A3B10008C728E7F1010085FA5C86FCE6D111A3A60008C728E7F1000000019EBB00000000000098000000000000000100CEFA01000000340000800000000000000000000000000200000000000000000000000000000000000000020000000000000000000000000000003C00008010000000000000000000000000000000000000000000000000000000000000000000000002000000000000000200000000000000080000001800008000000000EFBEADDEEFBEAD1100000000E4040000040000800000000000000000 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SEARCHFOLDERDEFINITION-4.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 041000004800000000000000000000000001000000003E0000000100000020E91D022E00000028E91D020000000096614EC66601D211A3B10008C728E7F1010085FA5C86FCE6D111A3A60008C728E7F1000000019EBB000000000000080000001F10108000000000 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SEARCHFOLDERDEFINITION-7.dat: -------------------------------------------------------------------------------- 1 | 04100000 2 | 40000000 3 | 00000000 4 | FF 0100 5 | 6100 6 | 01000000 7 | FF 8 | 00000000 9 | 10 | FF 0200 11 | 61006200 12 | 13 | 3E000000 14 | 01000000 15 | 486C1026 16 | 17 | 2E000000 18 | 506C1026 19 | 0000000096614EC66601D211A3B10008C728E7F1010085FA5C86FCE6D111A3A60008C728E7F1000000019EBE0000 20 | 21 | 00000000 22 | 00000000 23 | 24 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SECURITYDESCRIPTOR-1.dat: -------------------------------------------------------------------------------- 1 | 01000780 2 | F4000000 3 | 00010000 4 | 00000000 5 | 14000000 6 | 0200E000 0600 0000 7 | 00 09 2400 A9081200 010500000000000515000000371A6C07352F372AAD20FA5B01930100 8 | 01 09 2400 16071F00 010500000000000515000000371A6C07352F372AAD20FA5B01930100 9 | 01 09 2400 BF0F1F00 010500000000000515000000271A6C07352F372AAD20FA5BAA830B00 10 | 00 02 2400 A9081200 010500000000000515000000371A6C07352F372AAD20FA5B01930100 11 | 01 02 2400 16C90D00 010500000000000515000000371A6C07352F372AAD20FA5B01930100 12 | 01 02 2400 BFC91F00 010500000000000515000000271A6C07352F372AAD20FA5BAA830B00 13 | 010100000000000512000000 14 | 01020000000000052000000020020000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SID-1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/In/SID-1.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SID-2.dat: -------------------------------------------------------------------------------- 1 | 010500000000000515000000A065CF7E784B9B5FE77C8770E7871F00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SID-3.dat: -------------------------------------------------------------------------------- 1 | 010100000000000512000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SID-4.dat: -------------------------------------------------------------------------------- 1 | 010400801A00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SID-5.dat: -------------------------------------------------------------------------------- 1 | 010400001000060403000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SID-6.dat: -------------------------------------------------------------------------------- 1 | FF 01 000000000005 0B000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SID-7.dat: -------------------------------------------------------------------------------- 1 | 010500000000000515000000A065CF7E784B9B5FE77C8770E7871F00123456 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SWAPPEDTODO-1.dat: -------------------------------------------------------------------------------- 1 | 01000000F90000000100000046006F006C006C006F007700200075007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080652B0D80652B0DA86A2B0D01000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/SWAPPEDTODO-2.dat: -------------------------------------------------------------------------------- 1 | 01000000F9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E080E95AE080E95AE080E95A00000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/TASKASSIGNERS-1.dat: -------------------------------------------------------------------------------- 1 | 010000007F0000005A00000000000000DCA740C8C042101AB4B908002B2FE18201000000000000002F4F3D534F4D454F4E4545452F4F553D534F4D45424F4459454C53452F434E3D524543495049454E54532F434E3D412D444455444530393931353133390044756465204775796C6100440075006400650020004700750079006C0061000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/TIMEZONE-1.dat: -------------------------------------------------------------------------------- 1 | 2C01000000000000C4FFFFFF000000000B00000001000200000000000000000000000300000002000200000000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/TIMEZONEDEFINITION-1.dat: -------------------------------------------------------------------------------- 1 | 02013000020015004500610073007400650072006E0020005300740061006E0064006100720064002000540069006D006500020002013E000000D60700000000000000000000000000002C01000000000000C4FFFFFF00000A000000050002000000000000000000040000000100020000000000000002013E000200D70700000000000000000000000000002C01000000000000C4FFFFFF00000B0000000100020000000000000000000300000002000200000000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/TIMEZONEDEFINITION-2.dat: -------------------------------------------------------------------------------- 1 | 02013600020018005500530020004500610073007400650072006E0020005300740061006E0064006100720064002000540069006D006500030002013E000000D50701000000010000000000000000002C01000000000000C4FFFFFF000000000000000000000000000000000000000000000000000000000000000002013E000000D60701000000010000000000000000002C01000000000000C4FFFFFF00000A000000050002000000000000000000040000000100020000000000000002013E000200D70701000000010000000000000000002C01000000000000C4FFFFFF00000B0000000100020000000000000000000300000002000200000000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/TIMEZONEDEFINITION-3.dat: -------------------------------------------------------------------------------- 1 | 02013000020015004500610073007400650072006E0020005300740061006E0064006100720064002000540069006D006500000002013E000000D60700000000000000000000000000002C01000000000000C4FFFFFF00000A000000050002000000000000000000040000000100020000000000000002013E000200D70700000000000000000000000000002C01000000000000C4FFFFFF00000B0000000100020000000000000000000300000002000200000000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/VERBSTREAM-1.dat: -------------------------------------------------------------------------------- 1 | 02010400000000000000055265706C790849504D2E4E6F7465074D6573736167650252450500000000000000000100000000000000020000006600000002000000010000000C5265706C7920746F20416C6C0849504D2E4E6F7465074D65737361676502524505000000000000000001000000000000000200000067000000030000000200000007466F72776172641C49504D2E5363686564756C652E4D656574696E672E526571756573740F4D656574696E6720526571756573740246570200000000000000000100000000000000020000006800000004000000030000000F5265706C7920746F20466F6C6465720849504D2E506F737404506F7374000500000000000000000100000000000000020000006C000000080000000401055200650070006C00790002520045000C5200650070006C007900200074006F00200041006C006C0002520045000746006F007200770061007200640002460057000F5200650070006C007900200074006F00200046006F006C0064006500720000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/VERBSTREAM-2.dat: -------------------------------------------------------------------------------- 1 | 02010400000000000000055265706C790849504D2E4E6F7465074D6573736167650252450500000000000000000100000000000000020000006600000002000000010000000C5265706C7920746F20416C6C0849504D2E4E6F7465074D65737361676502524505000000000000000001000000000000000200000067000000030000000200000007466F72776172640849504D2E4E6F7465074D6573736167650246570500000000000000000100000000000000020000006800000004000000030000000F5265706C7920746F20466F6C6465720849504D2E506F737404506F7374000500000000000000000100000000000000020000006C000000080000000401055200650070006C00790002520045000C5200650070006C007900200074006F00200041006C006C0002520045000746006F007200770061007200640002460057000F5200650070006C007900200074006F00200046006F006C0064006500720000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/VERBSTREAM-3.dat: -------------------------------------------------------------------------------- 1 | 02010400000000000000055265706C790849504D2E4E6F7465074D6573736167650252450500000000000000000100000000000000020000006600000002000000010000000C5265706C7920746F20416C6C0849504D2E4E6F7465074D65737361676502524505000000000000000000000000000000000200000067000000030000000200000007466F72776172640849504D2E4E6F7465074D6573736167650246570500000000000000000100000000000000020000006800000004000000030000000F5265706C7920746F20466F6C6465720849504D2E506F737404506F7374000500000000000000000100000000000000020000006C000000080000000401055200650070006C00790002520045000C5200650070006C007900200074006F00200041006C006C0002520045000746006F007200770061007200640002460057000F5200650070006C007900200074006F00200046006F006C0064006500720000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/VERBSTREAM-4.dat: -------------------------------------------------------------------------------- 1 | 02010600000000000000055265706C790849504D2E4E6F7465074D6573736167650252450500000000000000000100000000000000020000006600000002000000010000000C5265706C7920746F20416C6C0849504D2E4E6F7465074D65737361676502524505000000000000000001000000000000000200000067000000030000000200000007466F72776172640849504D2E4E6F7465074D6573736167650246570500000000000000000100000000000000020000006800000004000000030000000F5265706C7920746F20466F6C6465720849504D2E506F737404506F7374000500000000000000000100000000000000020000006C0000000800000004000000035965730849504D2E4E6F7465000359657300000000000000000001000000020000000200000001000000FFFFFFFF04000000024E6F0849504D2E4E6F746500024E6F00000000000000000001000000020000000200000002000000FFFFFFFF0401055200650070006C00790002520045000C5200650070006C007900200074006F00200041006C006C0002520045000746006F007200770061007200640002460057000F5200650070006C007900200074006F00200046006F006C00640065007200000359006500730003590065007300024E006F00024E006F00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/VERBSTREAM-5.dat: -------------------------------------------------------------------------------- 1 | 02010600000000000000055265706C790849504D2E4E6F7465074D6573736167650252450500000000000000000100000000000000020000006600000002000000010000000C5265706C7920746F20416C6C0849504D2E4E6F7465074D65737361676502524505000000000000000001000000000000000200000067000000030000000200000007466F72776172640849504D2E4E6F7465074D6573736167650246570500000000000000000100000000000000020000006800000004000000030000000F5265706C7920746F20466F6C6465720849504D2E506F737404506F7374000500000000000000000100000000000000020000006C0000000800000004000000035965730849504D2E4E6F7465000359657300000000000000000001000000020000000200000001000000FFFFFFFF04000000024E6F0849504D2E4E6F746500024E6F00000000000000000001000000020000000200000002000000FFFFFFFF0401055200650070006C00790002520045000C5200650070006C007900200074006F00200041006C006C0002520045000746006F007200770061007200640002460057000F5200650070006C007900200074006F00200046006F006C00640065007200000359006500730003590065007300024E006F00024E006F00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/VERBSTREAM-6.dat: -------------------------------------------------------------------------------- 1 | 02010600000000000000055265706C790849504D2E4E6F7465074D6573736167650252450500000000000000000100000000000000020000006600000002000000010000000C5265706C7920746F20416C6C0849504D2E4E6F7465074D65737361676502524505000000000000000001000000000000000200000067000000030000000200000007466F72776172640849504D2E4E6F7465074D6573736167650246570500000000000000000100000000000000020000006800000004000000030000000F5265706C7920746F20466F6C6465720849504D2E506F737404506F7374000500000000000000000100000000000000020000006C0000000800000004000000035965730849504D2E4E6F7465000359657300000000000000000001000000020000000200000001000000FFFFFFFF04000000024E6F0849504D2E4E6F746500024E6F00000000000000000001000000020000000200000002000000FFFFFFFF0401055200650070006C00790002520045000C5200650070006C007900200074006F00200041006C006C0002520045000746006F007200770061007200640002460057000F5200650070006C007900200074006F00200046006F006C00640065007200000359006500730003590065007300024E006F00024E006F00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/VERBSTREAM-7.dat: -------------------------------------------------------------------------------- 1 | 02010000000000000000055265706C790849504D2E4E6F7465074D6573736167650252450500000000000000000100000000000000020000006600000002000000010000000C5265706C7920746F20416C6C0849504D2E4E6F7465074D65737361676502524505000000000000000001000000000000000200000067000000030000000200000007466F72776172640849504D2E4E6F7465074D6573736167650246570500000000000000000100000000000000020000006800000004000000030000000F5265706C7920746F20466F6C6465720849504D2E506F737404506F7374000500000000000000000100000000000000020000006C0000000800000004000000035965730849504D2E4E6F7465000359657300000000000000000001000000020000000200000001000000FFFFFFFF04000000024E6F0849504D2E4E6F746500024E6F00000000000000000001000000020000000200000002000000FFFFFFFF0401055200650070006C00790002520045000C5200650070006C007900200074006F00200041006C006C0002520045000746006F007200770061007200640002460057000F5200650070006C007900200074006F00200046006F006C00640065007200000359006500730003590065007300024E006F00024E006F00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/WEBVIEWPERSISTSTREAM-1.dat: -------------------------------------------------------------------------------- 1 | 020000000100000001000000000000000000000000000000000000000000000000000000000000003200000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000 2 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/WEBVIEWPERSISTSTREAM-2.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 020000000200000001000000000000000000000000000000000000000000000000000000000000003200000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000 6 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/WEBVIEWPERSISTSTREAM-3.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 020000000100000001000000000000000000000000000000000000000000000000000000000000003200000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000020000000100000001000000000000000000000000000000000000000000000000000000000000003200000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000 4 | 5 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/WEBVIEWPERSISTSTREAM-4.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 020000000100000001000000000000000000000000000000000000000000000000000000000000003200000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000020000000200000001000000000000000000000000000000000000000000000000000000000000003200000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000020000000200000001000000000000000000000000000000000000000000000000000000000000003200000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000020000000100000001000000000000000000000000000000000000000000000000000000000000003200000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/WEBVIEWPERSISTSTREAM-5.dat: -------------------------------------------------------------------------------- 1 | 2 | 020000000100000001000000000000000000000000000000000000000000000000000000000000003200000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00 660074002E0063006F006D006D00 3 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/WEBVIEWPERSISTSTREAM-6.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 020000000100000001000000000000000000000000000000000000000000000000000000000000003200000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000 5 | -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/WEBVIEWPERSISTSTREAM-7.dat: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 020000000100000001000000000000000000000000000000000000000000000000000000000000003300000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/XID-1.dat: -------------------------------------------------------------------------------- 1 | 14583767B6346D41A95E06FFF0D886A800000004C755 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/XID-2.dat: -------------------------------------------------------------------------------- 1 | 14583767B6346D41A95E06FFF0D886A8000000032256 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/In/XID-3.dat: -------------------------------------------------------------------------------- 1 | 373B21412876FE448E8D71BE34CC315400004F6592F8 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ACECONTAINER-out-1.dat: -------------------------------------------------------------------------------- 1 | ACE 2 | Type: 0x00 = ACCESS_ALLOWED_ACE_TYPE 3 | Flags: 0x09 = OBJECT_INHERIT_ACE | INHERIT_ONLY_ACE 4 | Size: 0x0024 5 | Mask: 0x001208A9 = fsdrightListContents | fsdrightReadProperty | fsdrightExecute | fsdrightReadAttributes | fsdrightViewItem | fsdrightReadControl | fsdrightSynchronize 6 | SID 7 | User: (no domain)\(no name) 8 | Textual SID: S-1-5-21-124525111-708259637-1543119021-103169 9 | Revision: 0x01 10 | SubAuthorityCount: 0x05 11 | IdentifierAuthority: SECURITY_NT_AUTHORITY 12 | SubAuthority[0]: 21 = 0x00000015 13 | SubAuthority[1]: 124525111 = 0x076C1A37 14 | SubAuthority[2]: 708259637 = 0x2A372F35 15 | SubAuthority[3]: 1543119021 = 0x5BFA20AD 16 | SubAuthority[4]: 103169 = 0x00019301 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ACEFB-out-1.dat: -------------------------------------------------------------------------------- 1 | ACE 2 | Type: 0x06 = ACCESS_DENIED_OBJECT_ACE_TYPE 3 | Flags: 0x1F = OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE | NO_PROPAGATE_INHERIT_ACE | INHERIT_ONLY_ACE | INHERITED_ACE 4 | Size: 0x0038 5 | Mask: 0x00000003 = fsdrightFreeBusySimple | fsdrightFreeBusyDetailed 6 | Flags: 0xFFFFFFFF 7 | ObjectType: {00020D0A-0000-0000-C000-000000000046} = IID_CAPONE_PROF 8 | InheritedObjectType: {53BC2EC0-D953-11CD-9752-00AA004AE40E} = GUID_Dilkie 9 | SID 10 | User: NT AUTHORITY\Authenticated Users 11 | Textual SID: S-1-5-11 12 | Revision: 0x01 13 | SubAuthorityCount: 0x01 14 | IdentifierAuthority: SECURITY_NT_AUTHORITY 15 | SubAuthority[0]: 11 = 0x0000000B -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ACEMESSAGE-out-1.dat: -------------------------------------------------------------------------------- 1 | ACE 2 | Type: 0x05 = ACCESS_ALLOWED_OBJECT_ACE_TYPE 3 | Flags: 0x1F = OBJECT_INHERIT_ACE | CONTAINER_INHERIT_ACE | NO_PROPAGATE_INHERIT_ACE | INHERIT_ONLY_ACE | INHERITED_ACE 4 | Size: 0x0038 5 | Mask: 0x001208A9 = fsdrightReadBody | fsdrightReadProperty | fsdrightExecute | fsdrightReadAttributes | fsdrightViewItem | fsdrightReadControl | fsdrightSynchronize 6 | Flags: 0xFFFFFFFF 7 | ObjectType: {00020D0A-0000-0000-C000-000000000046} = IID_CAPONE_PROF 8 | InheritedObjectType: {53BC2EC0-D953-11CD-9752-00AA004AE40E} = GUID_Dilkie 9 | SID 10 | User: (no domain)\(no name) 11 | Textual SID: S-255-5-11 12 | Revision: 0xFF 13 | SubAuthorityCount: 0x01 14 | IdentifierAuthority: SECURITY_NT_AUTHORITY 15 | SubAuthority[0]: 11 = 0x0000000B -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ACEMESSAGE-out-2.dat: -------------------------------------------------------------------------------- 1 | ACE 2 | Type: 0x01 = ACCESS_DENIED_ACE_TYPE 3 | Flags: 0x09 = OBJECT_INHERIT_ACE | INHERIT_ONLY_ACE 4 | Size: 0x0014 5 | Mask: 0x001208A9 = fsdrightReadBody | fsdrightReadProperty | fsdrightExecute | fsdrightReadAttributes | fsdrightViewItem | fsdrightReadControl | fsdrightSynchronize 6 | SID 7 | User: NT AUTHORITY\Authenticated Users 8 | Textual SID: S-1-5-11 9 | Revision: 0x01 10 | SubAuthorityCount: 0x01 11 | IdentifierAuthority: SECURITY_NT_AUTHORITY 12 | SubAuthority[0]: 11 = 0x0000000B -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ADDITIONALRENENTRYIDSEX-out-4.dat: -------------------------------------------------------------------------------- 1 | Additional Ren Entry IDs 2 | PersistDataCount = 0 3 | Unparsed data size = 0x00000008 4 | cb: 8 lpb: 0380960012345678 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/CONVERSATIONINDEX-out-1.dat: -------------------------------------------------------------------------------- 1 | Conversation Index 2 | Current FILETIME: 04:10:33.827 PM 4/26/2010 3 | LowDateTime = 0x20E5 4 | HighDateTime = 0x01CAE55B 5 | GUID = {D584E2FE-D857-7742-BAB5-85FBD4BB2BE9} 6 | ResponseLevel[0] 7 | DeltaCode = 0 8 | Time = 04:23:00.361 PM 4/26/2010 9 | TimeDelta = 0x00006F3E = 28478 10 | Random = 0x09 = 9 11 | ResponseLevel = 0x00 = 0 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/DECODEENTRYID-out-1.dat: -------------------------------------------------------------------------------- 1 | Decoded Entry ID 2 | cb: 24 lpb: 00000000F9E2990483426D42858F0BBEBDFF277AA4002000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENCODEENTRYID-out-1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/ENCODEENTRYID-out-1.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-1.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = EMSMDB.DLL 8 | Wrapped Flags = 0x00000000 9 | WrappedProviderUID = {20FA551B-66AA-CD11-9BC8-00AA002FC45A} = g_muidStorePrivate 10 | WrappedType = 0x0000000C = OPENSTORE_HOME_LOGON | OPENSTORE_TAKE_OWNERSHIP 11 | ServerShortname = BOOEX2K7 12 | MailboxDN = /o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=Administrator -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-10.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {C64E6196-0166-11D2-A3B1-0008C728E7F1} = Unknown GUID 4 | Exchange Folder Entry ID 5 | Folder Type = 0x0001 = eitLTPrivateFolder 6 | Database GUID = {108EB6C3-75F7-CE11-B4CD-00AA00BBB6E6} = Unknown GUID 7 | GlobalCounter 8 | cb: 6 lpb: 000000000005 9 | Pad 10 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-11.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {BBCFF2FC-9823-4F13-9388-3E49A74F94B6} = Unknown GUID 4 | Exchange Folder Entry ID 5 | Folder Type = 0x0001 = eitLTPrivateFolder 6 | Database GUID = {C8AF837A-0A0E-425A-9FAF-06395C2813D4} = Unknown GUID 7 | GlobalCounter 8 | cb: 6 lpb: 00000536281F 9 | Pad 10 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-12.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {9073441A-66AA-CD11-9BC8-00AA002FC45A} = pbLongTermNonPrivateGuid 4 | Exchange Folder Entry ID 5 | Folder Type = 0x0003 = eitLTPublicFolder 6 | Database GUID = {D5310479-4770-4AB9-8B69-2E587C735EEE} = Unknown GUID 7 | GlobalCounter 8 | cb: 6 lpb: 000000000006 9 | Pad 10 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-13.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {C64E6196-0166-11D2-A3B1-0008C728E7F1} = Unknown GUID 4 | Exchange Message Entry ID 5 | Message Type = 0x0007 = eitLTPrivateMessage 6 | Folder Database GUID = {865CFA85-E6FC-11D1-A3A6-0008C728E7F1} = Unknown GUID 7 | Folder GlobalCounter 8 | cb: 6 lpb: 000000019EBA 9 | Pad1 10 | cb: 2 lpb: 0000 11 | Message Database GUID = {DCBF2344-8835-4B8C-ACC4-B3D80C100406} = Unknown GUID 12 | Message GlobalCounter 13 | cb: 6 lpb: 00240E16BDE9 14 | Pad2 15 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-14.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {BBCFF2FC-9823-4F13-9388-3E49A74F94B6} = Unknown GUID 4 | Exchange Message Entry ID 5 | Message Type = 0x0007 = eitLTPrivateMessage 6 | Folder Database GUID = {C8AF837A-0A0E-425A-9FAF-06395C2813D4} = Unknown GUID 7 | Folder GlobalCounter 8 | cb: 6 lpb: 00000536281B 9 | Pad1 10 | cb: 2 lpb: 0000 11 | Message Database GUID = {C8AF837A-0A0E-425A-9FAF-06395C2813D4} = Unknown GUID 12 | Message GlobalCounter 13 | cb: 6 lpb: 0007D676A15F 14 | Pad2 15 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-15.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {9073441A-66AA-CD11-9BC8-00AA002FC45A} = pbLongTermNonPrivateGuid 4 | Exchange Message Entry ID 5 | Message Type = 0x0009 = eitLTPublicMessage 6 | Folder Database GUID = {D5310479-4770-4AB9-8B69-2E587C735EEE} = Unknown GUID 7 | Folder GlobalCounter 8 | cb: 6 lpb: 003C1F16617E 9 | Pad1 10 | cb: 2 lpb: 0000 11 | Message Database GUID = {D5310479-4770-4AB9-8B69-2E587C735EEE} = Unknown GUID 12 | Message GlobalCounter 13 | cb: 6 lpb: 003C1F1B833F 14 | Pad2 15 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-16.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {C840A7DC-42C0-1A10-B4B9-08002B2FE182} = muidEMSAB 4 | Exchange Address Entry ID 5 | Version = 0x00000001 = EMS_VERSION 6 | Type = 0x00000000 = DT_MAILUSER 7 | X500DN = /O=microsoft/OU=fareast/cn=Recipients/cn=example -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-17.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {A41F2B81-A3BE-1910-9D6E-00DD010F5402} = muidOOP 4 | MAPI One Off Recipient Entry ID 5 | dwBitmask: 0x10010000 = MAPI_SEND_NO_RICH_INFO | OOP_DONT_LOOKUP 6 | szDisplayName = 'admin@example.com' 7 | szAddressType = SMTP 8 | szEmailAddress = admin@example.com -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-18.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {0AAA42FE-C718-101A-E885-0B651C240000} = muidContabDLL 4 | Contact Address Book / PDL Entry ID 5 | Version = 0x00000003 = CONTAB_VERSION 6 | Type = 0x00000004 = CONTAB_USER 7 | Index = 0x00000000 = EEI_EMAIL_1 8 | EntryIDCount = 0x00000046 9 | Entry ID 10 | abFlags = 0x00000000 11 | Provider GUID = {C64E6196-0166-11D2-A3B1-0008C728E7F1} = Unknown GUID 12 | Exchange Message Entry ID 13 | Message Type = 0x0007 = eitLTPrivateMessage 14 | Folder Database GUID = {2B4C1B83-E703-11D1-8FB2-00805F9F2EAC} = Unknown GUID 15 | Folder GlobalCounter 16 | cb: 6 lpb: 000000481F4F 17 | Pad1 18 | cb: 2 lpb: 0000 19 | Message Database GUID = {51A7A720-53D5-4A39-B9D4-1BB443250C47} = Unknown GUID 20 | Message GlobalCounter 21 | cb: 6 lpb: 000000487654 22 | Pad2 23 | cb: 2 lpb: 0000 24 | Unparsed data size = 0x00000003 25 | cb: 3 lpb: 1B0300 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-19.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {517AC40F-2FC3-4A26-AA1C-D7F2BA4F1D7A} = Unknown GUID 4 | Unparsed data size = 0x00000004 5 | cb: 4 lpb: 82800000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-2.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = EMSMDB.DLL 8 | Wrapped Flags = 0x00000000 9 | WrappedProviderUID = {20FA551B-66AA-CD11-9BC8-00AA002FC45A} = g_muidStorePrivate 10 | WrappedType = 0x0000000C = OPENSTORE_HOME_LOGON | OPENSTORE_TAKE_OWNERSHIP 11 | ServerShortname = SERVER 12 | MailboxDN = /o=microsoft/ou=something/cn=Recipients/cn=12345 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-20.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {517AC40F-2FC3-4A26-AA1C-D7F2BA4F1D7A} = Unknown GUID 4 | Unparsed data size = 0x00000004 5 | cb: 4 lpb: 44002000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-21.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {C840A7DC-42C0-1A10-B4B9-08002B2FE182} = muidEMSAB 4 | Exchange Address Entry ID 5 | Version = 0x00000001 = EMS_VERSION 6 | Type = 0x00000001 = DT_DISTLIST 7 | X500DN = /O=MICROSOFT/OU=Something/cn=exchange_dls/cn={992F76E6-71BE-4215-BAB4-F37A8AB158A7} -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-22.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {C840A7DC-42C0-1A10-B4B9-08002B2FE182} = muidEMSAB 4 | Exchange Address Entry ID 5 | Version = 0x00000001 = EMS_VERSION 6 | Type = 0x00000001 = DT_DISTLIST 7 | X500DN = /O=MICROSOFT/OU=Something/cn=exchange_dls/cn={992F76E6-71BE-4215-BAB4-F37A8AB158A7} -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-23.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {C840A7DC-42C0-1A10-B4B9-08002B2FE182} = muidEMSAB 4 | Exchange Address Entry ID 5 | Version = 0x00000001 = EMS_VERSION 6 | Type = 0x00000100 = DT_CONTAINER 7 | X500DN = / -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-24.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/ENTRYID-out-24.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-25.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags[0] = 0x87= EPHEMERAL 3 | abFlags[1..3] = 0x000000 4 | Provider GUID = {002B3BA1-5ECE-4DCA-976D-076EC81BA4A4} = Unknown GUID 5 | Ephemeral Entry ID 6 | Version = 0x00000001 = EMS_VERSION 7 | Type = 0x00000000 = DT_MAILUSER 8 | Unparsed data size = 0x00000004 9 | cb: 4 lpb: 22BB0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-26.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags[0] = 0x87= EPHEMERAL 3 | abFlags[1..3] = 0x000000 4 | Provider GUID = {002B3BA1-5ECE-4DCA-976D-076EC81BA4A4} = Unknown GUID 5 | Ephemeral Entry ID 6 | Version = 0x00000001 = EMS_VERSION 7 | Type = 0x00000001 = DT_DISTLIST 8 | Unparsed data size = 0x00000004 9 | cb: 4 lpb: BEF12D00 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-27.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {D3AD91C0-9D51-11CF-A4A9-00AA0047FAA4} = WAB_GUID 4 | Wrapped Entry ID 5 | Wrapped Entry Type = 0xC3 = BFLAGS_MASK_OUTLOOK | Type: BFLAGS_INTERNAL_MAILUSER | Email1 6 | Entry ID 7 | abFlags = 0x00000000 8 | Provider GUID = {C64E6196-0166-11D2-A3B1-0008C728E7F1} = Unknown GUID 9 | Exchange Message Entry ID 10 | Message Type = 0x0007 = eitLTPrivateMessage 11 | Folder Database GUID = {2B4C1B83-E703-11D1-8FB2-00805F9F2EAC} = Unknown GUID 12 | Folder GlobalCounter 13 | cb: 6 lpb: 000000481F4F 14 | Pad1 15 | cb: 2 lpb: 0000 16 | Message Database GUID = {F4BD8F31-D66E-4CB4-9F12-881F0692F761} = Unknown GUID 17 | Message GlobalCounter 18 | cb: 6 lpb: 000000BF5516 19 | Pad2 20 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-28.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {D3AD91C0-9D51-11CF-A4A9-00AA0047FAA4} = WAB_GUID 4 | Wrapped Entry ID 5 | Wrapped Entry Type = 0xC3 = BFLAGS_MASK_OUTLOOK | Type: BFLAGS_INTERNAL_MAILUSER | Email1 6 | Entry ID 7 | abFlags = 0x00000000 8 | Provider GUID = {C64E6196-0166-11D2-A3B1-0008C728E7F1} = Unknown GUID 9 | Exchange Message Entry ID 10 | Message Type = 0x0007 = eitLTPrivateMessage 11 | Folder Database GUID = {2B4C1B83-E703-11D1-8FB2-00805F9F2EAC} = Unknown GUID 12 | Folder GlobalCounter 13 | cb: 6 lpb: 000000481F4F 14 | Pad1 15 | cb: 2 lpb: 0000 16 | Message Database GUID = {F4BD8F31-D66E-4CB4-9F12-881F0692F761} = Unknown GUID 17 | Message GlobalCounter 18 | cb: 6 lpb: 000000BF5516 19 | Pad2 20 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-29.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {D3AD91C0-9D51-11CF-A4A9-00AA0047FAA4} = WAB_GUID 4 | Wrapped Entry ID 5 | Wrapped Entry Type = 0xB5 = BFLAGS_MASK_OUTLOOK | Type: BFLAGS_EXTERNAL_MAILUSER | Not a contact 6 | Entry ID 7 | abFlags = 0x00000000 8 | Provider GUID = {C840A7DC-42C0-1A10-B4B9-08002B2FE182} = muidEMSAB 9 | Exchange Address Entry ID 10 | Version = 0x00000001 = EMS_VERSION 11 | Type = 0x00000000 = DT_MAILUSER 12 | X500DN = /o=microsoft/ou=something/cn=Recipients/cn=12345 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-3.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {D3AD91C0-9D51-11CF-A4A9-00AA0047FAA4} = WAB_GUID 4 | Wrapped Entry ID 5 | Wrapped Entry Type = 0xB5 = BFLAGS_MASK_OUTLOOK | Type: BFLAGS_EXTERNAL_MAILUSER | Not a contact 6 | Entry ID 7 | abFlags = 0x00000000 8 | Provider GUID = {C840A7DC-42C0-1A10-B4B9-08002B2FE182} = muidEMSAB 9 | Exchange Address Entry ID 10 | Version = 0x00000001 = EMS_VERSION 11 | Type = 0x00000000 = DT_MAILUSER 12 | X500DN = /o=microsoft/ou=something/cn=Recipients/cn=12345 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-30.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = EMSMDB.DLL 8 | Wrapped Flags = 0x00000000 9 | WrappedProviderUID = {20FA551B-66AA-CD11-9BC8-00AA002FC45A} = g_muidStorePrivate 10 | WrappedType = 0x0000000C = OPENSTORE_HOME_LOGON | OPENSTORE_TAKE_OWNERSHIP 11 | ServerShortname = SERVER 12 | MailboxDN = /O=microsoft/OU=something/cn=Recipients/cn=somebody 13 | MAPI Message Store Entry ID V2 14 | Magic = 0xF32135D8 = MDB_STORE_EID_V2_MAGIC 15 | Size = 0x00000083 = 131 16 | Version = 0x00000001 = MDB_STORE_EID_V2_VERSION 17 | OffsetDN = 0x00000014 18 | OffsetFQDN = 0x00000000 19 | DN = /o=microsoft/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=SERVER 20 | Reserved Bytes 21 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-31.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = EMSMDB.DLL 8 | Wrapped Flags = 0x00000000 9 | WrappedProviderUID = {1002831C-66AA-CD11-9BC8-00AA002FC45A} = g_muidStorePublic 10 | WrappedType = 0x00000006 = OPENSTORE_PUBLIC | OPENSTORE_HOME_LOGON 11 | ServerShortname = SE-RV-ER 12 | MAPI Message Store Entry ID V2 13 | Magic = 0xF32135D8 = MDB_STORE_EID_V2_MAGIC 14 | Size = 0x000000D8 = 216 15 | Version = 0x00000001 = MDB_STORE_EID_V2_VERSION 16 | OffsetDN = 0x00000014 17 | OffsetFQDN = 0x00000082 18 | DN = /o=microsoft/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=SERVER 19 | FQDN = se-rv-er.something.corp.example.com 20 | Reserved Bytes 21 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-32.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = EMSMDB.DLL 8 | Wrapped Flags = 0x00000000 9 | WrappedProviderUID = {20FA551B-66AA-CD11-9BC8-00AA002FC45A} = g_muidStorePrivate 10 | WrappedType = 0x00000008 = OPENSTORE_TAKE_OWNERSHIP 11 | ServerShortname = SERVER 12 | MailboxDN = /o=org/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=some cn 13 | MAPI Message Store Entry ID V2 14 | Magic = 0xF32135D8 = MDB_STORE_EID_V2_MAGIC 15 | Size = 0x00000095 = 149 16 | Version = 0x00000001 = MDB_STORE_EID_V2_VERSION 17 | OffsetDN = 0x00000014 18 | OffsetFQDN = 0x00000093 19 | DN = /o=org/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=SERVER/cn=Microsoft Private MDB 20 | FQDN = -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-33.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = EMSMDB.DLL 8 | Wrapped Flags = 0x00000000 9 | WrappedProviderUID = {1002831C-66AA-CD11-9BC8-00AA002FC45A} = g_muidStorePublic 10 | WrappedType = 0x00000006 = OPENSTORE_PUBLIC | OPENSTORE_HOME_LOGON 11 | ServerShortname = USER 12 | MailboxDN = /o=org/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=MyRoom -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-34.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = EMSMDB.DLL 8 | Wrapped Flags = 0x00000000 9 | WrappedProviderUID = {1002831C-66AA-CD11-9BC8-00AA002FC45A} = g_muidStorePublic 10 | WrappedType = 0x00000006 = OPENSTORE_PUBLIC | OPENSTORE_HOME_LOGON 11 | ServerShortname = SERVER101 12 | MailboxDN = /o=microsoft/ou=something/cn=Recipients/cn=12345 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-35.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {0AAA42FE-C718-101A-E885-0B651C240000} = muidContabDLL 4 | Contact Address Book / PDL Entry ID 5 | Version = 0x00000003 = CONTAB_VERSION 6 | Type = 0x00000003 = CONTAB_CONTAINER 7 | muidID = {79376DA0-EB43-4416-9834-0BAD544EFF72} = Unknown GUID 8 | Entry ID 9 | abFlags = 0x00000000 10 | Provider GUID = {3CFCFD9E-3A2E-4C25-9C08-6F5D93F6E963} = Unknown GUID 11 | Unparsed data size = 0x00000004 12 | cb: 4 lpb: 42810000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-36.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {0AAA42FE-C718-101A-E885-0B651C240000} = muidContabDLL 4 | Contact Address Book / PDL Entry ID 5 | Version = 0x00000003 = CONTAB_VERSION 6 | Type = 0x00000003 = CONTAB_CONTAINER 7 | muidID = {7D0AE82F-B186-4979-BAFD-7DBE4B03BF38} = Unknown GUID 8 | Entry ID 9 | abFlags = 0x00000000 10 | Provider GUID = {C64E6196-0166-11D2-A3B1-0008C728E7F1} = Unknown GUID 11 | Exchange Folder Entry ID 12 | Folder Type = 0x0001 = eitLTPrivateFolder 13 | Database GUID = {2B4C1B83-E703-11D1-8FB2-00805F9F2EAC} = Unknown GUID 14 | GlobalCounter 15 | cb: 6 lpb: 000000481F4F 16 | Pad 17 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-37.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {0AAA42FE-C718-101A-E885-0B651C240000} = muidContabDLL 4 | Contact Address Book / PDL Entry ID 5 | Version = 0x00000003 = CONTAB_VERSION 6 | Type = 0x00000030 = 0x30 7 | Short Term Entry ID 8 | abFlags[0] = 0x98= MAPI_NOTRESERVED | MAPI_NOW | MAPI_SHORTTERM 9 | abFlags[1] = 0x34= 0x34 10 | abFlags[2..3] = 0x0BAD 11 | Provider GUID = {72FF4E54-0000-0000-9EFD-FC3C2E3A254C} = Unknown GUID 12 | Unparsed data size = 0x0000000C 13 | cb: 12 lpb: 9C086F5D93F6E96342810000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-38.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = EMSMDB.DLL 8 | Wrapped Flags = 0x00000000 9 | WrappedProviderUID = {20FA551B-66AA-CD11-9BC8-00AA002FC45A} = g_muidStorePrivate 10 | WrappedType = 0x0000000C = OPENSTORE_HOME_LOGON | OPENSTORE_TAKE_OWNERSHIP 11 | ServerShortname = USER.NAME@example.com 12 | MailboxDN = /o=ORG/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=User.Namebdec0052-d130-4fb2-ba4b-a3ecd2b5da27 13 | MAPI Message Store Entry ID V3 14 | Magic = 0xF43246E9 = MDB_STORE_EID_V3_MAGIC 15 | Size = 0x00000040 = 64 16 | Version = 0x00000002 = MDB_STORE_EID_V3_VERSION 17 | OffsetSmtpAddress = 0x00000010 18 | SmtpAddress = USER.NAME@example.com 19 | Reserved Bytes 20 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-39.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | Unparsed data size = 0x00000003 3 | cb: 3 lpb: 112233 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-4.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = EMSMDB.DLL 8 | Wrapped Flags = 0x00000000 9 | WrappedProviderUID = {20FA551B-66AA-CD11-9BC8-00AA002FC45A} = g_muidStorePrivate 10 | WrappedType = 0x0000000C = OPENSTORE_HOME_LOGON | OPENSTORE_TAKE_OWNERSHIP 11 | ServerShortname = SERVER 12 | MailboxDN = /o=microsoft/ou=northamerica/cn=Recipients/cn=12345 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-40.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {A41F2B81-A3BE-1910-9D6E-00DD010F5402} = muidOOP 4 | MAPI One Off Recipient Entry ID 5 | dwBitmask: 0x80010000 = MAPI_UNICODE | MAPI_SEND_NO_RICH_INFO 6 | szDisplayName = nobody_@microsoft.com 7 | szAddressType = SMTP 8 | szEmailAddress = nobody_@microsoft.com -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-5.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = mspst.dll 8 | Unparsed data size = 0x00000068 9 | cb: 104 lpb: 000000004E495441F9BFB80100AA0037D96E0000000043003A005C004F00660066006C0069006E006500530074006F007200650073005C004F00660066006C0069006E00650020002D00200032003000300034002D0032003000300035002E007000730074000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-6.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = EMSMDB.DLL 8 | Wrapped Flags = 0x00000000 9 | WrappedProviderUID = {1002831C-66AA-CD11-9BC8-00AA002FC45A} = g_muidStorePublic 10 | WrappedType = 0x00000006 = OPENSTORE_PUBLIC | OPENSTORE_HOME_LOGON 11 | ServerShortname = SERVER102 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-7.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {10BBA138-E505-1A10-A1BB-08002B2A56C2} = muidStoreWrap 4 | MAPI Message Store Entry ID 5 | Version = 0x00 = MAPIMDB_VERSION 6 | Flag = 0x00 = MAPIMDB_NORMAL 7 | DLLFileName = EMSMDB.DLL 8 | Wrapped Flags = 0x00000000 9 | WrappedProviderUID = {1002831C-66AA-CD11-9BC8-00AA002FC45A} = g_muidStorePublic 10 | WrappedType = 0x00000006 = OPENSTORE_PUBLIC | OPENSTORE_HOME_LOGON 11 | ServerShortname = BOOEX2K7 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-8.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {C64E6196-0166-11D2-A3B1-0008C728E7F1} = Unknown GUID 4 | Exchange Folder Entry ID 5 | Folder Type = 0x0001 = eitLTPrivateFolder 6 | Database GUID = {865CFA85-E6FC-11D1-A3A6-0008C728E7F1} = Unknown GUID 7 | GlobalCounter 8 | cb: 6 lpb: 000000019EBA 9 | Pad 10 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYID-out-9.dat: -------------------------------------------------------------------------------- 1 | Entry ID 2 | abFlags = 0x00000000 3 | Provider GUID = {C64E6196-0166-11D2-A3B1-0008C728E7F1} = Unknown GUID 4 | Exchange Folder Entry ID 5 | Folder Type = 0x0001 = eitLTPrivateFolder 6 | Database GUID = {865CFA85-E6FC-11D1-A3A6-0008C728E7F1} = Unknown GUID 7 | GlobalCounter 8 | cb: 6 lpb: 000000019EBA 9 | Pad 10 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYLIST-out-1.dat: -------------------------------------------------------------------------------- 1 | Entry List 2 | EntryCount = 0x00000001 3 | Pad = 0x26106C48 4 | EntryId[0] 5 | EntryLength = 0x0000002E 6 | EntryLengthPad = 0x26106C50 7 | Entry ID 8 | abFlags = 0x00000000 9 | Provider GUID = {C64E6196-0166-11D2-A3B1-0008C728E7F1} = Unknown GUID 10 | Exchange Folder Entry ID 11 | Folder Type = 0x0001 = eitLTPrivateFolder 12 | Database GUID = {865CFA85-E6FC-11D1-A3A6-0008C728E7F1} = Unknown GUID 13 | GlobalCounter 14 | cb: 6 lpb: 000000019EBE 15 | Pad 16 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/ENTRYLIST-out-2.dat: -------------------------------------------------------------------------------- 1 | Entry List 2 | EntryCount = 0x00000001 3 | Pad = 0x06A66890 4 | EntryId[0] 5 | EntryLength = 0x0000002E 6 | EntryLengthPad = 0x06A66898 7 | Entry ID 8 | abFlags = 0x00000000 9 | Provider GUID = {C64E6196-0166-11D2-A3B1-0008C728E7F1} = Unknown GUID 10 | Exchange Folder Entry ID 11 | Folder Type = 0x0001 = eitLTPrivateFolder 12 | Database GUID = {865CFA85-E6FC-11D1-A3A6-0008C728E7F1} = Unknown GUID 13 | GlobalCounter 14 | cb: 6 lpb: 000000019EBB 15 | Pad 16 | cb: 2 lpb: 0000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/EXTENDEDFOLDERFLAGS-out-1.dat: -------------------------------------------------------------------------------- 1 | Extended Flags 2 | Number of flags = 2 3 | Flag[0] 4 | Id = 0x01 = EFPB_FLAGS 5 | Cb = 0x04 = 4 6 | Extended Flags = 0x00100000 = 0x100000 7 | Flag[1] 8 | Id = 0x06 = 0x6 9 | Cb = 0x04 = 4 10 | Unknown Data 11 | cb: 4 lpb: 03000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/EXTENDEDFOLDERFLAGS-out-2.dat: -------------------------------------------------------------------------------- 1 | Extended Flags 2 | Number of flags = 1 3 | Flag[0] 4 | Id = 0x01 = EFPB_FLAGS 5 | Cb = 0x04 = 4 6 | Extended Flags = 0x001A8000 = 0x1A8000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/EXTENDEDRULEACTION-out-3.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/EXTENDEDRULEACTION-out-3.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/EXTENDEDRULECONDITION-out-1.dat: -------------------------------------------------------------------------------- 1 | Extended Rule Condition 2 | NamedPropertyInformation 3 | Number of named props = 0x0000 4 | Restriction 5 | | rt = 0x3 = RES_CONTENT 6 | | resContent 7 | | | FuzzyLevel = FL_SUBSTRING = 0x00000001 8 | | | PropTag = 0x0C1D0102 (PT_BINARY): PR_SENDER_SEARCH_KEY: (PidTagSenderSearchKey, ptagSenderSearchKey) 9 | | | lpProp 10 | | | PropTag = 0x0C1D0102 (PT_BINARY) 11 | | | Name: PR_SENDER_SEARCH_KEY 12 | | | Other Matches: PidTagSenderSearchKey, ptagSenderSearchKey 13 | | | PropString = cb: 16 lpb: 7465737430314074657374312E434F4D 14 | | | AltPropString = test01@test1.COM -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/EXTENDEDRULECONDITION-out-2.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/EXTENDEDRULECONDITION-out-2.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/EXTENDEDRULECONDITION-out-3.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/EXTENDEDRULECONDITION-out-3.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/EXTENDEDRULECONDITION-out-4.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/EXTENDEDRULECONDITION-out-4.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/FLATENTRYLIST-out-3.dat: -------------------------------------------------------------------------------- 1 | Flat Entry List 2 | cEntries = 0 3 | cbEntries = 0x0000015C 4 | Unparsed data size = 0x00000157 5 | cb: 343 lpb: 6D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB20C000000481F4F0000109588ED42DE85428287935E058A904C0016DE1CB80E0000000000007C006D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F0000FB607ECAC549C44A9151DA03A7BC66B9001B181E8A1500000000000000006D00000000000000FE42AA0A18C71A10E8850B651C240000030000000400000000000000460000000000000096614EC66601D211A3B10008C728E7F10700831B4C2B03E7D1118FB200805F9F2EAC000000481F4F000020A7A751D553394AB9D41BB443250C470000004876C600000000001F3521 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/FOLDERUSERFIELDS-out-3.dat: -------------------------------------------------------------------------------- 1 | Folder User Field Stream 2 | FolderUserFieldAnsi.FieldDefinitionCount = 0 3 | FolderUserFieldUnicode.FieldDefinitionCount = 0 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/FOLDERUSERFIELDS-out-4.dat: -------------------------------------------------------------------------------- 1 | Folder User Field Stream 2 | FolderUserFieldAnsi.FieldDefinitionCount = 1 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/FOLDERUSERFIELDS-out-5.dat: -------------------------------------------------------------------------------- 1 | Folder User Field Stream 2 | FolderUserFieldAnsi.FieldDefinitionCount = 0 3 | FolderUserFieldUnicode.FieldDefinitionCount = 1 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/GLOBALOBJECTID-out-1.dat: -------------------------------------------------------------------------------- 1 | Global Object ID 2 | Byte Array ID = s_rgbSPlus 3 | cb: 16 lpb: 040000008200E00074C5B7101A82E008 4 | Year: 0x0000 = 0 5 | Month: 0x00 = 0 = 0x0 6 | Day: 0x00 = 0 7 | Creation Time = 0x01CAE532:0xF509DBF0 = 11:23:55.567 AM 4/26/2010 8 | X: 0x00000000:0x00000000 9 | Size: 0x10 = 16 10 | Data 11 | cb: 16 lpb: E73C73F73F1C3941BDD6450F640703F3 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/GLOBALOBJECTID-out-2.dat: -------------------------------------------------------------------------------- 1 | Global Object ID 2 | Byte Array ID = s_rgbSPlus 3 | cb: 16 lpb: 040000008200E00074C5B7101A82E008 4 | Year: 0x07DB = 2011 5 | Month: 0x01 = 1 = January 6 | Day: 0x12 = 18 7 | Creation Time = 0x01CADFE7:0xE82CA5C0 = 05:44:05.916 PM 4/19/2010 8 | X: 0x00000000:0x00000000 9 | Size: 0x10 = 16 10 | Data 11 | cb: 16 lpb: FFAFECEBDB4A2E4FA02EBC759661827B -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/NICKNAMECACHE-out-2.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/NICKNAMECACHE-out-2.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/NICKNAMECACHE-out-3.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/NICKNAMECACHE-out-3.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/NICKNAMECACHE-out-4.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/NICKNAMECACHE-out-4.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/NTSD-out-4.dat: -------------------------------------------------------------------------------- 1 | PR_NT_SECURITY_DESCRIPTOR 2 | Padding: 0x06B6 3 | Version: 0x7AB0 = 0x7AB0 4 | Security Information: 0xAB7960BB = OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION | PROTECTED_DACL_SECURITY_INFORMATION | UNPROTECTED_DACL_SECURITY_INFORMATION | 0xB7960B0 5 | NamedProp 6 | Tag = 0x8220 7 | Kind = 0xC7 8 | NamedProp 9 | Kind = 0x60 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/NTSD-out-5.dat: -------------------------------------------------------------------------------- 1 | PR_NT_SECURITY_DESCRIPTOR 2 | Padding: 0x000A 3 | Version: 0x7AB0 = 0x7AB0 4 | Security Information: 0xAB7960BB = OWNER_SECURITY_INFORMATION | GROUP_SECURITY_INFORMATION | SACL_SECURITY_INFORMATION | PROTECTED_DACL_SECURITY_INFORMATION | UNPROTECTED_DACL_SECURITY_INFORMATION | 0xB7960B0 5 | NamedProp 6 | Tag = 0x8220 7 | Security Descriptor 8 | Revision: 0xC7 9 | Sbz1: 0x60 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/PCL-out-1.dat: -------------------------------------------------------------------------------- 1 | Predecessor Change List 2 | Count = 1 3 | XID[0] 4 | XidSize = 0x00000014 = 20 5 | NamespaceGuid = {9D8647F2-3674-4FE6-A4CC-56F8B4809280} 6 | LocalId 7 | cb: 4 lpb: 00000006 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/PCL-out-2.dat: -------------------------------------------------------------------------------- 1 | Predecessor Change List 2 | Count = 3 3 | XID[0] 4 | XidSize = 0x00000016 = 22 5 | NamespaceGuid = {41213B37-7628-44FE-8E8D-71BE34CC3154} 6 | LocalId 7 | cb: 6 lpb: 000061E71533 8 | XID[1] 9 | XidSize = 0x00000016 = 22 10 | NamespaceGuid = {487F266F-8738-48D9-AAFC-A58AB2BC910F} 11 | LocalId 12 | cb: 6 lpb: 0000DC0B3A12 13 | XID[2] 14 | XidSize = 0x00000014 = 20 15 | NamespaceGuid = {1CC6AB8F-4C6C-475E-930B-9B30AA0ED4EB} 16 | LocalId 17 | cb: 4 lpb: 00005CA8 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/PCL-out-3.dat: -------------------------------------------------------------------------------- 1 | Predecessor Change List 2 | Count = 2 3 | XID[0] 4 | XidSize = 0x00000016 = 22 5 | NamespaceGuid = {41213B37-7628-44FE-8E8D-71BE34CC3154} 6 | LocalId 7 | cb: 6 lpb: 00004B0D991F 8 | XID[1] 9 | XidSize = 0x00000014 = 20 10 | NamespaceGuid = {0F2C51D8-2D62-4146-92E5-C355973A6236} 11 | LocalId 12 | cb: 4 lpb: 000009E8 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/PROPERTIES-out-1.dat: -------------------------------------------------------------------------------- 1 | Property[0] 2 | PropTag = 0x3001001F (PT_UNICODE) 3 | Name: PR_DISPLAY_NAME 4 | Other Matches: PR_DISPLAY_NAME_W, PidTagDisplayName, ptagDisplayName, PR_DISPLAY_NAME_A 5 | PropString = Mister Mistter 6 | AltPropString = cb: 28 lpb: 4D006900730074006500720020004D00690073007400740065007200 7 | Property[1] 8 | PropTag = 0x30070040 (PT_SYSTIME) 9 | Name: PR_CREATION_TIME 10 | Other Matches: PidTagCreationTime, ptagCreationTime 11 | PropString = 07:16:34.571 PM 1/7/2018 12 | AltPropString = Low: 0x085535B0 High: 0x01D387EC -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/PROPERTIES-out-2.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/PROPERTIES-out-2.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/PROPERTIES-out-3.dat: -------------------------------------------------------------------------------- 1 | Property[0] 2 | PropTag = 0x0FFE0003 (PT_LONG) 3 | Name: PR_OBJECT_TYPE 4 | Other Matches: PidTagObjectType, ptagObjectType 5 | PropString = 6 6 | AltPropString = 0x6 7 | Smart View 8 | Flags: MAPI_MAILUSER -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/PROPERTIES-out-4.dat: -------------------------------------------------------------------------------- 1 | Property[0] 2 | PropTag = 0x0E0F000B (PT_BOOLEAN) 3 | Name: PR_RESPONSIBILITY 4 | Other Matches: PidTagResponsibility, ptagResponsibility 5 | PropString = False -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/PROPERTIES-out-5.dat: -------------------------------------------------------------------------------- 1 | Property[0] 2 | PropTag = 0x0FF9000A (PT_ERROR) 3 | Name: PR_RECORD_KEY 4 | Other Matches: PidTagRecordKey, ptagRecordKey 5 | PropString = Err: 0x8004010F=MAPI_E_NOT_FOUND -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/PROPERTIES-out-6.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/PROPERTIES-out-6.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/PROPERTIES-out-8.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/PROPERTIES-out-8.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/PROPERTYDEFINITIONSTREAM-out-5.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/PROPERTYDEFINITIONSTREAM-out-5.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/RECIPIENTROWSTREAM-out-1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/RECIPIENTROWSTREAM-out-1.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/RECIPIENTROWSTREAM-out-2.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/RECIPIENTROWSTREAM-out-2.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/RECURRENCEPATTERN-out-2.dat: -------------------------------------------------------------------------------- 1 | Recurrence Pattern 2 | ReaderVersion: 0x3004 3 | WriterVersion: 0x3004 4 | RecurFrequency: 0x200B = IDC_RCEV_PAT_ORB_WEEKLY 5 | PatternType: 0x0001 = rptWeek 6 | CalendarType: 0x0000 = CAL_DEFAULT 7 | FirstDateTime: 0x00004920 = 18720 8 | Period: 0x00000002 = 2 9 | SlidingFlag: 0x00000000 10 | PatternTypeSpecific 11 | WeekRecurrencePattern: 0x00000002 = rdfMon 12 | EndType: 0x00002021 = IDC_RCEV_PAT_ERB_END 13 | OccurrenceCount: 0x00000006 = 6 14 | FirstDOW: 0x00000000 = Sunday 15 | DeletedInstanceCount: 0x00000000 = 0 16 | ModifiedInstanceCount: 0x00000000 = 0 17 | StartDate: 0x0CD78140 = 215449920 = 12:00:00.000 AM 8/23/2010 18 | EndDate: 0x0CD90B00 = 215550720 = 12:00:00.000 AM 11/1/2010 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/REPORTTAG-out-1.dat: -------------------------------------------------------------------------------- 1 | Report Tag 2 | Cookie 3 | cb: 9 lpb: 504344464542303900 4 | Version = 0x00020001 = CurrentVersion 5 | StoreEntryIdSize = 0x00000000 6 | FolderEntryIdSize = 0x00000000 7 | MessageEntryIdSize = 0x00000000 8 | SearchFolderEntryIdSize = 0x0000002E 9 | SearchFolderEntryID 10 | abFlags = 0x00000000 11 | Provider GUID = {C64E6196-0166-11D2-A3B1-0008C728E7F1} = Unknown GUID 12 | Exchange Folder Entry ID 13 | Folder Type = 0x0001 = eitLTPrivateFolder 14 | Database GUID = {865CFA85-E6FC-11D1-A3A6-0008C728E7F1} = Unknown GUID 15 | GlobalCounter 16 | cb: 6 lpb: 000000019EC0 17 | Pad 18 | cb: 2 lpb: 0000 19 | MessageSearchKeySize = 0x00000010 20 | MessageSearchKey 21 | cb: 16 lpb: E866555BC88F2E4AB665769B02770F90 22 | cchAnsiText = 0x00000001 23 | AnsiText = "" -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/RESTRICTION-out-1.dat: -------------------------------------------------------------------------------- 1 | Restriction 2 | | rt = 0x3 = RES_CONTENT 3 | | resContent 4 | | | FuzzyLevel = FL_SUBSTRING = 0x00000001 5 | | | PropTag = 0x0C1D0102 (PT_BINARY): PR_SENDER_SEARCH_KEY: (PidTagSenderSearchKey, ptagSenderSearchKey) 6 | | | lpProp 7 | | | PropTag = 0x0C1D0102 (PT_BINARY) 8 | | | Name: PR_SENDER_SEARCH_KEY 9 | | | Other Matches: PidTagSenderSearchKey, ptagSenderSearchKey 10 | | | PropString = cb: 16 lpb: 7465737430314074657374312E434F4D 11 | | | AltPropString = test01@test1.COM -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/RESTRICTION-out-2.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/RESTRICTION-out-2.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/RESTRICTION-out-3.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/RESTRICTION-out-3.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/RESTRICTION-out-4.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/RESTRICTION-out-4.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/RULECONDITION-out-1.dat: -------------------------------------------------------------------------------- 1 | Rule Condition 2 | NamedPropertyInformation 3 | Number of named props = 0x0000 4 | Restriction 5 | | rt = 0x3 = RES_CONTENT 6 | | resContent 7 | | | FuzzyLevel = FL_SUBSTRING = 0x00000001 8 | | | PropTag = 0x0C1D0102 (PT_BINARY): PR_SENDER_SEARCH_KEY: (PidTagSenderSearchKey, ptagSenderSearchKey) 9 | | | lpProp 10 | | | PropTag = 0x0C1D0102 (PT_BINARY) 11 | | | Name: PR_SENDER_SEARCH_KEY 12 | | | Other Matches: PidTagSenderSearchKey, ptagSenderSearchKey 13 | | | PropString = cb: 16 lpb: 7465737430314074657374312E434F4D 14 | | | AltPropString = test01@test1.COM -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/RULECONDITION-out-2.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/RULECONDITION-out-2.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/RULECONDITION-out-3.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/RULECONDITION-out-3.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/RULECONDITION-out-4.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/RULECONDITION-out-4.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SEARCHFOLDERDEFINITION-out-5.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/SEARCHFOLDERDEFINITION-out-5.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SEARCHFOLDERDEFINITION-out-6.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/SEARCHFOLDERDEFINITION-out-6.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SEARCHFOLDERDEFINITION-out-7.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/SEARCHFOLDERDEFINITION-out-7.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SID-out-1.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/Out/SID-out-1.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SID-out-2.dat: -------------------------------------------------------------------------------- 1 | SID 2 | User: (no domain)\(no name) 3 | Textual SID: S-1-5-21-2127521184-1604012920-1887927527-2066407 4 | Revision: 0x01 5 | SubAuthorityCount: 0x05 6 | IdentifierAuthority: SECURITY_NT_AUTHORITY 7 | SubAuthority[0]: 21 = 0x00000015 8 | SubAuthority[1]: 2127521184 = 0x7ECF65A0 9 | SubAuthority[2]: 1604012920 = 0x5F9B4B78 10 | SubAuthority[3]: 1887927527 = 0x70877CE7 11 | SubAuthority[4]: 2066407 = 0x001F87E7 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SID-out-3.dat: -------------------------------------------------------------------------------- 1 | SID 2 | User: NT AUTHORITY\SYSTEM 3 | Textual SID: S-1-5-18 4 | Revision: 0x01 5 | SubAuthorityCount: 0x01 6 | IdentifierAuthority: SECURITY_NT_AUTHORITY 7 | SubAuthority[0]: 18 = 0x00000012 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SID-out-4.dat: -------------------------------------------------------------------------------- 1 | SID 2 | User: (no domain)\(no name) 3 | Textual SID: (no SID) 4 | Revision: 0x01 5 | SubAuthorityCount: 0x04 6 | SubAuthority[0]: 1736704 = 0x001A8000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SID-out-5.dat: -------------------------------------------------------------------------------- 1 | SID 2 | User: (no domain)\(no name) 3 | Textual SID: (no SID) 4 | Revision: 0x01 5 | SubAuthorityCount: 0x04 6 | IdentifierAuthority: 268436996 7 | SubAuthority[0]: 3 = 0x00000003 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SID-out-6.dat: -------------------------------------------------------------------------------- 1 | SID 2 | User: (no domain)\(no name) 3 | Textual SID: S-255-5-11 4 | Revision: 0xFF 5 | SubAuthorityCount: 0x01 6 | IdentifierAuthority: SECURITY_NT_AUTHORITY 7 | SubAuthority[0]: 11 = 0x0000000B -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SID-out-7.dat: -------------------------------------------------------------------------------- 1 | SID 2 | User: (no domain)\(no name) 3 | Textual SID: S-1-5-21-2127521184-1604012920-1887927527-2066407 4 | Revision: 0x01 5 | SubAuthorityCount: 0x05 6 | IdentifierAuthority: SECURITY_NT_AUTHORITY 7 | SubAuthority[0]: 21 = 0x00000015 8 | SubAuthority[1]: 2127521184 = 0x7ECF65A0 9 | SubAuthority[2]: 1604012920 = 0x5F9B4B78 10 | SubAuthority[3]: 1887927527 = 0x70877CE7 11 | SubAuthority[4]: 2066407 = 0x001F87E7 12 | Unparsed data size = 0x00000003 13 | cb: 3 lpb: 123456 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SWAPPEDTODO-out-1.dat: -------------------------------------------------------------------------------- 1 | Swapped ToDo Data 2 | ulVersion = 0x00000001 3 | dwFlags = 0xF9 = TDP_ITEM_FLAGS | TDP_START_DATE | TDP_DUE_DATE | TDP_TITLE | TDP_REMINDER_FLAG | TDP_REMINDER_TIME 4 | dwToDoItem = 0x00000001 5 | wszFlagTo = Follow up...................................................................................................................................................................................................................................................... 6 | rtmStartDate = 0x0D2B6580 = 12:00:00.000 AM 2/4/2021 7 | rtmDueDate = 0x0D2B6580 = 12:00:00.000 AM 2/4/2021 8 | rtmReminder = 0x0D2B6AA8 = 10:00:00.000 PM 2/4/2021 9 | fReminderSet: true -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/SWAPPEDTODO-out-2.dat: -------------------------------------------------------------------------------- 1 | Swapped ToDo Data 2 | ulVersion = 0x00000001 3 | dwFlags = 0xF9 = TDP_ITEM_FLAGS | TDP_START_DATE | TDP_DUE_DATE | TDP_TITLE | TDP_REMINDER_FLAG | TDP_REMINDER_TIME 4 | dwToDoItem = 0x00000000 5 | wszFlagTo = ............................................................................................................................................................................................................................................................... 6 | rtmStartDate = 0x5AE980E0 = 12:00:00.000 AM 1/1/4501 7 | rtmDueDate = 0x5AE980E0 = 12:00:00.000 AM 1/1/4501 8 | rtmReminder = 0x5AE980E0 = 12:00:00.000 AM 1/1/4501 9 | fReminderSet: false -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/TASKASSIGNERS-out-1.dat: -------------------------------------------------------------------------------- 1 | Task Assigners 2 | cAssigners = 0x00000001 = 1 3 | Task Assigner[0] 4 | cbEntryID = 0x0000005A = 90 5 | lpEntryID 6 | cb: 90 lpb: 00000000DCA740C8C042101AB4B908002B2FE18201000000000000002F4F3D534F4D454F4E4545452F4F553D534F4D45424F4459454C53452F434E3D524543495049454E54532F434E3D412D4444554445303939313531333900 7 | szDisplayName (ANSI) = Dude Guyla 8 | szDisplayName (Unicode) = Dude Guyla -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/TIMEZONE-out-1.dat: -------------------------------------------------------------------------------- 1 | Time Zone 2 | lBias = 0x0000012C (300) 3 | lStandardBias = 0x00000000 (0) 4 | lDaylightBias = 0xFFFFFFC4 (-60) 5 | wStandardYear = 0x0000 (0) 6 | stStandardDate 7 | wYear = 0x0 (0) 8 | wMonth = 0xB (11) 9 | wDayOfWeek = 0x0 (0) 10 | wDay = 0x1 (1) 11 | wHour = 0x2 (2) 12 | wMinute = 0x0 (0) 13 | wSecond = 0x0 (0) 14 | wMilliseconds = 0x0 (0) 15 | wDaylightDate = 0x0000 (0) 16 | stDaylightDate 17 | wYear = 0x0 (0) 18 | wMonth = 0x3 (3) 19 | wDayOfWeek = 0x0 (0) 20 | wDay = 0x2 (2) 21 | wHour = 0x2 (2) 22 | wMinute = 0x0 (0) 23 | wSecond = 0x0 (0) 24 | wMilliseconds = 0x0 (0) -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/TIMEZONEDEFINITION-out-3.dat: -------------------------------------------------------------------------------- 1 | Time Zone Definition 2 | bMajorVersion = 0x02 (2) 3 | bMinorVersion = 0x01 (1) 4 | cbHeader = 0x0030 (48) 5 | wReserved = 0x0002 (2) 6 | cchKeyName = 0x0015 (21) 7 | szKeyName = Eastern Standard Time 8 | cRules = 0x0000 (0) 9 | Unparsed data size = 0x00000084 10 | cb: 132 lpb: 02013E000000D60700000000000000000000000000002C01000000000000C4FFFFFF00000A000000050002000000000000000000040000000100020000000000000002013E000200D70700000000000000000000000000002C01000000000000C4FFFFFF00000B0000000100020000000000000000000300000002000200000000000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/WEBVIEWPERSISTSTREAM-out-1.dat: -------------------------------------------------------------------------------- 1 | Web View Persistence Object Stream 2 | cWebViews = 1 3 | Web View 0 4 | dwVersion = 0x00000002 = WEBVIEW_PERSISTENCE_VERSION 5 | dwType = 0x00000001 = WEBVIEWURL 6 | dwFlags = 0x00000001 = WEBVIEW_FLAGS_SHOWBYDEFAULT 7 | dwUnused 8 | cb: 28 lpb: 00000000000000000000000000000000000000000000000000000000 9 | cbData = 0x00000032 10 | wzURL 11 | http://www.microsoft.com -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/WEBVIEWPERSISTSTREAM-out-2.dat: -------------------------------------------------------------------------------- 1 | Web View Persistence Object Stream 2 | cWebViews = 1 3 | Web View 0 4 | dwVersion = 0x00000002 = WEBVIEW_PERSISTENCE_VERSION 5 | dwType = 0x00000002 = 0x2 6 | dwFlags = 0x00000001 = WEBVIEW_FLAGS_SHOWBYDEFAULT 7 | dwUnused 8 | cb: 28 lpb: 00000000000000000000000000000000000000000000000000000000 9 | cbData = 0x00000032 10 | lpData 11 | cb: 50 lpb: 68007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/WEBVIEWPERSISTSTREAM-out-3.dat: -------------------------------------------------------------------------------- 1 | Web View Persistence Object Stream 2 | cWebViews = 2 3 | Web View 0 4 | dwVersion = 0x00000002 = WEBVIEW_PERSISTENCE_VERSION 5 | dwType = 0x00000001 = WEBVIEWURL 6 | dwFlags = 0x00000001 = WEBVIEW_FLAGS_SHOWBYDEFAULT 7 | dwUnused 8 | cb: 28 lpb: 00000000000000000000000000000000000000000000000000000000 9 | cbData = 0x00000032 10 | wzURL 11 | http://www.microsoft.com 12 | Web View 1 13 | dwVersion = 0x00000002 = WEBVIEW_PERSISTENCE_VERSION 14 | dwType = 0x00000001 = WEBVIEWURL 15 | dwFlags = 0x00000001 = WEBVIEW_FLAGS_SHOWBYDEFAULT 16 | dwUnused 17 | cb: 28 lpb: 00000000000000000000000000000000000000000000000000000000 18 | cbData = 0x00000032 19 | wzURL 20 | http://www.microsoft.com -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/WEBVIEWPERSISTSTREAM-out-5.dat: -------------------------------------------------------------------------------- 1 | Web View Persistence Object Stream 2 | cWebViews = 1 3 | Web View 0 4 | dwVersion = 0x00000002 = WEBVIEW_PERSISTENCE_VERSION 5 | dwType = 0x00000001 = WEBVIEWURL 6 | dwFlags = 0x00000001 = WEBVIEW_FLAGS_SHOWBYDEFAULT 7 | dwUnused 8 | cb: 28 lpb: 00000000000000000000000000000000000000000000000000000000 9 | cbData = 0x00000032 10 | wzURL 11 | http://www.microsoft.comm -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/WEBVIEWPERSISTSTREAM-out-6.dat: -------------------------------------------------------------------------------- 1 | Web View Persistence Object Stream 2 | cWebViews = 1 3 | Web View 0 4 | dwVersion = 0x00000002 = WEBVIEW_PERSISTENCE_VERSION 5 | dwType = 0x00000001 = WEBVIEWURL 6 | dwFlags = 0x00000001 = WEBVIEW_FLAGS_SHOWBYDEFAULT 7 | dwUnused 8 | cb: 28 lpb: 00000000000000000000000000000000000000000000000000000000 9 | cbData = 0x00000032 10 | wzURL 11 | http://www.microsoft.com -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/WEBVIEWPERSISTSTREAM-out-7.dat: -------------------------------------------------------------------------------- 1 | Web View Persistence Object Stream 2 | cWebViews = 0 3 | Unparsed data size = 0x0000005E 4 | cb: 94 lpb: 020000000100000001000000000000000000000000000000000000000000000000000000000000003300000068007400740070003A002F002F007700770077002E006D006900630072006F0073006F00660074002E0063006F006D000000 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/XID-out-1.dat: -------------------------------------------------------------------------------- 1 | XID 2 | NamespaceGuid = {67375814-34B6-416D-A95E-06FFF0D886A8} 3 | LocalId = cb: 6 lpb: 00000004C755 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/XID-out-2.dat: -------------------------------------------------------------------------------- 1 | XID 2 | NamespaceGuid = {67375814-34B6-416D-A95E-06FFF0D886A8} 3 | LocalId = cb: 6 lpb: 000000032256 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/Out/XID-out-3.dat: -------------------------------------------------------------------------------- 1 | XID 2 | NamespaceGuid = {41213B37-7628-44FE-8E8D-71BE34CC3154} 3 | LocalId = cb: 6 lpb: 00004F6592F8 -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/japanese.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/SmartViewTestData/japanese.dat -------------------------------------------------------------------------------- /UnitTest/SmartViewTestData/test.dat: -------------------------------------------------------------------------------- 1 | abc 2 | 123 -------------------------------------------------------------------------------- /UnitTest/Win32.runsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | x86 5 | 6 | -------------------------------------------------------------------------------- /UnitTest/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /UnitTest/res/UnitTest.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/res/UnitTest.rc -------------------------------------------------------------------------------- /UnitTest/res/resource.h: -------------------------------------------------------------------------------- 1 | //{{NO_DEPENDENCIES}} 2 | // Microsoft Visual C++ generated include file. 3 | // Used by UnitTest.rc 4 | // 5 | #define TEXTFILE 256 6 | 7 | #define IDR_LOADTESTJAPANESE 50001 8 | #define IDR_LOADTESTENGLISH 50002 9 | 10 | // Next default values for new objects 11 | // 12 | #ifdef APSTUDIO_INVOKED 13 | #ifndef APSTUDIO_READONLY_SYMBOLS 14 | #define _APS_NEXT_RESOURCE_VALUE 102 15 | #define _APS_NEXT_COMMAND_VALUE 40001 16 | #define _APS_NEXT_CONTROL_VALUE 1001 17 | #define _APS_NEXT_SYMED_VALUE 101 18 | #endif 19 | #endif 20 | -------------------------------------------------------------------------------- /UnitTest/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include -------------------------------------------------------------------------------- /UnitTest/tests/blockPVtest.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/UnitTest/tests/blockPVtest.cpp -------------------------------------------------------------------------------- /UnitTest/x64.runsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | x64 5 | 6 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | name: MFCMAPI 2 | theme: jekyll-theme-cayman 3 | -------------------------------------------------------------------------------- /_includes/page-footer.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_includes/page-header.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /core/interpret/flags.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace flags 4 | { 5 | std::wstring InterpretFlags(ULONG ulFlagName, LONG lFlagValue); 6 | std::wstring AllFlagsToString(ULONG ulFlagName, bool bHex); 7 | } // namespace flags 8 | -------------------------------------------------------------------------------- /core/interpret/proptags.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | struct NAME_ARRAY_ENTRY_V2; 4 | 5 | namespace proptags 6 | { 7 | #define PROP_TAG_MASK 0xffff0000 8 | 9 | struct PropTagNames 10 | { 11 | std::wstring bestGuess; 12 | std::wstring otherMatches; 13 | }; 14 | 15 | std::wstring TagToString(ULONG ulPropTag, _In_opt_ LPMAPIPROP lpObj, bool bIsAB, bool bSingleLine); 16 | std::wstring TagToString(const std::wstring& name, ULONG ulPropTag); 17 | 18 | // Function to convert property tags to their names 19 | PropTagNames PropTagToPropName(ULONG ulPropTag, bool bIsAB); 20 | 21 | void FindTagArrayMatches( 22 | _In_ ULONG ulTarget, 23 | bool bIsAB, 24 | const std::vector& MyArray, 25 | std::vector& ulExacts, 26 | std::vector& ulPartials); 27 | 28 | // Strictly does a lookup in the array. Does not convert otherwise 29 | _Check_return_ ULONG LookupPropName(_In_ const std::wstring& lpszPropName); 30 | _Check_return_ ULONG PropNameToPropTag(_In_ const std::wstring& lpszPropName); 31 | } // namespace proptags -------------------------------------------------------------------------------- /core/interpret/proptype.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace proptype 4 | { 5 | std::wstring TypeToString(ULONG ulPropTag); 6 | _Check_return_ ULONG PropTypeNameToPropType(_In_ const std::wstring& lpszPropType); 7 | } // namespace proptype -------------------------------------------------------------------------------- /core/interpret/sid.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace sid 4 | { 5 | enum class aceType 6 | { 7 | Container, 8 | Message, 9 | FreeBusy 10 | }; 11 | 12 | struct SidAccount 13 | { 14 | public: 15 | SidAccount() = default; 16 | SidAccount(std::wstring _domain, std::wstring _name) noexcept 17 | : domain(std::move(_domain)), name(std::move(_name)){}; 18 | _Check_return_ std::wstring getDomain() const; 19 | _Check_return_ std::wstring getName() const; 20 | 21 | private: 22 | std::wstring domain; 23 | std::wstring name; 24 | }; 25 | 26 | _Check_return_ std::wstring LookupIdentifierAuthority(const SID_IDENTIFIER_AUTHORITY& authority); 27 | _Check_return_ std::wstring IdentifierAuthorityToString(const SID_IDENTIFIER_AUTHORITY& authority); 28 | _Check_return_ SidAccount LookupAccountSid(std::vector buf); 29 | _Check_return_ std::wstring NTSDToString(const std::vector& buf, aceType acetype); 30 | } // namespace sid -------------------------------------------------------------------------------- /core/mapi/account/accountHelper.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | class CAccountHelper : public IOlkAccountHelper 4 | { 5 | public: 6 | CAccountHelper(LPCWSTR lpwszProfName, LPMAPISESSION lpSession); 7 | ~CAccountHelper(); 8 | 9 | // IUnknown 10 | STDMETHODIMP QueryInterface(REFIID riid, LPVOID* ppvObj) override; 11 | STDMETHODIMP_(ULONG) AddRef() noexcept override; 12 | STDMETHODIMP_(ULONG) Release() noexcept override; 13 | 14 | // IOlkAccountHelper 15 | STDMETHODIMP PlaceHolder1(LPVOID) noexcept override { return E_NOTIMPL; } 16 | 17 | STDMETHODIMP GetIdentity(LPWSTR pwszIdentity, DWORD* pcch) noexcept override; 18 | STDMETHODIMP GetMapiSession(LPUNKNOWN* ppmsess) override; 19 | STDMETHODIMP HandsOffSession() noexcept override { return E_NOTIMPL; } 20 | 21 | private: 22 | LONG m_cRef{}; 23 | LPMAPISESSION m_lpSession{}; 24 | std::wstring m_lpwszProfile{}; 25 | }; -------------------------------------------------------------------------------- /core/mapi/adviseSink.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace mapi 4 | { 5 | extern std::function 6 | onNotifyCallback; 7 | 8 | class adviseSink : public IMAPIAdviseSink 9 | { 10 | public: 11 | adviseSink(_In_ HWND hWndParent, _In_opt_ HTREEITEM hTreeParent); 12 | ~adviseSink(); 13 | 14 | STDMETHODIMP QueryInterface(REFIID riid, LPVOID* ppvObj) override; 15 | STDMETHODIMP_(ULONG) AddRef() override; 16 | STDMETHODIMP_(ULONG) Release() override; 17 | STDMETHODIMP_(ULONG) OnNotify(ULONG cNotify, LPNOTIFICATION lpNotifications) override; 18 | 19 | void SetAdviseTarget(LPMAPIPROP lpProp) noexcept; 20 | 21 | private: 22 | LONG m_cRef{1}; 23 | const HWND m_hWndParent{}; 24 | const HTREEITEM m_hTreeParent{}; 25 | LPMAPIPROP m_lpAdviseTarget{}; // Used only for named prop lookups in debug logging. 26 | }; 27 | } // namespace mapi -------------------------------------------------------------------------------- /core/mapi/exportProfile.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace output 4 | { 5 | void ExportProfile( 6 | _In_ const std::wstring& szProfile, 7 | _In_ const std::wstring& szProfileSection, 8 | bool bByteSwapped, 9 | const std::wstring& szFileName); 10 | } -------------------------------------------------------------------------------- /core/mapi/mapiMemory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace mapi 5 | { 6 | // Allocates an object using MAPI's memory allocators. 7 | // Switches allocators based on whether parent is passed. 8 | // Zero's memory before returning. 9 | template T allocate(ULONG size, _In_opt_ const VOID* parent = nullptr) 10 | { 11 | LPVOID obj = nullptr; 12 | 13 | if (parent) 14 | { 15 | EC_H_S(MAPIAllocateMore(size, const_cast(parent), &obj)); 16 | } 17 | else 18 | { 19 | EC_H_S(MAPIAllocateBuffer(size, &obj)); 20 | } 21 | 22 | if (obj) 23 | { 24 | memset(obj, 0, size); 25 | } 26 | 27 | return static_cast(obj); 28 | } 29 | } // namespace mapi -------------------------------------------------------------------------------- /core/mapi/mapiProgress.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | namespace mapi::mapiui 5 | { 6 | std::function getMAPIProgress; 7 | 8 | _Check_return_ LPMAPIPROGRESS GetMAPIProgress(const std::wstring& lpszContext, _In_ HWND hWnd) 9 | { 10 | return getMAPIProgress ? getMAPIProgress(lpszContext, hWnd) : nullptr; 11 | } 12 | } // namespace mapi::mapiui -------------------------------------------------------------------------------- /core/mapi/mapiProgress.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace mapi::mapiui 4 | { 5 | extern std::function getMAPIProgress; 6 | _Check_return_ LPMAPIPROGRESS GetMAPIProgress(const std::wstring& lpszContext, _In_ HWND hWnd); 7 | } // namespace mapi::mapiui -------------------------------------------------------------------------------- /core/mapi/version.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace version 4 | { 5 | std::wstring GetOutlookVersionString(); 6 | } // namespace version -------------------------------------------------------------------------------- /core/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /core/property/attributes.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace property 4 | { 5 | class Attribute 6 | { 7 | public: 8 | Attribute(const std::wstring& key, const std::wstring& value); 9 | Attribute(Attribute const& other); 10 | 11 | bool empty() const; 12 | std::wstring Key() const; 13 | std::wstring Value() const; 14 | 15 | std::wstring toXML() const; 16 | 17 | private: 18 | std::wstring m_key; 19 | std::wstring m_value; 20 | }; 21 | 22 | class Attributes 23 | { 24 | public: 25 | void AddAttribute(const std::wstring& key, const std::wstring& value); 26 | std::wstring GetAttribute(const std::wstring& key) const; 27 | 28 | std::wstring toXML() const; 29 | 30 | private: 31 | std::vector m_attributes; 32 | }; 33 | } // namespace property -------------------------------------------------------------------------------- /core/property/parseProperty.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace property 5 | { 6 | void parseProperty( 7 | _In_opt_ const _SPropValue* lpProp, 8 | _In_opt_ std::wstring* PropString, 9 | _In_opt_ std::wstring* AltPropString); 10 | 11 | Property parseProperty(_In_opt_ const _SPropValue* lpProp); 12 | 13 | std::wstring RestrictionToString(_In_ const _SRestriction* lpRes, _In_opt_ LPMAPIPROP lpObj); 14 | std::wstring ActionsToString(_In_ const ACTIONS& actions); 15 | 16 | std::wstring AdrListToString(_In_ const ADRLIST& adrList); 17 | } // namespace property -------------------------------------------------------------------------------- /core/res/MFCMAPI64x64_logo.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/core/res/MFCMAPI64x64_logo.bmp -------------------------------------------------------------------------------- /core/res/MFCMapi.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/core/res/MFCMapi.ico -------------------------------------------------------------------------------- /core/res/advise.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/core/res/advise.bmp -------------------------------------------------------------------------------- /core/res/close.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/core/res/close.bmp -------------------------------------------------------------------------------- /core/res/icons.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/core/res/icons.bmp -------------------------------------------------------------------------------- /core/res/maximize.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/core/res/maximize.bmp -------------------------------------------------------------------------------- /core/res/minimize.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/core/res/minimize.bmp -------------------------------------------------------------------------------- /core/res/restore.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/core/res/restore.bmp -------------------------------------------------------------------------------- /core/res/splith.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/core/res/splith.cur -------------------------------------------------------------------------------- /core/res/splitv.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/core/res/splitv.cur -------------------------------------------------------------------------------- /core/smartview/EntryList.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | namespace smartview 6 | { 7 | class EntryListEntryStruct : public block 8 | { 9 | public: 10 | void parseEntryID(); 11 | 12 | private: 13 | void parse() override; 14 | void parseBlocks() override; 15 | 16 | std::shared_ptr> EntryLength = emptyT(); 17 | std::shared_ptr> EntryLengthPad = emptyT(); 18 | std::shared_ptr EntryId; 19 | }; 20 | 21 | class EntryList : public block 22 | { 23 | private: 24 | void parse() override; 25 | void parseBlocks() override; 26 | 27 | std::shared_ptr> m_EntryCount = emptyT(); 28 | std::shared_ptr> m_Pad = emptyT(); 29 | 30 | std::vector> m_Entry; 31 | }; 32 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/ExtendedFlags.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace smartview 7 | { 8 | class ExtendedFlag : public block 9 | { 10 | public: 11 | bool bBadData{}; 12 | 13 | private: 14 | void parse() override; 15 | void parseBlocks() override; 16 | 17 | std::shared_ptr> Id = emptyT(); 18 | std::shared_ptr> Cb = emptyT(); 19 | std::shared_ptr> ExtendedFlags = emptyT(); 20 | std::shared_ptr> SearchFolderID = emptyT(); 21 | std::shared_ptr> SearchFolderTag = emptyT(); 22 | std::shared_ptr> ToDoFolderVersion = emptyT(); 23 | std::shared_ptr lpUnknownData = emptyBB(); 24 | }; 25 | 26 | class ExtendedFlags : public block 27 | { 28 | private: 29 | void parse() override; 30 | void parseBlocks() override; 31 | 32 | std::vector> m_pefExtendedFlags; 33 | }; 34 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/FlatEntryList.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | namespace smartview 8 | { 9 | class FlatEntryID : public block 10 | { 11 | private: 12 | void parse() override; 13 | void parseBlocks() override; 14 | 15 | std::shared_ptr> dwSize = emptyT(); 16 | std::shared_ptr lpEntryID; 17 | std::shared_ptr padding = emptyBB(); 18 | }; 19 | 20 | class FlatEntryList : public block 21 | { 22 | private: 23 | void parse() override; 24 | void parseBlocks() override; 25 | 26 | std::shared_ptr> m_cEntries = emptyT(); 27 | std::shared_ptr> m_cbEntries = emptyT(); 28 | std::vector> m_pEntryIDs; 29 | }; 30 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/GlobalObjectId.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace smartview 7 | { 8 | class GlobalObjectId : public block 9 | { 10 | private: 11 | void parse() override; 12 | void parseBlocks() override; 13 | 14 | std::shared_ptr m_Id = emptyBB(); // 16 bytes 15 | std::shared_ptr> m_Year = emptyT(); 16 | std::shared_ptr> m_Month = emptyT(); 17 | std::shared_ptr> m_Day = emptyT(); 18 | std::shared_ptr> m_CreationTime = emptyT(); 19 | std::shared_ptr> m_X = emptyT(); 20 | std::shared_ptr> m_dwSize = emptyT(); 21 | std::shared_ptr m_lpData = emptyBB(); 22 | }; 23 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/PCL.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace smartview 7 | { 8 | class SizedXID : public block 9 | { 10 | private: 11 | void parse() override; 12 | void parseBlocks() override; 13 | 14 | std::shared_ptr> XidSize = emptyT(); 15 | std::shared_ptr> NamespaceGuid = emptyT(); 16 | std::shared_ptr LocalID = emptyBB(); 17 | }; 18 | 19 | class PCL : public block 20 | { 21 | private: 22 | void parse() override; 23 | void parseBlocks() override; 24 | 25 | std::vector> m_lpXID; 26 | }; 27 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/PropertiesStruct.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | namespace smartview 6 | { 7 | class PropertiesStruct : public block 8 | { 9 | public: 10 | PropertiesStruct(DWORD cValues, bool bNickName, bool bRuleCondition) 11 | : m_MaxEntries(cValues), m_NickName(bNickName), m_RuleCondition(bRuleCondition) 12 | { 13 | } 14 | 15 | private: 16 | void parse() override; 17 | void parseBlocks() override; 18 | 19 | bool m_NickName{}; 20 | bool m_RuleCondition{}; 21 | DWORD m_MaxEntries{_MaxEntriesSmall}; 22 | std::vector> m_Props; 23 | }; 24 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/RecipientRowStream.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace smartview 7 | { 8 | class ADRENTRYStruct : public block 9 | { 10 | private: 11 | void parse() override; 12 | void parseBlocks() override; 13 | 14 | std::shared_ptr> ulReserved1 = emptyT(); 15 | std::shared_ptr> cValues = emptyT(); 16 | std::shared_ptr rgPropVals; 17 | }; 18 | 19 | class RecipientRowStream : public block 20 | { 21 | private: 22 | void parse() override; 23 | void parseBlocks() override; 24 | 25 | std::shared_ptr> m_cVersion = emptyT(); 26 | std::shared_ptr> m_cRowCount = emptyT(); 27 | std::vector> m_lpAdrEntry; 28 | }; 29 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/SD/ACLBin.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | namespace smartview 8 | { 9 | // [MS-DTYP] 2.4.5 ACL 10 | // https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/32d72257-0e7c-4782-bc2a-405af4d5469d 11 | class ACLBin : public block 12 | { 13 | private: 14 | std::shared_ptr> Revision = emptyT(); 15 | std::shared_ptr> Sbz1 = emptyT(); 16 | std::shared_ptr> AclSize = emptyT(); 17 | std::shared_ptr> AceCount = emptyT(); 18 | std::shared_ptr> Sbz2 = emptyT(); 19 | std::vector> aces; 20 | 21 | void parse() override; 22 | void parseBlocks() override; 23 | }; 24 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/SD/SIDBin.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace smartview 7 | { 8 | // [MS-DTYP] 2.4.2.2 SID--Packet Representation 9 | // https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-dtyp/f992ad60-0fe4-4b87-9fed-beb478836861 10 | class SIDBin : public block 11 | { 12 | private: 13 | void parse() override; 14 | void parseBlocks() override; 15 | 16 | std::shared_ptr> Revision = emptyT(); 17 | std::shared_ptr> SubAuthorityCount = emptyT(); 18 | std::shared_ptr IdentifierAuthority = emptyBB(); // 6 bytes 19 | std::vector>> SubAuthority; 20 | 21 | // We keep this for a call to LookupAccountSid 22 | std::shared_ptr m_SIDbin = emptyBB(); 23 | }; 24 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/SPropValueStruct.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace smartview 7 | { 8 | class SPropValueStruct : public block 9 | { 10 | public: 11 | SPropValueStruct(int index, bool doNickname, bool doRuleProcessing) noexcept 12 | : m_index(index), m_doNickname(doNickname), m_doRuleProcessing(doRuleProcessing) 13 | { 14 | } 15 | 16 | private: 17 | void parse() override; 18 | void parseBlocks() override; 19 | 20 | std::shared_ptr> PropType = emptyT(); 21 | std::shared_ptr> PropID = emptyT(); 22 | std::shared_ptr> ulPropTag = emptyT(); 23 | std::shared_ptr value; 24 | bool m_doNickname{}; 25 | bool m_doRuleProcessing{}; 26 | int m_index{}; 27 | }; 28 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/WebViewPersistStream.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace smartview 7 | { 8 | class WebViewPersist : public block 9 | { 10 | private: 11 | void parse() override; 12 | void parseBlocks() override; 13 | 14 | std::shared_ptr> dwVersion = emptyT(); 15 | std::shared_ptr> dwType = emptyT(); 16 | std::shared_ptr> dwFlags = emptyT(); 17 | std::shared_ptr dwUnused = emptyBB(); // 7 DWORDs 18 | std::shared_ptr> cbData = emptyT(); 19 | std::shared_ptr lpData = emptyBB(); 20 | }; 21 | 22 | class WebViewPersistStream : public block 23 | { 24 | private: 25 | void parse() override; 26 | void parseBlocks() override; 27 | 28 | std::vector> m_lpWebViews; 29 | }; 30 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/XID.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | namespace smartview 8 | { 9 | void XID::parse() 10 | { 11 | m_NamespaceGuid = blockT::parse(parser); 12 | const auto cbLocalId = parser->getSize(); 13 | m_LocalID = blockBytes::parse(parser, cbLocalId, cbLocalId); 14 | } 15 | 16 | void XID::parseBlocks() 17 | { 18 | setText(L"XID"); 19 | addChild(m_NamespaceGuid, L"NamespaceGuid = %1!ws!", guid::GUIDToString(m_NamespaceGuid->getData()).c_str()); 20 | if (m_LocalID) addChild(m_LocalID, L"LocalId = %1!ws!", m_LocalID->toHexString(true).c_str()); 21 | } 22 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/XID.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace smartview 7 | { 8 | class XID : public block 9 | { 10 | private: 11 | void parse() override; 12 | void parseBlocks() override; 13 | 14 | std::shared_ptr> m_NamespaceGuid = emptyT(); 15 | std::shared_ptr m_LocalID = emptyBB(); 16 | }; 17 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/addinParser.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | namespace smartview 6 | { 7 | void addinParser::parse() { bin = blockBytes::parse(parser, parser->getSize()); } 8 | 9 | void addinParser::parseBlocks() 10 | { 11 | auto sv = addin::AddInSmartView(type, static_cast(bin->size()), bin->data()); 12 | if (!sv.empty()) 13 | { 14 | setText(addin::AddInStructTypeToString(type)); 15 | addChild(bin, sv); 16 | } 17 | else 18 | { 19 | setText(L"Unknown Parser %1!d!", type); 20 | addChild(bin); 21 | } 22 | } 23 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/addinParser.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace smartview 7 | { 8 | class addinParser : public block 9 | { 10 | public: 11 | addinParser(parserType _type) : type{_type} {} 12 | 13 | private: 14 | void parse() override; 15 | void parseBlocks() override; 16 | 17 | std::shared_ptr bin = emptyBB(); 18 | parserType type; 19 | }; 20 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/block/scratchBlock.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace smartview 5 | { 6 | class scratchBlock : public block 7 | { 8 | public: 9 | scratchBlock() noexcept { parsed = true; } 10 | 11 | private: 12 | void parse() override{}; 13 | }; 14 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/decodeEntryID.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | namespace smartview 6 | { 7 | class decodeEntryID : public block 8 | { 9 | private: 10 | void parse() override; 11 | void parseBlocks() override; 12 | 13 | std::shared_ptr entryID = emptyBB(); 14 | }; 15 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/encodeEntryID.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | namespace smartview 5 | { 6 | _Check_return_ std::wstring EncodeID(size_t cbEID, _In_ const BYTE* pbSrc) 7 | { 8 | std::wstring wzIDEncoded; 9 | wzIDEncoded.reserve(cbEID); 10 | 11 | // pbSrc is the item Entry ID or the attachment ID 12 | // cbEID is the size in bytes of pbSrc 13 | for (size_t i = 0; i < cbEID; i++, pbSrc++) 14 | { 15 | wzIDEncoded.push_back(static_cast(*pbSrc + kwBaseOffset)); 16 | } 17 | 18 | // wzIDEncoded now contains the entry ID encoded. 19 | return wzIDEncoded; 20 | } 21 | 22 | void encodeEntryID::parse() { entryID = blockBytes::parse(parser, parser->getSize()); } 23 | 24 | void encodeEntryID::parseBlocks() 25 | { 26 | setText(L"Encoded Entry ID"); 27 | addChild(entryID, EncodeID(entryID->size(), entryID->data())); 28 | } 29 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/encodeEntryID.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | namespace smartview 6 | { 7 | constexpr WORD kwBaseOffset = 0xAC00; // Hangul char range (AC00-D7AF) 8 | 9 | class encodeEntryID : public block 10 | { 11 | private: 12 | void parse() override; 13 | void parseBlocks() override; 14 | 15 | std::shared_ptr entryID = emptyBB(); 16 | }; 17 | } // namespace smartview -------------------------------------------------------------------------------- /core/smartview/swappedToDo.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | #include 5 | 6 | namespace smartview 7 | { 8 | // https://docs.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxoflag/74057397-a90e-4454-bd48-3923e09c50b0 9 | class swappedToDo : public block 10 | { 11 | public: 12 | bool bBadData{}; 13 | 14 | private: 15 | void parse() override; 16 | void parseBlocks() override; 17 | 18 | std::shared_ptr> ulVersion = emptyT(); 19 | std::shared_ptr> dwFlags = emptyT(); 20 | std::shared_ptr> dwToDoItem = emptyT(); 21 | std::shared_ptr wszFlagTo = emptySW(); 22 | std::shared_ptr> rtmStartDate = emptyT(); 23 | std::shared_ptr> rtmDueDate = emptyT(); 24 | std::shared_ptr> rtmReminder = emptyT(); 25 | std::shared_ptr> fReminderSet = emptyT(); 26 | }; 27 | } // namespace smartview -------------------------------------------------------------------------------- /core/sortlistdata/binaryData.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | namespace sortlistdata 6 | { 7 | void binaryData::init(sortListData* data, _In_opt_ LPSBinary lpOldBin) 8 | { 9 | if (!data) return; 10 | data->init(std::make_shared(lpOldBin)); 11 | } 12 | 13 | binaryData::binaryData(_In_opt_ LPSBinary lpOldBin) noexcept 14 | { 15 | if (lpOldBin) 16 | { 17 | m_OldBin = *lpOldBin; 18 | } 19 | } 20 | 21 | _Check_return_ SBinary binaryData::detachBin(_In_opt_ const VOID* parent) 22 | { 23 | if (m_NewBin.lpb) 24 | { 25 | return m_NewBin; 26 | } 27 | else 28 | { 29 | return mapi::CopySBinary(m_OldBin, parent); 30 | } 31 | } 32 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/binaryData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace sortlistdata 5 | { 6 | class sortListData; 7 | 8 | class binaryData : public IData 9 | { 10 | public: 11 | static void init(sortListData* data, _In_opt_ LPSBinary lpOldBin); 12 | 13 | binaryData(_In_opt_ LPSBinary lpOldBin) noexcept; 14 | 15 | _Check_return_ LPSBinary getCurrentBin() 16 | { 17 | if (m_NewBin.lpb) 18 | { 19 | return &m_NewBin; 20 | } 21 | else 22 | { 23 | return &m_OldBin; 24 | } 25 | } 26 | void setCurrentBin(_In_ const SBinary& bin) { m_NewBin = bin; } 27 | _Check_return_ SBinary detachBin(_In_opt_ const VOID* parent); 28 | 29 | private: 30 | SBinary m_OldBin{}; // not allocated - just a pointer 31 | SBinary m_NewBin{}; // MAPIAllocateMore from m_lpNewEntryList 32 | }; 33 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/commentData.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | namespace sortlistdata 6 | { 7 | void commentData::init(sortListData* data, _In_opt_ const _SPropValue* lpOldProp) 8 | { 9 | if (!data) return; 10 | data->init(std::make_shared(lpOldProp), true); 11 | } 12 | 13 | commentData::commentData(_In_opt_ const _SPropValue* lpOldProp) noexcept 14 | { 15 | m_lpOldProp = lpOldProp; 16 | m_lpNewProp = nullptr; 17 | } 18 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/commentData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace sortlistdata 5 | { 6 | class sortListData; 7 | 8 | class commentData : public IData 9 | { 10 | public: 11 | commentData(_In_opt_ const _SPropValue* lpOldProp) noexcept; 12 | 13 | static void init(sortListData* data, _In_opt_ const _SPropValue* lpOldProp); 14 | 15 | _Check_return_ const SPropValue* getCurrentProp() { return m_lpNewProp ? m_lpNewProp : m_lpOldProp; } 16 | void setCurrentProp(_In_ SPropValue* prop) { m_lpNewProp = prop; } 17 | 18 | private: 19 | const SPropValue* m_lpOldProp; // not allocated - just a pointer 20 | LPSPropValue m_lpNewProp; // Owned by an alloc parent - do not free 21 | }; 22 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/data.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace sortlistdata 4 | { 5 | class IData 6 | { 7 | public: 8 | virtual ~IData() {} 9 | }; 10 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/mvPropData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace sortlistdata 5 | { 6 | class sortListData; 7 | 8 | class mvPropData : public IData 9 | { 10 | public: 11 | static void init(sortListData* data, _In_ const _SPropValue* lpProp, ULONG iProp); 12 | static void init(sortListData* data, _In_opt_ const _SPropValue* lpProp); 13 | 14 | mvPropData(_In_opt_ const _SPropValue* lpProp, ULONG iProp); 15 | mvPropData(_In_opt_ const _SPropValue* lpProp); 16 | 17 | _Check_return_ _PV getVal() { return m_val; } 18 | 19 | private: 20 | _PV m_val{}; 21 | std::string m_lpszA{}; 22 | std::wstring m_lpszW{}; 23 | std::vector m_lpBin{}; 24 | }; 25 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/propListData.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | namespace sortlistdata 6 | { 7 | void propListData::init(sortListData* data, _In_ ULONG ulPropTag) 8 | { 9 | if (!data) return; 10 | 11 | data->init(std::make_shared(ulPropTag), true); 12 | } 13 | 14 | propListData::propListData(_In_ ULONG ulPropTag) noexcept : m_ulPropTag(ulPropTag) {} 15 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/propListData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace sortlistdata 5 | { 6 | class sortListData; 7 | 8 | class propListData : public IData 9 | { 10 | public: 11 | static void init(sortListData* data, _In_ ULONG ulPropTag); 12 | 13 | propListData(_In_ ULONG ulPropTag) noexcept; 14 | _Check_return_ ULONG getPropTag() { return m_ulPropTag; } 15 | void setPropTag(ULONG ulPropTag) { m_ulPropTag = ulPropTag; } 16 | 17 | private: 18 | ULONG m_ulPropTag{}; 19 | }; 20 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/propModelData.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | namespace sortlistdata 6 | { 7 | void propModelData::init(sortListData* data, _In_ std::shared_ptr model) 8 | { 9 | if (!data) return; 10 | 11 | data->init(std::make_shared(model), true); 12 | } 13 | 14 | propModelData::propModelData(_In_ std::shared_ptr model) noexcept : m_model(model) {} 15 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/propModelData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | #include 4 | 5 | namespace sortlistdata 6 | { 7 | class sortListData; 8 | 9 | class propModelData : public IData 10 | { 11 | public: 12 | static void init(sortListData* data, _In_ std::shared_ptr model); 13 | 14 | propModelData(_In_ std::shared_ptr model) noexcept; 15 | _Check_return_ ULONG getPropTag() { return m_model->ulPropTag(); } 16 | _Check_return_ std::wstring getName() { return m_model->name(); } 17 | const std::wstring ToString() noexcept { return m_model->ToString(); } 18 | 19 | private: 20 | std::shared_ptr m_model; 21 | }; 22 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/resData.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | namespace sortlistdata 7 | { 8 | void resData::init(sortListData* data, _In_opt_ const _SRestriction* lpOldRes) 9 | { 10 | if (!data) return; 11 | 12 | data->init(std::make_shared(lpOldRes), true); 13 | } 14 | 15 | resData::resData(_In_opt_ const _SRestriction* lpOldRes) noexcept : m_lpOldRes(lpOldRes) {} 16 | 17 | _Check_return_ _SRestriction resData::detachRes(_In_opt_ const VOID* parent) 18 | { 19 | auto ret = _SRestriction{}; 20 | if (m_lpNewRes) 21 | { 22 | memcpy(&ret, m_lpNewRes, sizeof(SRestriction)); 23 | // clear out members so we don't double free 24 | memset(m_lpNewRes, 0, sizeof(SRestriction)); 25 | } 26 | else 27 | { 28 | EC_H_S(mapi::HrCopyRestrictionArray(m_lpOldRes, parent, 1, &ret)); 29 | } 30 | 31 | return ret; 32 | } 33 | 34 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/resData.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | namespace sortlistdata 5 | { 6 | class sortListData; 7 | 8 | class resData : public IData 9 | { 10 | public: 11 | static void init(sortListData* data, _In_opt_ const _SRestriction* lpOldRes); 12 | 13 | resData(_In_opt_ const _SRestriction* lpOldRes) noexcept; 14 | 15 | _Check_return_ const _SRestriction* getCurrentRes() 16 | { 17 | if (m_lpNewRes) 18 | { 19 | return m_lpNewRes; 20 | } 21 | else 22 | { 23 | return m_lpOldRes; 24 | } 25 | } 26 | void setCurrentRes(_In_ _SRestriction* res) { m_lpNewRes = res; } 27 | _Check_return_ _SRestriction detachRes(_In_opt_ const VOID* parent); 28 | 29 | private: 30 | const _SRestriction* m_lpOldRes{}; // not allocated - just a pointer 31 | LPSRestriction m_lpNewRes{}; // Owned by an alloc parent - do not free 32 | }; 33 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/sortlistdata/sortListData.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | namespace sortlistdata 6 | { 7 | void sortListData::clean() noexcept 8 | { 9 | lpData = nullptr; 10 | 11 | MAPIFreeBuffer(lpSourceProps); 12 | lpSourceProps = nullptr; 13 | cSourceProps = 0; 14 | 15 | bItemFullyLoaded = false; 16 | clearSortValues(); 17 | } 18 | 19 | void sortListData::setSortText(const std::wstring& _sortText) { sortText = strings::wstringToLower(_sortText); } 20 | } // namespace sortlistdata -------------------------------------------------------------------------------- /core/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | -------------------------------------------------------------------------------- /core/utility/clipboard.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | namespace clipboard 5 | { 6 | const void CopyTo(_In_ const std::wstring& str) noexcept 7 | { 8 | if (str.empty()) return; 9 | OpenClipboard(nullptr); 10 | EmptyClipboard(); 11 | const auto cb = (str.size() + 1) * sizeof(wchar_t); 12 | const auto hg = GlobalAlloc(GMEM_MOVEABLE, cb); 13 | if (!hg) 14 | { 15 | CloseClipboard(); 16 | return; 17 | } 18 | 19 | const auto mem = GlobalLock(hg); 20 | if (!mem) 21 | { 22 | CloseClipboard(); 23 | return; 24 | } 25 | 26 | memcpy(mem, str.c_str(), cb); 27 | GlobalUnlock(hg); 28 | SetClipboardData(CF_UNICODETEXT, hg); 29 | CloseClipboard(); 30 | GlobalFree(hg); 31 | } 32 | } // namespace clipboard -------------------------------------------------------------------------------- /core/utility/clipboard.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace clipboard 4 | { 5 | const void CopyTo(_In_ const std::wstring& str) noexcept; 6 | } // namespace clipboard -------------------------------------------------------------------------------- /core/utility/file.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace file 4 | { 5 | constexpr int MAXSUBJTIGHT = 10; 6 | constexpr int MAXBIN = 141; 7 | constexpr int MAXEXT = 4; 8 | constexpr int MAXATTACH = 10; 9 | constexpr int MAXMSGPATH = MAX_PATH - MAXSUBJTIGHT - MAXBIN - MAXEXT; 10 | 11 | std::wstring GetSystemDirectory(); 12 | std::wstring ShortenPath(const std::wstring& path); 13 | std::wstring GetDirectoryPath(HWND hWnd); 14 | 15 | std::wstring BuildFileNameAndPath( 16 | _In_ const std::wstring& szExt, 17 | _In_ const std::wstring& szSubj, 18 | _In_ const std::wstring& szRootPath, 19 | _In_opt_ const _SBinary* lpBin); 20 | 21 | std::wstring GetModuleFileName(_In_opt_ HMODULE hModule); 22 | std::map GetFileVersionInfo(_In_opt_ HMODULE hModule); 23 | } // namespace file -------------------------------------------------------------------------------- /core/utility/memory.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | namespace memory 5 | { 6 | // Converts vector to LPBYTE allocated with new 7 | LPBYTE ByteVectorToLPBYTE(const std::vector& bin) noexcept 8 | { 9 | if (bin.empty()) return nullptr; 10 | 11 | const auto lpBin = new (std::nothrow) BYTE[bin.size()]; 12 | if (lpBin != nullptr) 13 | { 14 | memset(lpBin, 0, bin.size()); 15 | memcpy(lpBin, &bin[0], bin.size()); 16 | } 17 | 18 | return lpBin; 19 | } 20 | 21 | size_t align(size_t s) noexcept 22 | { 23 | constexpr auto _align = static_cast(sizeof(DWORD) - 1); 24 | if (s == ULONG_MAX || (s + _align) < s) return ULONG_MAX; 25 | 26 | return (((s) + _align) & ~_align); 27 | } 28 | } // namespace memory -------------------------------------------------------------------------------- /core/utility/memory.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace memory 4 | { 5 | LPBYTE ByteVectorToLPBYTE(const std::vector& bin) noexcept; 6 | size_t align(size_t s) noexcept; 7 | template void assign(std::vector& v, const size_t offset, const T val) noexcept 8 | { 9 | if (offset > v.size() + sizeof(T)) return; 10 | *(reinterpret_cast(&v[offset])) = val; 11 | } 12 | } // namespace memory -------------------------------------------------------------------------------- /docs/CreateOutlookItemsAddin.md: -------------------------------------------------------------------------------- 1 | This add-in is the sample code that accompanies the MSDN technical article, [Using MAPI to Create Outlook 2007 Items](https://msdn.microsoft.com/en-us/library/cc678348.aspx), by Randy Byrne and Stephen Griffin. Any updates to this add-in will be noted on this page. 2 | 3 | # [Click here to download the CreateOutlookItemsAddin project](CreateOutlookItemsAddin.zip). 4 | 5 | The add-in architecture is documented here: [MFCMAPI Addin Development](MFCMAPI-Addin-Development) 6 | 7 | ## Version History 8 | * **1.0** (06/12/08) Original version for Using MAPI to Create Outlook 2007 Items article. 9 | * Creates contacts. 10 | * **2.0** (08/28/08) Update for the upcoming Outlook MAPI reference. New features: 11 | * Creates recurring appointments 12 | * Creates recurring tasks 13 | * Creates/sends mail items 14 | -------------------------------------------------------------------------------- /docs/CreateOutlookItemsAddin.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/docs/CreateOutlookItemsAddin.zip -------------------------------------------------------------------------------- /docs/TestAddIn.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mfcmapi/b3aba997eb3b55718bf0a1290e4422b364928745/docs/TestAddIn.zip -------------------------------------------------------------------------------- /exampleMapiConsoleApp/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "clang-format": "^1.8.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /scripts/NuGet.Config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /scripts/build.ps1: -------------------------------------------------------------------------------- 1 | # Called from codeql.ps1 during database creation 2 | $scriptroot = $PSScriptRoot 3 | $srcRoot = Join-Path -Path $scriptroot -ChildPath ".." 4 | 5 | $vsPath = & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath 6 | $config = "Release_Unicode" 7 | $platform = "x64" 8 | 9 | Push-Location $srcRoot 10 | & $vsPath\MSBuild\Current\Bin\amd64\msbuild.exe /m /p:Configuration="$config" /p:Platform="$platform" /t:Clean mfcmapi.sln 11 | & $vsPath\MSBuild\Current\Bin\amd64\msbuild.exe /m /p:Configuration="$config" /p:Platform="$platform" mfcmapi.sln 12 | Pop-Location -------------------------------------------------------------------------------- /scripts/clang.ps1: -------------------------------------------------------------------------------- 1 | # find clang-format under node-modules and run it on all C++ files in the project 2 | $projectRoot = Join-Path $PSScriptRoot ".." 3 | $clang = Join-Path $projectRoot "\node_modules\.bin\clang-format.ps1" 4 | $style = Join-Path $projectRoot ".clang-format" 5 | 6 | if ($null -eq $clang) { 7 | Write-Host "clang not found." 8 | } 9 | Write-Host "clang-format found at $clang" 10 | & $clang --version 11 | 12 | Write-Host "Style file found at $style" 13 | 14 | Push-Location $projectRoot 15 | 16 | Write-Host "Formatting C++ headers" 17 | Get-ChildItem -Recurse -Filter *.h | Where-Object { $_.DirectoryName -notlike "*include*" } | ForEach-Object { 18 | & $clang --style=file:$style --verbose -i $_.FullName 19 | } 20 | 21 | Write-Host "Formatting C++ sources" 22 | Get-ChildItem -Recurse -Filter *.cpp | ForEach-Object { 23 | & $clang --style=file:$style --verbose -i $_.FullName 24 | } 25 | 26 | Pop-Location -------------------------------------------------------------------------------- /scripts/guardian.ps1: -------------------------------------------------------------------------------- 1 | $guardian = "packages\Microsoft.Guardian.Cli.0.180.0\tools\guardian.cmd" 2 | 3 | & $guardian init -n 4 | & $guardian run -c scripts\.gdnconfig -------------------------------------------------------------------------------- /scripts/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /scripts/prefast.proj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Configuration=Release_Unicode;Platform=x64 6 | 7 | 8 | Configuration=Release;Platform=x64 9 | 10 | 11 | 12 | 13 | 14 | --------------------------------------------------------------------------------