Wiem, jak zarejestrować biblioteki DLL, ale nigdy tak naprawdę nie jestem pewien, dlaczego robię to lub w jakich warunkach dll muszą być rejestrowane. Czy ktoś mógłby mi wytłumaczyć lub wskazać jakąś dokumentację?Do czego służy rejestracja biblioteki DLL?
Odpowiedz
Po zarejestrowaniu biblioteki DLL wywoływana jest pozycja wejściowa metody DllRegisterServer
w bibliotece DLL. Podobnie, DllUnregisterServer
jest wywoływany, gdy biblioteka DLL jest wyrejestrowana.
Jak opisano w this MSDN article:
zobowiązuje serwer w procesie do tworzyć swoje wpisy rejestru dla wszystkich klas obsługiwanych w tym serwerze modułu . Jeśli ta funkcja się nie powiedzie, stan rejestru dla wszystkich jej klas jest nieokreślony.
Dla COM DLL, trzeba będzie wdrożyć własne DllRegisterServer
i DllUnregisterServer
metod punkt wejścia, które wykonują Rejestrowanie/wyrejestrowanie się odpowiednio. Przykładowy kod dla DllRegisterServer
można znaleźć here.
Końcowym rezultatem rejestracji biblioteki DLL jest zarejestrowanie wszystkich identyfikatorów CLSID dla komponentów w bibliotece DLL pod numerem HKEY_CLASSES_ROOT\CLSID
. To pozwala CoCreateInstance
znaleźć właściwy serwer podczas tworzenia obiektów COM z innej biblioteki DLL lub aplikacji.
DllUnregisterServer
zrobi odwrotność i usunie wszystkie identyfikatory CLSID z rejestru, które zostały tam umieszczone przez DllRegisterServer
.
Więcej ogólnych informacji na temat DllRegisterServer
można znaleźć here.
To, co jest najczęściej określane jako rejestracja DLL, to implementacja obiektu COM. regsvr32 zapewnia, że można utworzyć instancję obiektu. Kiedy np. VBScript używa New lub CreateObject(), rejestracja zapewnia, że COM wie, którą bibliotekę DLL załadować, aby utworzyć nową instancję, czy to przez nazwę czy przez CLSID.
Zobacz podsumowanie (bardzo) krótkie pod numerem "the layman's explanation".
Link jest uszkodzony. Proszę podać zastępcę. –
Gotowe. Zarchiwizowane również jako https://web.archive.org/web/20170222094351/https://chewychong.wordpress.com/2004/08/23/layman-s-explanation-of-regscvs-regasm-regsvr32/ –
Wystarczy zobaczyć kod źródłowy regsvr32.exe
Byłem zaskoczony, że ten kod źródłowy jest faktycznie dostępny w Visual Studio: http://msdn.microsoft.com/en-us/library/ms177531.aspx –
- 1. Do czego służy plik .lai biblioteki libtool?
- 2. Do czego służy .data.rel.ro?
- 3. Do czego służy os.linesep?
- 4. Do czego służy MemoryCache.AddOrGetExisting?
- 5. Do czego służy global.asax?
- 6. Do czego służy phonestateintentreceiver.notifyPhoneCallState?
- 7. Do czego służy GCC_NO_COMMON_BLOCKS?
- 8. Do czego służy #pragma?
- 9. do czego służy SDKDDKVer.h?
- 10. Do czego służy UnmanagedMemoryStream?
- 11. Do czego służy Control.IsHandleCreated?
- 12. Do czego służy Enum?
- 13. Do czego służy DTMobileIS?
- 14. do czego służy java.lang.reflect.Method.isBridge()?
- 15. Do czego służy app.config?
- 16. Do czego służy dokument.implementation.createHTMLDocument?
- 17. do czego służy self =>?
- 18. Do czego służy funkcja Adapter.getItem()?
- 19. Do czego służy właściwość FormsAuthenticationTicket.Version?
- 20. Do czego służy stos kernela?
- 21. Do czego służy kod JavaScript?
- 22. Do czego służy element iframe?
- 23. Do czego służy właściwość TForm.TipMode?
- 24. Do czego służy nazwa enum?
- 25. Do czego służy adresowanie WS?
- 26. Do czego służy import java.util.UUID?
- 27. Do czego służy cordova/argscheck?
- 28. Do czego służy Python string.find?
- 29. Java - do czego służy "@Override"?
- 30. Do czego służy plik _references.js?
Kiedy tworzę ActiveX DLL w VB6 nie mam do wdrożenia DllRegisterServer. – CJ7