Можно наблюдать график, Вы создали использование GraphEdit, инструмент от DirectShow SDK. В GraphEdit выберите Файл-> Подключение к удаленному Графику...
для нахождения графика в списке, необходимо зарегистрировать его в рабочей объектной таблице:
void AddToRot( IUnknown *pUnkGraph, DWORD *pdwRegister )
{
IMoniker* pMoniker;
IRunningObjectTable* pROT;
GetRunningObjectTable( 0, &pROT );
WCHAR wsz[256];
swprintf_s( wsz, L"FilterGraph %08p pid %08x", (DWORD_PTR)pUnkGraph, GetCurrentProcessId() );
CreateItemMoniker( L"!", wsz, &pMoniker );
pROT->Register( 0, pUnkGraph, pMoniker, pdwRegister );
// Clean up any COM stuff here ...
}
После уничтожения Вашего графика, необходимо удалить его из ГНИЛИ путем вызова IRunningObjectTable:: Отмените
Верно, по сути, это способ сохранить глобальный доступ к DLL, не беспокоясь о конфликтах. Больше никаких адских DLL. У каждой архитектуры и версии есть свое место для жизни.
У нее также есть собственный способ просмотра в проводнике, поэтому, если вы перейдете в
C: \ Windows \ assembly
В проводнике Windows он перечислит все DLL.
Но если вы запустите cmd
, то увидите, как он на самом деле структурирован:
C:\Users\tritter>cd C:\Windows\assembly C:\Windows\assembly>dir Directory of C:\Windows\assembly 07/20/2009 02:18 PM <DIR> GAC 06/17/2009 04:22 PM <DIR> GAC_32 06/17/2009 04:22 PM <DIR> GAC_64 06/17/2009 04:22 PM <DIR> GAC_MSIL ...snip... 0 File(s) 0 bytes 9 Dir(s) 90,538,311,680 bytes free C:\Windows\assembly>cd GAC_64 C:\Windows\assembly\GAC_64>dir Directory of C:\Windows\assembly\GAC_64 06/17/2009 04:22 PM <DIR> . 06/17/2009 04:22 PM <DIR> .. 01/19/2008 09:54 AM <DIR> blbproxy ...snip... 01/19/2008 09:54 AM <DIR> srmlib 01/19/2008 06:11 AM <DIR> System.Data 01/19/2008 06:11 AM <DIR> System.Data.OracleClient ...snip... 0 File(s) 0 bytes 34 Dir(s) 90,538,311,680 bytes free C:\Windows\assembly\GAC_64>cd System.Data C:\Windows\assembly\GAC_64\System.Data>dir Directory of C:\Windows\assembly\GAC_64\System.Data 01/19/2008 06:11 AM <DIR> . 01/19/2008 06:11 AM <DIR> .. 04/11/2009 12:20 PM <DIR> 2.0.0.0__b77a5c561934e089 0 File(s) 0 bytes 3 Dir(s) 90,538,311,680 bytes free C:\Windows\assembly\GAC_64\System.Data>cd 2.0.0.0__b77a5c561934e089 C:\Windows\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089>dir Directory of C:\Windows\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089 04/11/2009 12:20 PM <DIR> . 04/11/2009 12:20 PM <DIR> .. 04/11/2009 12:12 PM 3,008,512 System.Data.dll 1 File(s) 3,008,512 bytes 2 Dir(s) 90,538,311,680 bytes free C:\Windows\assembly\GAC_64\System.Data\2.0.0.0__b77a5c561934e089>
Здесь вы можете увидеть версию 2.0.0.0__b77a5c561934e089 System.Data.
DLL идентифицируется 5 части:
Хотя первые 3, как правило, являются большими.
Давайте разберемся:
Таким образом, GAC должен быть местом для хранения библиотек кода, чтобы они были доступны для всех приложений, работающих на машине.
Каждый компьютер где общий установленная языковая среда имеет машинный кеш кода, называемый глобальный кеш сборок. Глобальный кэш сборок хранит сборки специально предназначенный для совместного использования несколькими приложениями на компьютер.
Вы должны делиться сборками установка их в глобальный кеш сборки только тогда, когда вам нужно. Как правило, продолжайте сборку частные зависимости и найдите сборки в приложении каталог, если не разделяет сборку явно требуется. К тому же, нет необходимости устанавливать сборки в глобальную сборку кеш, чтобы сделать их доступными для COM взаимодействие или неуправляемый код.
То, что содержит MSDN, может вас удивить ... обычно вы можете прочитать это как статью. Самые простые и важные детали вверху, сложные детали глубже. Это, конечно, объясняет это лучше, чем я мог бы.
Обратите внимание, что Visual Studio отображает все библиотеки DLL в GAC на вкладке .NET в окне Ссылки . (Щелкните правой кнопкой мыши проект в обозревателе решений и выберите Добавить ссылку.) Это должно дать вам более сложную идею.
Это похоже на правильную работу реестра COM в отношении физических файлов, а также их интерфейса и информации о местоположении. В COM файлы были везде с централизованными метаданными. GAC централизует съемку взрывов.