diff --git a/ZuneDBApi/CComPtrNtv.cs b/ZuneDBApi/CComPtrNtv.cs index 274a377..04b5193 100644 --- a/ZuneDBApi/CComPtrNtv.cs +++ b/ZuneDBApi/CComPtrNtv.cs @@ -41,6 +41,14 @@ internal unsafe class CComPtrNtv : IDisposable where TPtr : unmanaged } } + public ref TPtr* GetPinnableReference() + { + fixed (TPtr** ptr = &p) + { + return ref *ptr; + } + } + protected virtual void Dispose(bool disposing) { if (!disposedValue) diff --git a/ZuneDBApi/Microsoft/Zune/Configuration/CConfigurationManagedBase.cs b/ZuneDBApi/Microsoft/Zune/Configuration/CConfigurationManagedBase.cs index 55df0d0..1b40814 100644 --- a/ZuneDBApi/Microsoft/Zune/Configuration/CConfigurationManagedBase.cs +++ b/ZuneDBApi/Microsoft/Zune/Configuration/CConfigurationManagedBase.cs @@ -45,34 +45,24 @@ namespace Microsoft.Zune.Configuration { add { - try - { - Monitor.Enter(m_lock); + lock (m_lock) + { if (null == m_configurationChangeEventHandler) { Subscribe(OnNativeConfigChangedCallback); } m_configurationChangeEventHandler = (ConfigurationChangeEventHandler)Delegate.Combine(m_configurationChangeEventHandler, value); } - finally - { - Monitor.Exit(m_lock); - } } remove { - try - { - Monitor.Enter(m_lock); + lock (m_lock) + { if (null == (m_configurationChangeEventHandler = (ConfigurationChangeEventHandler)Delegate.Remove(m_configurationChangeEventHandler, value))) { Unsubscribe(); } } - finally - { - Monitor.Exit(m_lock); - } } } diff --git a/ZuneDBApi/Microsoft/Zune/Playlist/PlaylistManager.cs b/ZuneDBApi/Microsoft/Zune/Playlist/PlaylistManager.cs index 01d6b6f..417141c 100644 --- a/ZuneDBApi/Microsoft/Zune/Playlist/PlaylistManager.cs +++ b/ZuneDBApi/Microsoft/Zune/Playlist/PlaylistManager.cs @@ -22,9 +22,8 @@ namespace Microsoft.Zune.Playlist { if (sm_instance == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_instance == null) { PlaylistManager playlistManager = new PlaylistManager(); @@ -32,10 +31,6 @@ namespace Microsoft.Zune.Playlist sm_instance = playlistManager; } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_instance; } @@ -61,13 +56,13 @@ namespace Microsoft.Zune.Playlist public unsafe HRESULT CreatePlaylist(string title, string author, [In] ValueType serviceMediaId, CreatePlaylistOption options, out int playlistId) { playlistId = -1; - bool flag = (options & CreatePlaylistOption.PrivatePlaylist) > CreatePlaylistOption.None; - bool flag2 = (options & CreatePlaylistOption.AutoPlaylist) > CreatePlaylistOption.None; - bool flag3 = (options & CreatePlaylistOption.SyncRule) > CreatePlaylistOption.None; - bool flag4 = (options & CreatePlaylistOption.OverwriteOnConflict) > CreatePlaylistOption.None; - bool flag5 = (options & CreatePlaylistOption.RenameOnConflict) > CreatePlaylistOption.None; + bool isPrivate = (options & CreatePlaylistOption.PrivatePlaylist) > CreatePlaylistOption.None; + bool isAuto = (options & CreatePlaylistOption.AutoPlaylist) > CreatePlaylistOption.None; + bool syncRule = (options & CreatePlaylistOption.SyncRule) > CreatePlaylistOption.None; + bool overwrite = (options & CreatePlaylistOption.OverwriteOnConflict) > CreatePlaylistOption.None; + bool rename = (options & CreatePlaylistOption.RenameOnConflict) > CreatePlaylistOption.None; int hr; - if ((flag && (flag2 || flag3)) || (flag4 && flag5)) + if ((isPrivate && (isAuto || syncRule)) || (overwrite && rename)) { hr = -2147024809; } @@ -77,22 +72,22 @@ namespace Microsoft.Zune.Playlist } else { - fixed (char* titlePtr = title.ToCharArray()) + fixed (char* titlePtr = title) { ushort* ptr2 = (ushort*)titlePtr; try { - fixed (char* authorPtr = author.ToCharArray()) + fixed (char* authorPtr = author) { ushort* ptr3 = (ushort*)authorPtr; try { EPlaylistCreateConflictAction ePlaylistCreateConflictAction = 0; - if (flag5) + if (rename) { ePlaylistCreateConflictAction = EPlaylistCreateConflictAction.RenameOnConflict; } - else if (flag || flag4) + else if (isPrivate || overwrite) { ePlaylistCreateConflictAction = EPlaylistCreateConflictAction.OverwriteOnConflict; } @@ -101,22 +96,22 @@ namespace Microsoft.Zune.Playlist { gUID = (Guid)serviceMediaId; } - bool flag6 = !(flag3 || flag); + bool flag6 = !(syncRule || isPrivate); EPlaylistType ePlaylistType; - if (flag) + if (isPrivate) { ePlaylistType = (EPlaylistType)4; } else { EPlaylistType ePlaylistType2; - if (flag3) + if (syncRule) { ePlaylistType2 = (EPlaylistType)3; } else { - EPlaylistType ePlaylistType3 = (flag2 ? ((EPlaylistType)1) : 0); + EPlaylistType ePlaylistType3 = (isAuto ? ((EPlaylistType)1) : 0); ePlaylistType2 = ePlaylistType3; } ePlaylistType = ePlaylistType2; @@ -278,7 +273,7 @@ namespace Microsoft.Zune.Playlist } else { - fixed (char* newTitlePtr = newTitle.ToCharArray()) + fixed (char* newTitlePtr = newTitle) { ushort* ptr = (ushort*)newTitlePtr; try @@ -344,14 +339,12 @@ namespace Microsoft.Zune.Playlist string result = candidateTitle; if (m_pPlaylistManager != null) { - fixed (char* candidateTitlePtr = candidateTitle.ToCharArray()) + fixed (char* candidateTitlePtr = candidateTitle) { ushort* ptr = (ushort*)candidateTitlePtr; try { - PROPVARIANT cComPropVariant; - // IL initblk instruction - Unsafe.InitBlock(&cComPropVariant, 0, 24); + PROPVARIANT cComPropVariant = new(); try { long num = *(long*)m_pPlaylistManager + 136; diff --git a/ZuneDBApi/Microsoft/Zune/QuickMix/QuickMix.cs b/ZuneDBApi/Microsoft/Zune/QuickMix/QuickMix.cs index 75752d3..dea1880 100644 --- a/ZuneDBApi/Microsoft/Zune/QuickMix/QuickMix.cs +++ b/ZuneDBApi/Microsoft/Zune/QuickMix/QuickMix.cs @@ -52,9 +52,8 @@ namespace Microsoft.Zune.QuickMix { if (sm_instance == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_instance == null) { QuickMix quickMix = new QuickMix(); @@ -66,10 +65,6 @@ namespace Microsoft.Zune.QuickMix } } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_instance; } diff --git a/ZuneDBApi/Microsoft/Zune/Service/AccountManagement.cs b/ZuneDBApi/Microsoft/Zune/Service/AccountManagement.cs index 8dbdbbd..b080c0e 100644 --- a/ZuneDBApi/Microsoft/Zune/Service/AccountManagement.cs +++ b/ZuneDBApi/Microsoft/Zune/Service/AccountManagement.cs @@ -21,7 +21,7 @@ namespace Microsoft.Zune.Service catch { //try-fault - ((IDisposable)m_spAccountManagement).Dispose(); + m_spAccountManagement.Dispose(); throw; } } diff --git a/ZuneDBApi/Microsoft/Zune/Subscription/SubscriptionManager.cs b/ZuneDBApi/Microsoft/Zune/Subscription/SubscriptionManager.cs index 5510172..5a9c732 100644 --- a/ZuneDBApi/Microsoft/Zune/Subscription/SubscriptionManager.cs +++ b/ZuneDBApi/Microsoft/Zune/Subscription/SubscriptionManager.cs @@ -22,9 +22,8 @@ namespace Microsoft.Zune.Subscription { if (sm_instance == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_instance == null) { SubscriptionManager subscriptionManager = new SubscriptionManager(); @@ -32,10 +31,6 @@ namespace Microsoft.Zune.Subscription sm_instance = subscriptionManager; } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_instance; } @@ -242,7 +237,7 @@ namespace Microsoft.Zune.Subscription } if (num >= 0) { - fixed (char* feedUrlPtr = feedUrl.ToCharArray()) + fixed (char* feedUrlPtr = feedUrl)) { ushort* ptr3 = (ushort*)feedUrlPtr; try @@ -366,7 +361,7 @@ namespace Microsoft.Zune.Subscription num = ValidateUrl(ref feedUrl); if (num >= 0) { - fixed (char* feedUrlPtr = feedUrl.ToCharArray()) + fixed (char* feedUrlPtr = feedUrl)) { ushort* ptr = (ushort*)feedUrlPtr; try diff --git a/ZuneDBApi/Microsoft/Zune/Subscription/VirtualSubscriptionEpisodeList.cs b/ZuneDBApi/Microsoft/Zune/Subscription/VirtualSubscriptionEpisodeList.cs index be81f01..b39af3a 100644 --- a/ZuneDBApi/Microsoft/Zune/Subscription/VirtualSubscriptionEpisodeList.cs +++ b/ZuneDBApi/Microsoft/Zune/Subscription/VirtualSubscriptionEpisodeList.cs @@ -48,9 +48,8 @@ namespace Microsoft.Zune.Subscription private void _007EVirtualSubscriptionEpisodeList() { - Monitor.Enter(m_lock); - try - { + lock (m_lock) + { List.Enumerator enumerator = m_items.GetEnumerator(); while (enumerator.MoveNext()) { @@ -58,26 +57,17 @@ namespace Microsoft.Zune.Subscription } m_items = null; } - finally - { - Monitor.Exit(m_lock); - } } internal unsafe void AddItem(IMSMediaSchemaPropertySet* pEpisodeItem) { - Monitor.Enter(m_lock); - try - { + lock (m_lock) + { if (m_items != null) { m_items.Add(new SubscriptionDataProviderItem(m_owner, m_typeCookie, m_feedUrl, pEpisodeItem)); } } - finally - { - Monitor.Exit(m_lock); - } } internal unsafe void AsyncRetrieveEpisodeList(SubscriptionSeriesInfo seriesInfo) @@ -152,9 +142,8 @@ namespace Microsoft.Zune.Subscription internal void Sort(string sortProperty) { - Monitor.Enter(m_lock); - try - { + lock (m_lock) + { if (sortProperty != null) { SetSortProperty(sortProperty); @@ -165,10 +154,6 @@ namespace Microsoft.Zune.Subscription } Application.DeferredInvoke(DeferredResetList, null); } - finally - { - Monitor.Exit(m_lock); - } } protected override object OnRequestItem(int index) diff --git a/ZuneDBApi/Microsoft/Zune/User/UserManager.cs b/ZuneDBApi/Microsoft/Zune/User/UserManager.cs index 77449f7..68bc374 100644 --- a/ZuneDBApi/Microsoft/Zune/User/UserManager.cs +++ b/ZuneDBApi/Microsoft/Zune/User/UserManager.cs @@ -17,9 +17,8 @@ namespace Microsoft.Zune.User { if (sm_instance == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_instance == null) { UserManager userManager = new UserManager(); @@ -27,10 +26,6 @@ namespace Microsoft.Zune.User sm_instance = userManager; } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_instance; } diff --git a/ZuneDBApi/Microsoft/Zune/UserCredential/UserCredentialManager.cs b/ZuneDBApi/Microsoft/Zune/UserCredential/UserCredentialManager.cs index 6b63e08..3ac1772 100644 --- a/ZuneDBApi/Microsoft/Zune/UserCredential/UserCredentialManager.cs +++ b/ZuneDBApi/Microsoft/Zune/UserCredential/UserCredentialManager.cs @@ -15,9 +15,8 @@ namespace Microsoft.Zune.UserCredential { if (sm_instance == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_instance == null) { UserCredentialManager userCredentialManager = new UserCredentialManager(); @@ -25,10 +24,6 @@ namespace Microsoft.Zune.UserCredential sm_instance = userCredentialManager; } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_instance; } @@ -67,7 +62,7 @@ namespace Microsoft.Zune.UserCredential { return -2147024882; } - num = Module.GetSingleton((_GUID)Module._GUID_41c80590_c50b_4d27_b860_7c87f3f0cb54, (void**)(&ptr4)); + num = Module.GetSingleton(Module.GUIDIUserCredentialManager, (void**)(&ptr4)); if (num >= 0) { num = Module.Microsoft_002EZune_002EUserCredential_002ECUserCredentialProviderProxy_002EInitialize(ptr2, credentialHandler); diff --git a/ZuneDBApi/Microsoft/Zune/Util/DownloadManager.cs b/ZuneDBApi/Microsoft/Zune/Util/DownloadManager.cs index 45ecd7b..0da8837 100644 --- a/ZuneDBApi/Microsoft/Zune/Util/DownloadManager.cs +++ b/ZuneDBApi/Microsoft/Zune/Util/DownloadManager.cs @@ -112,9 +112,8 @@ namespace Microsoft.Zune.Util { if (sm_downloadManager == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_downloadManager == null) { DownloadManager downloadManager = new DownloadManager(); @@ -122,10 +121,6 @@ namespace Microsoft.Zune.Util sm_downloadManager = downloadManager; } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_downloadManager; } @@ -427,7 +422,7 @@ namespace Microsoft.Zune.Util try { long num4 = *(long*)(cComPtrNtv_003CIDownloadManager_003E.p); - singleton = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)(*(ulong*)(cComPtrNtv_003CIDownloadManager_003E.p)) + 104)))((nint)num4, num3, (IDownloadTask**)(cComPtrNtv_003CIDownloadTask_003E.p)); + singleton = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)(*(ulong*)(cComPtrNtv_003CIDownloadManager_003E.p)) + 104)))((nint)num4, num3, (IDownloadTask**)(cComPtrNtv_003CIDownloadTask_003E.GetPtrToPtr())); if (singleton >= 0) { long num5 = *(long*)(cComPtrNtv_003CIDownloadTask_003E.p); @@ -441,26 +436,20 @@ namespace Microsoft.Zune.Util } } } - catch + finally { - //try-fault - Module.___CxxCallUnwindDtor((delegate*)(delegate*)(&Module.CComPtrNtv_003CIDownloadTask_003E._007Bdtor_007D), cComPtrNtv_003CIDownloadTask_003E.p); - throw; + cComPtrNtv_003CIDownloadTask_003E.Dispose(); } - cComPtrNtv_003CIDownloadTask_003E.Dispose(); num3++; } while (num3 < num); } Application.DeferredInvoke(DeferredUpdateActiveList, list); } - catch + finally { - //try-fault - Module.___CxxCallUnwindDtor((delegate*)(delegate*)(&Module.CComPtrNtv_003CIDownloadManager_003E._007Bdtor_007D), cComPtrNtv_003CIDownloadManager_003E.p); - throw; + cComPtrNtv_003CIDownloadManager_003E.Dispose(); } - cComPtrNtv_003CIDownloadManager_003E.Dispose(); } private void DeferredUpdateActiveList(object args) diff --git a/ZuneDBApi/Microsoft/Zune/Util/FamilySettingsManager.cs b/ZuneDBApi/Microsoft/Zune/Util/FamilySettingsManager.cs index b0223d9..9a5aa68 100644 --- a/ZuneDBApi/Microsoft/Zune/Util/FamilySettingsManager.cs +++ b/ZuneDBApi/Microsoft/Zune/Util/FamilySettingsManager.cs @@ -24,9 +24,8 @@ namespace Microsoft.Zune.Util //IL_0086: Expected I, but got I8 if (sm_manager == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_manager == null) { FamilySettingsManager familySettingsManager = new FamilySettingsManager(); @@ -55,10 +54,6 @@ namespace Microsoft.Zune.Util sm_manager = familySettingsManager; } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_manager; } diff --git a/ZuneDBApi/Microsoft/Zune/Util/FeaturesChangedApi.cs b/ZuneDBApi/Microsoft/Zune/Util/FeaturesChangedApi.cs index 2a6fd11..0299994 100644 --- a/ZuneDBApi/Microsoft/Zune/Util/FeaturesChangedApi.cs +++ b/ZuneDBApi/Microsoft/Zune/Util/FeaturesChangedApi.cs @@ -124,13 +124,10 @@ namespace Microsoft.Zune.Util } } } - catch + finally { - //try-fault cComPtrNtv_003CIAsyncCallback_003E.Dispose(); - throw; } - cComPtrNtv_003CIAsyncCallback_003E.Dispose(); return num; } @@ -142,13 +139,7 @@ namespace Microsoft.Zune.Util { if (P_0) { - try - { - } - finally - { - ((IDisposable)m_spAsyncCallback).Dispose(); - } + m_spAsyncCallback.Dispose(); } } diff --git a/ZuneDBApi/Microsoft/Zune/Util/PhotoManager.cs b/ZuneDBApi/Microsoft/Zune/Util/PhotoManager.cs index d859546..c9e1f1e 100644 --- a/ZuneDBApi/Microsoft/Zune/Util/PhotoManager.cs +++ b/ZuneDBApi/Microsoft/Zune/Util/PhotoManager.cs @@ -18,9 +18,8 @@ namespace Microsoft.Zune.Util { if (sm_PhotoManager == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_PhotoManager == null) { PhotoManager photoManager = new PhotoManager(); @@ -28,10 +27,6 @@ namespace Microsoft.Zune.Util sm_PhotoManager = photoManager; } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_PhotoManager; } @@ -89,16 +84,13 @@ namespace Microsoft.Zune.Util if (num >= 0) { IMetadataManager* intPtr = ptr; - __s_GUID gUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d = Module._GUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d6; - num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, (_GUID)gUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d, (void**)(&ptr2)); + _GUID guid_IFolderProvider = Module.GUID_IFolderProvider; + num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, guid_IFolderProvider, (void**)(&ptr2)); } - VARIANT tagVARIANT; - *(short*)(&tagVARIANT) = 0; - // IL initblk instruction - Unsafe.InitBlockUnaligned(ref Unsafe.AddByteOffset(ref tagVARIANT, 2), 0, 22); + VARIANT tagVARIANT = default; if (num >= 0) { - fixed (char* szFolderNamePtr = szFolderName.ToCharArray()) + fixed (char* szFolderNamePtr = szFolderName) { ushort* ptr3 = (ushort*)szFolderNamePtr; try @@ -116,7 +108,7 @@ namespace Microsoft.Zune.Util } if (num >= 0) { - nFolderId = Unsafe.As(ref Unsafe.AddByteOffset(ref tagVARIANT, 8)); + nFolderId = Unsafe.As(ref tagVARIANT.decVal); } } } @@ -159,20 +151,17 @@ namespace Microsoft.Zune.Util if (num >= 0) { IMetadataManager* intPtr = ptr; - __s_GUID gUID_16a9f8be_e76c_4391_ad74_8df74b7a3c = Module._GUID_16a9f8be_e76c_4391_ad74_8df74b7a3c21; - num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, (_GUID)gUID_16a9f8be_e76c_4391_ad74_8df74b7a3c, (void**)(&ptr2)); + _GUID guid_IFileProvider = Module.GUID_IFileProvider; + num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, guid_IFileProvider, (void**)(&ptr2)); } - VARIANT tagVARIANT; - *(short*)(&tagVARIANT) = 0; - // IL initblk instruction - Unsafe.InitBlockUnaligned(ref Unsafe.AddByteOffset(ref tagVARIANT, 2), 0, 22); + VARIANT tagVARIANT = default; if (num >= 0) { IFileProvider* intPtr2 = ptr2; num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr2 + 528)))((nint)intPtr2, nMediaId, EMediaTypes.eMediaTypeImage, &tagVARIANT); if (num >= 0) { - nFolderId = Unsafe.As(ref Unsafe.AddByteOffset(ref tagVARIANT, 8)); + nFolderId = Unsafe.As(ref tagVARIANT.decVal); } } } @@ -219,16 +208,13 @@ namespace Microsoft.Zune.Util if (num >= 0) { IMetadataManager* intPtr = ptr; - __s_GUID gUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d = Module._GUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d6; - num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, (_GUID)gUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d, (void**)(&ptr2)); + _GUID guid_IFolderProvider = Module.GUID_IFolderProvider; + num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, guid_IFolderProvider, (void**)(&ptr2)); } - VARIANT tagVARIANT; - *(short*)(&tagVARIANT) = 0; - // IL initblk instruction - Unsafe.InitBlockUnaligned(ref Unsafe.AddByteOffset(ref tagVARIANT, 2), 0, 22); + VARIANT tagVARIANT = default; if (num >= 0) { - fixed (char* szFolderNamePtr = szFolderName.ToCharArray()) + fixed (char* szFolderNamePtr = szFolderName) { ushort* ptr3 = (ushort*)szFolderNamePtr; try @@ -246,7 +232,7 @@ namespace Microsoft.Zune.Util } if (num >= 0) { - nCreatedFolderId = Unsafe.As(ref Unsafe.AddByteOffset(ref tagVARIANT, 8)); + nCreatedFolderId = Unsafe.As(ref tagVARIANT.decVal); } } } @@ -291,11 +277,11 @@ namespace Microsoft.Zune.Util if (num >= 0) { IMetadataManager* intPtr = ptr; - __s_GUID gUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d = Module._GUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d6; - num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, (_GUID)gUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d, (void**)(&ptr2)); + _GUID guid_IFolderProvider = Module.GUID_IFolderProvider; + num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, guid_IFolderProvider, (void**)(&ptr2)); if (num >= 0) { - fixed (char* szNewFolderNamePtr = szNewFolderName.ToCharArray()) + fixed (char* szNewFolderNamePtr = szNewFolderName) { ushort* ptr3 = (ushort*)szNewFolderNamePtr; try @@ -359,8 +345,8 @@ namespace Microsoft.Zune.Util if (num >= 0) { IMetadataManager* intPtr = ptr; - __s_GUID gUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d = Module._GUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d6; - num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, (_GUID)gUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d, (void**)(&ptr2)); + _GUID guid_IFolderProvider = Module.GUID_IFolderProvider; + num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, guid_IFolderProvider, (void**)(&ptr2)); if (num >= 0) { fixed (int* ptr3 = &mediaIds[0]) @@ -375,7 +361,7 @@ namespace Microsoft.Zune.Util catch { //try-fault - ptr3 = null; + mediaIds = null; throw; } } @@ -423,8 +409,8 @@ namespace Microsoft.Zune.Util if (num >= 0) { IMetadataManager* intPtr = ptr; - __s_GUID gUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d = Module._GUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d6; - num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, (_GUID)gUID_a2889317_d0c7_41d8_abc7_1eb4cb8d46d, (void**)(&ptr2)); + _GUID guid_IFolderProvider = Module.GUID_IFolderProvider; + num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr + 24)))((nint)intPtr, guid_IFolderProvider, (void**)(&ptr2)); if (num >= 0) { fixed (char* szPathPtr = szPath.ToCharArray()) diff --git a/ZuneDBApi/Microsoft/Zune/Util/PinManager.cs b/ZuneDBApi/Microsoft/Zune/Util/PinManager.cs index ce91830..865d497 100644 --- a/ZuneDBApi/Microsoft/Zune/Util/PinManager.cs +++ b/ZuneDBApi/Microsoft/Zune/Util/PinManager.cs @@ -23,9 +23,8 @@ namespace Microsoft.Zune.Util //IL_0086: Expected I, but got I8 if (sm_PinManager == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_PinManager == null) { PinManager pinManager = new PinManager(); @@ -54,10 +53,6 @@ namespace Microsoft.Zune.Util sm_PinManager = pinManager; } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_PinManager; } diff --git a/ZuneDBApi/Microsoft/Zune/Util/RadioStationManager.cs b/ZuneDBApi/Microsoft/Zune/Util/RadioStationManager.cs index ab7aa37..eb8b294 100644 --- a/ZuneDBApi/Microsoft/Zune/Util/RadioStationManager.cs +++ b/ZuneDBApi/Microsoft/Zune/Util/RadioStationManager.cs @@ -19,9 +19,8 @@ namespace Microsoft.Zune.Util { if (sm_radioStationManager == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_radioStationManager == null) { RadioStationManager radioStationManager = new RadioStationManager(); @@ -29,10 +28,6 @@ namespace Microsoft.Zune.Util sm_radioStationManager = radioStationManager; } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_radioStationManager; } diff --git a/ZuneDBApi/Microsoft/Zune/Util/UpdateManager.cs b/ZuneDBApi/Microsoft/Zune/Util/UpdateManager.cs index 366a175..ede5a34 100644 --- a/ZuneDBApi/Microsoft/Zune/Util/UpdateManager.cs +++ b/ZuneDBApi/Microsoft/Zune/Util/UpdateManager.cs @@ -18,9 +18,8 @@ namespace Microsoft.Zune.Util { if (sm_updateManager == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_updateManager == null) { UpdateManager updateManager = new(); @@ -28,10 +27,6 @@ namespace Microsoft.Zune.Util sm_updateManager = updateManager; } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_updateManager; } @@ -59,51 +54,52 @@ namespace Microsoft.Zune.Util throw; } UpdateProxy* ptr4 = ptr3; - try - { - Monitor.Enter(sm_lock); - if (Module.GetSingleton(Module.GUID_UpdateProxy, (void**)(&ptr)) >= 0) - { - m_spUpdateManager.op_Assign(ptr); - IUpdateManager* p = m_spUpdateManager.p; - ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)p + 24)))((nint)p, (IUpdateProgress*)ptr3); + lock (sm_lock) + { + try + { + if (Module.GetSingleton(Module.GUID_UpdateProxy, (void**)(&ptr)) >= 0) + { + m_spUpdateManager.op_Assign(ptr); + IUpdateManager* p = m_spUpdateManager.p; + ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)p + 24)))((nint)p, (IUpdateProgress*)ptr3); + } } - } - finally - { - if (0L != (nint)ptr4) - { - ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr4 + 16)))((nint)ptr4); + finally + { + if (0L != (nint)ptr4) + { + ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)ptr4 + 16)))((nint)ptr4); + } + if (0L != (nint)ptr) + { + IUpdateManager* intPtr = ptr; + ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)intPtr + 16)))((nint)intPtr); + ptr = null; + } } - if (0L != (nint)ptr) - { - IUpdateManager* intPtr = ptr; - ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)intPtr + 16)))((nint)intPtr); - ptr = null; - } - Monitor.Exit(sm_lock); - } + } } public unsafe void CancelUpdateCheck() { - //IL_002f: Expected I, but got I8 - try - { - Monitor.Enter(sm_lock); - CComPtrMgd spUpdateManager = m_spUpdateManager; - IUpdateManager* p = spUpdateManager.p; - if (0L != (nint)p) - { - IUpdateManager* p2 = spUpdateManager.p; - ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)p2 + 32)))((nint)p2); + lock (sm_lock) + { + try + { + CComPtrMgd spUpdateManager = m_spUpdateManager; + IUpdateManager* p = spUpdateManager.p; + if (0L != (nint)p) + { + IUpdateManager* p2 = spUpdateManager.p; + ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)p2 + 32)))((nint)p2); + } } - } - finally - { - m_spUpdateManager.Release(); - Monitor.Exit(sm_lock); - } + finally + { + m_spUpdateManager.Release(); + } + } } public unsafe void InstallUpdate(UpdateProgressHandler updateProgressHandler) @@ -125,48 +121,45 @@ namespace Microsoft.Zune.Util throw; } UpdateProxy* ptr3 = ptr2; - try - { - Monitor.Enter(sm_lock); - IUpdateManager* p = m_spUpdateManager.p; - if (0L == (nint)p) + lock (sm_lock) + { + try { - CComPtrNtv cComPtrNtv_003CIUpdateManager_003E = new(); - try + IUpdateManager* p = m_spUpdateManager.p; + if (0L == (nint)p) { - if (Module.GetSingleton(Module.GUID_UpdateProxy, (void**)(cComPtrNtv_003CIUpdateManager_003E.p)) >= 0) + CComPtrNtv cComPtrNtv_003CIUpdateManager_003E = new(); + try { - IUpdateManager* ptr4 = (IUpdateManager*)(*(ulong*)(cComPtrNtv_003CIUpdateManager_003E.p)); - m_spUpdateManager.op_Assign((IUpdateManager*)(*(ulong*)(cComPtrNtv_003CIUpdateManager_003E.p))); + if (Module.GetSingleton(Module.GUID_UpdateProxy, (void**)(cComPtrNtv_003CIUpdateManager_003E.p)) >= 0) + { + IUpdateManager* ptr4 = (IUpdateManager*)(*(ulong*)(cComPtrNtv_003CIUpdateManager_003E.p)); + m_spUpdateManager.op_Assign((IUpdateManager*)(*(ulong*)(cComPtrNtv_003CIUpdateManager_003E.p))); + } + } + finally + { + cComPtrNtv_003CIUpdateManager_003E.Dispose(); } } - catch + CComPtrMgd spUpdateManager = m_spUpdateManager; + IUpdateManager* p2 = spUpdateManager.p; + if (0L != (nint)p2) { - //try-fault - cComPtrNtv_003CIUpdateManager_003E.Dispose(); - throw; + IUpdateManager* p3 = spUpdateManager.p; + ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)p3 + 40)))((nint)p3, (IUpdateProgress*)ptr2); } - cComPtrNtv_003CIUpdateManager_003E.Dispose(); } - CComPtrMgd spUpdateManager = m_spUpdateManager; - IUpdateManager* p2 = spUpdateManager.p; - if (0L != (nint)p2) + finally { - IUpdateManager* p3 = spUpdateManager.p; - ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)p3 + 40)))((nint)p3, (IUpdateProgress*)ptr2); + m_spUpdateManager.Release(); } } - finally - { - Module.SafeRelease_003Cclass_0020Microsoft_003A_003AZune_003A_003AUtil_003A_003AUpdateProxy_003E(&ptr3); - m_spUpdateManager.Release(); - Monitor.Exit(sm_lock); - } } private UpdateManager() { - CComPtrMgd spUpdateManager = new CComPtrMgd(); + CComPtrMgd spUpdateManager = new(); try { m_spUpdateManager = spUpdateManager; @@ -194,7 +187,7 @@ namespace Microsoft.Zune.Util } finally { - ((IDisposable)m_spUpdateManager).Dispose(); + m_spUpdateManager.Dispose(); } } } diff --git a/ZuneDBApi/Microsoft/Zune/Util/Win7ShellManager.cs b/ZuneDBApi/Microsoft/Zune/Util/Win7ShellManager.cs index 1603c75..6104a86 100644 --- a/ZuneDBApi/Microsoft/Zune/Util/Win7ShellManager.cs +++ b/ZuneDBApi/Microsoft/Zune/Util/Win7ShellManager.cs @@ -23,9 +23,8 @@ namespace Microsoft.Zune.Util { if (sm_win7ShellManager == null) { - try - { - Monitor.Enter(sm_lock); + lock (sm_lock) + { if (sm_win7ShellManager == null) { Win7ShellManager win7ShellManager = new Win7ShellManager(); @@ -33,10 +32,6 @@ namespace Microsoft.Zune.Util sm_win7ShellManager = win7ShellManager; } } - finally - { - Monitor.Exit(sm_lock); - } } return sm_win7ShellManager; } diff --git a/ZuneDBApi/Microsoft/Zune/Util/ZuneWebHost.cs b/ZuneDBApi/Microsoft/Zune/Util/ZuneWebHost.cs index 5c0fbdd..904f2dc 100644 --- a/ZuneDBApi/Microsoft/Zune/Util/ZuneWebHost.cs +++ b/ZuneDBApi/Microsoft/Zune/Util/ZuneWebHost.cs @@ -26,9 +26,8 @@ namespace Microsoft.Zune.Util } if (s_zuneWebHost == null) { - try - { - Monitor.Enter(s_lock); + lock (s_lock) + { if (s_zuneWebHost == null) { ZuneWebHost zuneWebHost = new ZuneWebHost(); @@ -36,10 +35,6 @@ namespace Microsoft.Zune.Util s_zuneWebHost = zuneWebHost; } } - finally - { - Monitor.Exit(s_lock); - } } if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 28uL)) & 0x8000u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 25uL) >= 5u) { @@ -67,7 +62,7 @@ namespace Microsoft.Zune.Util long result; try { - Module.GetSingleton((_GUID)Module._GUID_51005f8f_675e_45e1_ae94_8edef996a02e, (void**)(cComPtrNtv_003CIZuneWebHost_003E.p)); + Module.GetSingleton((_GUID)Module.GUID_IZuneWebHost, (void**)(cComPtrNtv_003CIZuneWebHost_003E.GetPtrToPtr())); fixed (char* navUrlPtr = navUrl.ToCharArray()) { ushort* ptr3 = (ushort*)navUrlPtr; @@ -95,13 +90,10 @@ namespace Microsoft.Zune.Util result = (nint)ptr; } } - catch + finally { - //try-fault cComPtrNtv_003CIZuneWebHost_003E.Dispose(); - throw; } - cComPtrNtv_003CIZuneWebHost_003E.Dispose(); return result; } diff --git a/ZuneDBApi/MicrosoftZuneLibrary/Device.cs b/ZuneDBApi/MicrosoftZuneLibrary/Device.cs index f94dff3..603704e 100644 --- a/ZuneDBApi/MicrosoftZuneLibrary/Device.cs +++ b/ZuneDBApi/MicrosoftZuneLibrary/Device.cs @@ -3529,9 +3529,8 @@ namespace MicrosoftZuneLibrary *pfFirmwareUpdateInProgress = false; *pfFirmwareRestoreInProgress = false; int num = 0; - try - { - Monitor.Enter(m_Lock); + lock (m_Lock) + { if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 2u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 5u) { Module.WPP_SF_(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 48uL), 24, (_GUID*)Unsafe.AsPointer(ref Module._003FA0xc0985b64_002EWPP_DeviceAPI_cpp_Traceguids)); @@ -3577,10 +3576,6 @@ namespace MicrosoftZuneLibrary int num7 = 0; return num; } - finally - { - Monitor.Exit(m_Lock); - } } private unsafe int CreateDeviceAssetSet(IDeviceAssetProvider* pDeviceAssetProvider) diff --git a/ZuneDBApi/MicrosoftZuneLibrary/FirmwareRestorer.cs b/ZuneDBApi/MicrosoftZuneLibrary/FirmwareRestorer.cs index b0aa6dd..6e9d74f 100644 --- a/ZuneDBApi/MicrosoftZuneLibrary/FirmwareRestorer.cs +++ b/ZuneDBApi/MicrosoftZuneLibrary/FirmwareRestorer.cs @@ -28,19 +28,14 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 2313u); } - Monitor.Enter(m_FirmwareLock); - try - { + lock (m_FirmwareLock) + { if (m_fFirmwareProcessSupported && EnsureNativeObject() >= 0) { IFirmwareRestorer* p = m_spFirmwareRestorer.p; ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)p + 32)))((nint)p, &num); } } - finally - { - Monitor.Exit(m_FirmwareLock); - } } if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 4u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 5u) { @@ -236,15 +231,10 @@ namespace MicrosoftZuneLibrary { Module.WPP_SF_(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 48uL), 87, (_GUID*)Unsafe.AsPointer(ref Module._003FA0x15529884_002EWPP_FirmwareUpdateAPI_cpp_Traceguids)); } - Monitor.Enter(m_FirmwareLock); - try - { + lock (m_FirmwareLock) + { m_spFirmwareRestorer.op_Assign(null); } - finally - { - Monitor.Exit(m_FirmwareLock); - } } private unsafe int EnsureNativeObject() @@ -262,9 +252,8 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 2582u); } - Monitor.Enter(m_FirmwareLock); - try - { + lock (m_FirmwareLock) + { if (!m_fFirmwareProcessSupported) { int num = -2147024846; @@ -289,30 +278,20 @@ namespace MicrosoftZuneLibrary m_spFirmwareRestorer.op_Assign((IFirmwareRestorer*)(*(ulong*)(cComPtrNtv_003CIFirmwareRestorer_003E.p))); } } - catch + finally { - //try-fault cComPtrNtv_003CIFirmwareRestorer_003E.Dispose(); - throw; } - cComPtrNtv_003CIFirmwareRestorer_003E.Dispose(); } } - catch + finally { - //try-fault cComPtrNtv_003CIFirmwareUpdater_003E.Dispose(); - throw; } - cComPtrNtv_003CIFirmwareUpdater_003E.Dispose(); return result; } return result; } - finally - { - Monitor.Exit(m_FirmwareLock); - } } private unsafe void ContinueFirmwareRestoreWorker(object data) @@ -343,9 +322,8 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 2514u); } - Monitor.Enter(m_FirmwareLock); - try - { + lock (m_FirmwareLock) + { if (num >= 0) { num = EnsureNativeObject(); @@ -362,10 +340,6 @@ namespace MicrosoftZuneLibrary } } } - finally - { - Monitor.Exit(m_FirmwareLock); - } if (num < 0) { if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 4u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 2u) @@ -413,9 +387,8 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 2424u); } - Monitor.Enter(m_FirmwareLock); - try - { + lock (m_FirmwareLock) + { if (num >= 0) { num = EnsureNativeObject(); @@ -428,10 +401,6 @@ namespace MicrosoftZuneLibrary } } } - finally - { - Monitor.Exit(m_FirmwareLock); - } startFirmwareRestoreArgs.HrStatus = num; if (num < 0) { @@ -462,9 +431,8 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 2687u); } - Monitor.Enter(m_FirmwareLock); - try - { + lock (m_FirmwareLock) + { num = EnsureNativeObject(); if (num >= 0) { @@ -486,10 +454,6 @@ namespace MicrosoftZuneLibrary deferredInvokeHandler(args); } } - finally - { - Monitor.Exit(m_FirmwareLock); - } if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 4u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 5u) { Module.WPP_SF_d(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 48uL), 91, (_GUID*)Unsafe.AsPointer(ref Module._003FA0x15529884_002EWPP_FirmwareUpdateAPI_cpp_Traceguids), num); @@ -511,8 +475,7 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 2758u); } - Monitor.Enter(m_FirmwareLock); - try + lock (m_FirmwareLock) { CComPtrMgd spFirmwareMediator = m_spFirmwareMediator; if (spFirmwareMediator.p != null) @@ -534,10 +497,6 @@ namespace MicrosoftZuneLibrary DeferredCancel(); } } - finally - { - Monitor.Exit(m_FirmwareLock); - } if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 4u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 5u) { Module.WPP_SF_(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 48uL), 94, (_GUID*)Unsafe.AsPointer(ref Module._003FA0x15529884_002EWPP_FirmwareUpdateAPI_cpp_Traceguids)); diff --git a/ZuneDBApi/MicrosoftZuneLibrary/FirmwareUpdater.cs b/ZuneDBApi/MicrosoftZuneLibrary/FirmwareUpdater.cs index 3155c77..7fd13b3 100644 --- a/ZuneDBApi/MicrosoftZuneLibrary/FirmwareUpdater.cs +++ b/ZuneDBApi/MicrosoftZuneLibrary/FirmwareUpdater.cs @@ -41,19 +41,14 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 1435u); } - Monitor.Enter(m_FirmwareLock); - try - { + lock (m_FirmwareLock) + { if (m_fFirmwareProcessSupported && EnsureNativeObject() >= 0) { IFirmwareUpdater* p = m_spFirmwareUpdater.p; ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)p + 32)))((nint)p, &eUpdateAction2); } } - finally - { - Monitor.Exit(m_FirmwareLock); - } } if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 4u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 5u) { @@ -370,15 +365,10 @@ namespace MicrosoftZuneLibrary { Module.WPP_SF_(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 48uL), 61, (_GUID*)Unsafe.AsPointer(ref Module._003FA0x15529884_002EWPP_FirmwareUpdateAPI_cpp_Traceguids)); } - Monitor.Enter(m_FirmwareLock); - try - { + lock (m_FirmwareLock) + { m_spFirmwareUpdater.op_Assign(null); } - finally - { - Monitor.Exit(m_FirmwareLock); - } } internal unsafe int GetNativeObject(IFirmwareUpdater** ppUpdater) @@ -397,19 +387,14 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 2091u); } - Monitor.Enter(m_FirmwareLock); - try - { + lock (m_FirmwareLock) + { num = EnsureNativeObject(); if (num >= 0) { num = m_spFirmwareUpdater.CopyTo(ppUpdater); } } - finally - { - Monitor.Exit(m_FirmwareLock); - } if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 4u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 5u) { Module.WPP_SF_d(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 48uL), 63, (_GUID*)Unsafe.AsPointer(ref Module._003FA0x15529884_002EWPP_FirmwareUpdateAPI_cpp_Traceguids), num); @@ -430,9 +415,8 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 2028u); } - Monitor.Enter(m_FirmwareLock); - try - { + lock (m_FirmwareLock) + { if (!m_fFirmwareProcessSupported) { int num = -2147024846; @@ -450,21 +434,14 @@ namespace MicrosoftZuneLibrary m_spFirmwareUpdater.op_Assign((IFirmwareUpdater*)(*(ulong*)(cComPtrNtv_003CIFirmwareUpdater_003E.p))); } } - catch + finally { - //try-fault cComPtrNtv_003CIFirmwareUpdater_003E.Dispose(); - throw; } - cComPtrNtv_003CIFirmwareUpdater_003E.Dispose(); return result; } return result; } - finally - { - Monitor.Exit(m_FirmwareLock); - } } private unsafe void ContinueFirmwareUpdateWorker(object data) @@ -495,9 +472,8 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 1882u); } - Monitor.Enter(m_FirmwareLock); - try - { + lock (m_FirmwareLock) + { if (num >= 0) { num = EnsureNativeObject(); @@ -514,10 +490,6 @@ namespace MicrosoftZuneLibrary } } } - finally - { - Monitor.Exit(m_FirmwareLock); - } if (num < 0) { if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 4u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 2u) @@ -554,9 +526,9 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 1533u); } - Monitor.Enter(m_FirmwareLock); - try - { + + lock (m_FirmwareLock) + { num = EnsureNativeObject(); if (num >= 0) { @@ -593,10 +565,7 @@ namespace MicrosoftZuneLibrary num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)p + 40)))((nint)p, forceServerRequest ? 1 : 0, (IFirmwareUpdateCallback*)num2); } } - finally - { - Monitor.Exit(m_FirmwareLock); - } + startCheckForUpdatesArgs.HrStatus = num; if (num < 0) { @@ -618,26 +587,20 @@ namespace MicrosoftZuneLibrary Module.CComPtrNtv_003CIFirmwareUpdateErrorInfo_003E_002E_003D(cComPtrNtv_003CIFirmwareUpdateErrorInfo_003E.p, (IFirmwareUpdateErrorInfo*)lp); startCheckForUpdatesArgs.CheckForUpdatesComplete(new CheckForUpdatesArgs(new FirmwareUpdateErrorInfo((IFirmwareUpdateErrorInfo*)(*(ulong*)(cComPtrNtv_003CIFirmwareUpdateErrorInfo_003E.p))), null, RequiresSyncBeforeUpdate())); } - catch + finally { - //try-fault cComPtrNtv_003CIFirmwareUpdateErrorInfo_003E.Dispose(); - throw; } - cComPtrNtv_003CIFirmwareUpdateErrorInfo_003E.Dispose(); } if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 4u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 5u) { Module.WPP_SF_d(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 48uL), 42, (_GUID*)Unsafe.AsPointer(ref Module._003FA0x15529884_002EWPP_FirmwareUpdateAPI_cpp_Traceguids), num); } } - catch + finally { - //try-fault cComPtrNtv_003CIFirmwareUpdateCallback_003E.Dispose(); - throw; } - cComPtrNtv_003CIFirmwareUpdateCallback_003E.Dispose(); } private unsafe void StartFirmwareUpdateWorker(object data) @@ -675,9 +638,9 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 1684u); } - Monitor.Enter(m_FirmwareLock); - try - { + + lock (m_FirmwareLock) + { if (num >= 0) { num = EnsureNativeObject(); @@ -705,21 +668,15 @@ namespace MicrosoftZuneLibrary num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)(*(ulong*)(cComPtrNtv_003CIFirmwareUpdater2_003E.p)) + 80)))((nint)num2, nativeCollectionPtr2, (IFirmwareUpdateCallback*)p3, (EFirmwareUpdateOption)updateOption); } } - catch + finally { - //try-fault cComPtrNtv_003CIFirmwareUpdater2_003E.Dispose(); - throw; } - cComPtrNtv_003CIFirmwareUpdater2_003E.Dispose(); } } } } - finally - { - Monitor.Exit(m_FirmwareLock); - } + startFirmwareUpdateArgs.HrStatus = num; if (num < 0) { @@ -747,15 +704,14 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 1779u); } - Monitor.Enter(m_FirmwareLock); - if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 4u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 5u) - { - Module.WPP_SF_(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 48uL), 49, (_GUID*)Unsafe.AsPointer(ref Module._003FA0x15529884_002EWPP_FirmwareUpdateAPI_cpp_Traceguids)); - } - try + lock (m_FirmwareLock) { + if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 4u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 5u) + { + Module.WPP_SF_(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 48uL), 49, (_GUID*)Unsafe.AsPointer(ref Module._003FA0x15529884_002EWPP_FirmwareUpdateAPI_cpp_Traceguids)); + } string wBSTRString = ""; - try + fixed (char* wBSTRStringPtr = wBSTRString) { CComPtrNtv cComPtrNtv_003CIFirmwareUpdater2_003E = new(); try @@ -767,34 +723,20 @@ namespace MicrosoftZuneLibrary if (num >= 0) { long num2 = *(long*)(cComPtrNtv_003CIFirmwareUpdater2_003E.p); - num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)(*(ulong*)(cComPtrNtv_003CIFirmwareUpdater2_003E.p)) + 88)))((nint)num2, &additionalSpaceRequiredInBytes, &totalSpaceRequiredInBytes, (ushort**)(&wBSTRString)); + num = ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(long*)(*(ulong*)(cComPtrNtv_003CIFirmwareUpdater2_003E.p)) + 88)))((nint)num2, &additionalSpaceRequiredInBytes, &totalSpaceRequiredInBytes, (ushort**)wBSTRStringPtr); if (num >= 0) { - ushort* ptr = (ushort*)(*(ulong*)(&wBSTRString)); + ushort* ptr = (ushort*)(*(ulong*)wBSTRStringPtr); driveLetter = wBSTRString; } } } } - catch + finally { - //try-fault cComPtrNtv_003CIFirmwareUpdater2_003E.Dispose(); - throw; } - cComPtrNtv_003CIFirmwareUpdater2_003E.Dispose(); } - catch - { - //try-fault - Module.___CxxCallUnwindDtor((delegate*)(delegate*)(&Module.WBSTRString_002E_007Bdtor_007D), &wBSTRString); - throw; - } - Module.WBSTRString_002E_007Bdtor_007D(&wBSTRString); - } - finally - { - Monitor.Exit(m_FirmwareLock); } CheckDiskSpaceArgs args = new CheckDiskSpaceArgs(num, additionalSpaceRequiredInBytes, totalSpaceRequiredInBytes, driveLetter); deferredInvokeHandler(args); @@ -811,10 +753,9 @@ namespace MicrosoftZuneLibrary { Module._ZuneShipAssert(1004u, 1968u); } - Monitor.Enter(m_FirmwareLock); - try - { - CComPtrMgd spFirmwareMediator = m_spFirmwareMediator; + lock (m_FirmwareLock) + { + CComPtrMgd spFirmwareMediator = m_spFirmwareMediator; if (spFirmwareMediator.p != null) { Module.MicrosoftZuneLibrary_002EFirmwareUpdateMediator_002EFirmwareProcessCanceled(spFirmwareMediator.p); @@ -834,10 +775,6 @@ namespace MicrosoftZuneLibrary DeferredCancel(); } } - finally - { - Monitor.Exit(m_FirmwareLock); - } if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 60uL)) & 4u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 57uL) >= 5u) { Module.WPP_SF_(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 48uL), 58, (_GUID*)Unsafe.AsPointer(ref Module._003FA0x15529884_002EWPP_FirmwareUpdateAPI_cpp_Traceguids)); diff --git a/ZuneDBApi/MicrosoftZuneLibrary/FriendsOfArtistQuery.cs b/ZuneDBApi/MicrosoftZuneLibrary/FriendsOfArtistQuery.cs index 7f7c160..40cb985 100644 --- a/ZuneDBApi/MicrosoftZuneLibrary/FriendsOfArtistQuery.cs +++ b/ZuneDBApi/MicrosoftZuneLibrary/FriendsOfArtistQuery.cs @@ -85,9 +85,8 @@ namespace MicrosoftZuneLibrary public void Query(Guid artistId, [MarshalAs(UnmanagedType.U1)] bool getFriends, int userId, [MarshalAs(UnmanagedType.U1)] bool resolveZuneTags) { - try - { - Monitor.Enter(m_singletonInstance); + lock (m_singletonInstance) + { QueryComplete = false; if (!(artistId != m_artistId) && (!getFriends || m_getFriends) && userId == m_userId) { @@ -109,10 +108,6 @@ namespace MicrosoftZuneLibrary QueryComplete = true; } } - finally - { - Monitor.Exit(m_singletonInstance); - } } private FriendsOfArtistQuery() diff --git a/ZuneDBApi/MicrosoftZuneLibrary/HMESettings.cs b/ZuneDBApi/MicrosoftZuneLibrary/HMESettings.cs index 8c138d8..247bdc2 100644 --- a/ZuneDBApi/MicrosoftZuneLibrary/HMESettings.cs +++ b/ZuneDBApi/MicrosoftZuneLibrary/HMESettings.cs @@ -565,7 +565,7 @@ namespace MicrosoftZuneLibrary { if (*(ushort*)(&tagVARIANT) == 8) { - strName = new string((char*)Unsafe.As(ref Unsafe.AddByteOffset(ref tagVARIANT, 8))); + strName = new string((char*)Unsafe.As(ref tagVARIANT.decVal)); } Module.VariantClear(ptr5); if (0L != (nint)ptr3) diff --git a/ZuneDBApi/MicrosoftZuneLibrary/InteropNotifications.cs b/ZuneDBApi/MicrosoftZuneLibrary/InteropNotifications.cs index 360d82b..70242ad 100644 --- a/ZuneDBApi/MicrosoftZuneLibrary/InteropNotifications.cs +++ b/ZuneDBApi/MicrosoftZuneLibrary/InteropNotifications.cs @@ -45,7 +45,7 @@ namespace MicrosoftZuneLibrary throw; } IInteropNotify* interopNotify; - if (ptr2 == null || ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(ulong*)ptr2)))((nint)ptr2, (_GUID*)Unsafe.AsPointer(ref Module._GUID_3fb2d757_8ddb_46a9_9dd2_3424e2903e46), (void**)(&interopNotify)) < 0) + if (ptr2 == null || ((delegate* unmanaged[Cdecl, Cdecl])(*(ulong*)(*(ulong*)ptr2)))((nint)ptr2, (_GUID*)Unsafe.AsPointer(ref Module.GUID_IInteropNotify), (void**)(&interopNotify)) < 0) { return; } diff --git a/ZuneDBApi/MicrosoftZuneLibrary/LibraryDataProviderItemBase.cs b/ZuneDBApi/MicrosoftZuneLibrary/LibraryDataProviderItemBase.cs index 5a8e39d..52bf042 100644 --- a/ZuneDBApi/MicrosoftZuneLibrary/LibraryDataProviderItemBase.cs +++ b/ZuneDBApi/MicrosoftZuneLibrary/LibraryDataProviderItemBase.cs @@ -343,9 +343,8 @@ namespace MicrosoftZuneLibrary bool flag = false; if (m_thumbnail[thumbnailIndex] == null || TypeName == "Album") { - try - { - Monitor.Enter(m_lockObject); + lock (m_lockObject) + { AsyncGetThumbnailState asyncGetThumbnailState = m_fThumbnailRequested[thumbnailIndex]; if (asyncGetThumbnailState == null) { @@ -384,7 +383,7 @@ namespace MicrosoftZuneLibrary goto IL_018d; } goto end_IL_006c; - IL_018d: + IL_018d: if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 92uL)) & 0x40u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 89uL) >= 7u) { Module.WPP_SF_D(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 80uL), 26, (_GUID*)Unsafe.AsPointer(ref Module._003FA0xea57f500_002EWPP_LibraryDataProvider_cpp_Traceguids), m_uTraceId); @@ -400,11 +399,7 @@ namespace MicrosoftZuneLibrary m_thumbnailWorkerAlive = true; ThreadPool.QueueUserWorkItem(GetThumbnailOnWorkerThread, null); } - end_IL_006c:; - } - finally - { - Monitor.Exit(m_lockObject); + end_IL_006c:; } } if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 92uL)) & 0x40u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 89uL) >= 7u) @@ -425,9 +420,9 @@ namespace MicrosoftZuneLibrary { AsyncGetThumbnailState asyncGetThumbnailState = null; bool flag2 = true; - try - { - Monitor.Enter(m_lockObject); + + lock (m_lockObject) + { if (Module.WPP_GLOBAL_Control != Unsafe.AsPointer(ref Module.WPP_GLOBAL_Control) && ((uint)(*(int*)((ulong)(nint)Module.WPP_GLOBAL_Control + 92uL)) & 0x40u) != 0 && *(byte*)((ulong)(nint)Module.WPP_GLOBAL_Control + 89uL) >= 7u) { Module.WPP_SF_d(*(ulong*)((ulong)(nint)Module.WPP_GLOBAL_Control + 80uL), 35, (_GUID*)Unsafe.AsPointer(ref Module._003FA0xea57f500_002EWPP_LibraryDataProvider_cpp_Traceguids), m_thumbnailsToProcess.Count); @@ -472,10 +467,7 @@ namespace MicrosoftZuneLibrary } } } - finally - { - Monitor.Exit(m_lockObject); - } + if (asyncGetThumbnailState == null) { continue; diff --git a/ZuneDBApi/Module.cs b/ZuneDBApi/Module.cs index b68bf27..7d93a51 100644 --- a/ZuneDBApi/Module.cs +++ b/ZuneDBApi/Module.cs @@ -18,6 +18,7 @@ using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using Microsoft.Diagnostics.Tracing.Session; using Microsoft.Diagnostics.Tracing.Parsers; +using Microsoft.Zune.Playlist; namespace ZuneDBApi { @@ -59,9 +60,13 @@ namespace ZuneDBApi internal static readonly _GUID GUID_DownloadManagerProxy = new("399f851b-a600-4e88-90c3-03b8f2770076"); internal static readonly _GUID GUID_IWin7ShellManager = new("a89c52eb-97a9-417b-9872-46c040f1b76f"); internal static readonly _GUID GUID_IWin7Libraries = new("e24c5c6a-85a5-440e-93e1-bb51e32033ac"); + internal static readonly _GUID GUID_IInteropNotify = new("3fb2d757-8ddb-46a9-9dd2-3424e2903e46"); internal static readonly _GUID _GUID_60fcb6b3_8562_4ddf_99f8_b93c08ed5e83 = new("60fcb6b3-8562-4ddf-99f8-b93c08ed5e83"); internal static readonly _GUID _GUID_00000000_0000_0000_c000_000000000046 = new("00000000-0000-0000-c000-000000000046"); - + internal static readonly _GUID GUID_IFolderProvider = new("a2889317-d0c7-41d8-abc7-1eb4cb8d46d6"); + internal static readonly _GUID GUID_IFileProvider = new("16a9f8be-e76c-4391-ad74-8df74b7a3c21"); + internal static readonly _GUID GUID_IZuneWebHost = new("51005f8f-675e-45e1-ae94-8edef996a02e"); + internal static readonly _GUID GUIDIUserCredentialManager = new("41c80590-c50b-4d27-b860-7c87f3f0cb54"); private static bool s_bIsLonghornOrBetter; private static bool s_bIsLonghornOrBetterInitialized; @@ -90,6 +95,11 @@ namespace ZuneDBApi public static HINSTANCE ToHInstance(void* h) => new(new IntPtr(h)); public static void* ToPointer(this HINSTANCE h) => h.DangerousGetHandle().ToPointer(); + internal static void* @new(ulong v) + { + return Marshal.AllocHGlobal((int)v).ToPointer(); + } + internal static void delete(void* ptr) { Marshal.FreeHGlobal((IntPtr)ptr);