Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
De inhoud en voorbeeldcode in dit onderwerp zijn verouderd en worden momenteel niet ondersteund. Het werkt mogelijk niet met de huidige hulpprogrammaketen voor het ontwikkelen van stuurprogramma's.
U kunt de code in deze sectie compileren om een UVC Extension Unit Sample Control te maken. Wanneer u dit project bouwt, maakt u een Microsoft ActiveX-besturingselement dat u met een bijbehorende toepassing kunt gebruiken om eigenschappen op een extensie-eenheid op te halen en in te stellen.
Als u het besturingselement wilt gebruiken, hebt u hardware nodig waarmee de specifieke functionaliteit van de extensie-eenheid wordt geïmplementeerd. U kunt ook een USB-emulator gebruiken.
Gebruik deze stappen om het besturingselement te bouwen:
Installeer de volgende pakketten:
- Microsoft Windows Server 2003 met Service Pack 1 (SP1) Driver Development Kit (DDK)
- Microsoft DirectX 9.0 SDK-update (februari 2005)
- Microsoft DirectX 9.0 februari 2005 SDK extras
Kopieer de voorbeeldcode uit de volgende onderwerpen naar afzonderlijke bestanden.
voorbeeldinterface voor UVC-extensie-eenheden
Voorbeeldplug-in-uitbreidingseenheid-DLL
Voorbeeld van registervermelding voor UVC-extensiemodules
voorbeeldtoepassing van UVC-extensie-eenheden
Ondersteuning van AutoUpdate-gebeurtenissen met extensie-eenheden
Maak een bronnenbestand als volgt:
TARGETNAME= uvcxuplgn TARGETTYPE= DYNLINK TARGETPATH= obj TARGETEXT= ax DLLENTRY=_DllMainCRTStartup DLLBASE=0x10080000 USE_MSVCRT=1 USE_STATIC_ATL=1 USER_INCLUDES= $(O) INCLUDES= SOURCES= interface.idl \ uvcxuplgn.cpp \ stdafx.cpp \ interface_i.c \ vidcap_i.c \ xuproxy.cpp TARGETLIBS= \ $(SDK_LIB_PATH)\kernel32.lib \ $(SDK_LIB_PATH)\user32.lib \ $(SDK_LIB_PATH)\gdi32.lib \ $(SDK_LIB_PATH)\advapi32.lib \ $(SDK_LIB_PATH)\comdlg32.lib \ $(SDK_LIB_PATH)\ole32.lib \ $(SDK_LIB_PATH)\oleaut32.lib \ $(SDK_LIB_PATH)\uuid.lib \ $(SDK_LIB_PATH)\comctl32.lib
Maak als volgt een makefile-bestand:
############################################################################# # # Copyright (C) Microsoft Corporation 1995 # All Rights Reserved. # # MAKEFILE for WDM device driver kit # ############################################################################# # # DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source # file to this component. This file merely indirects to the real make file # that is shared by all the driver components of the Windows NT DDK # !if "$(WIN2K_DDKBUILD)" == "" !INCLUDE $(NTMAKEENV)\makefile.def !endif
Gebruik het hulpprogramma Guidgen.exe (dat is opgenomen in de Microsoft Windows SDK) om drie GUID's te maken:
- Gebruik de eerste GUID als de ID van de eigenschappenset voor uw extensie-eenheid. Vervang de X-GUID-gebaseerde tijdelijke aanduidingen door de nieuwe GUID in Xuproxy.h, Xusample.rgs, Xuplgin.inf, en in de beschrijving van de extensie-eenheid op hardwareniveau.
- Gebruik de tweede GUID als iid voor uw extensie-eenheid. Vervang de y-gebaseerde GUID-plaatsaanduidingen door de nieuwe GUID in Interface.idl en Xuplgin.inf.
- Gebruik de derde GUID als de klasse-GUID (clsid) voor uw extensie-eenheid. Vervang de tijdelijke aanduiding voor de op z gebaseerde GUID door de nieuwe GUID in Xuplgin.inf, Xuproxy.hen Xusample.rgs.
Maak als volgt Uvcxuplgn.def-:
LIBRARY uvcxuplgn EXPORTS DllGetClassObject PRIVATE DllCanUnloadNow PRIVATE DllRegisterServer PRIVATE DllUnregisterServer PRIVATE
Maak Uvcxuplgn.cpp als volgt:
#include "stdafx.h" CComModule _Module; #include <initguid.h> #include "interface.h" #include "xuproxy.h" BEGIN_OBJECT_MAP(ObjectMap) OBJECT_ENTRY(CLSID_ExtensionUnit, CExtension) END_OBJECT_MAP() STDAPI DllRegisterServer(void) { return _Module.RegisterServer(FALSE, NULL); } STDAPI DllUnregisterServer(void) { return _Module.UnregisterServer(); } EXTERN_C BOOL DllMain( HINSTANCE hinst, DWORD dwReason, LPVOID lpReserved) { switch (dwReason) { case DLL_PROCESS_ATTACH: _Module.Init (ObjectMap, hinst); break; case DLL_PROCESS_DETACH: _Module.Term(); break; } return TRUE; } extern "C" STDMETHODIMP DllCanUnloadNow(void) { return _Module.GetLockCount()==0 ? S_OK : S_FALSE; } extern "C" STDAPI DllGetClassObject( REFCLSID rclsid, REFIID riid, LPVOID *ppv) { return _Module.GetClassObject(rclsid, riid, ppv); }
Maak als volgt Stdafx.h:
// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, // but are changed infrequently #if !defined(AFX_STDAFX_H__722DC775_FE6F_42FB_BED5_E1E299976D17__INCLUDED_) #define AFX_STDAFX_H__722DC775_FE6F_42FB_BED5_E1E299976D17__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define STRICT #ifndef _WIN32_WINNT #define _WIN32_WINNT 0x0400 #endif #define _ATL_APARTMENT_THREADED #include <atlbase.h> //You may derive a class from CComModule and use it if you want to override //something, but do not change the name of _Module extern CComModule _Module; #include <atlcom.h> #include <atlctl.h> //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_STDAFX_H__722DC775_FE6F_42FB_BED5_E1E299976D17__INCLUDED)
Maak Stdafx.cpp als volgt:
// stdafx.cpp : source file that includes just the standard includes // stdafx.pch will be the pre-compiled header // stdafx.obj will contain the pre-compiled type information #include "stdafx.h" #ifdef _ATL_STATIC_REGISTRY #include <statreg.h> #include <statreg.cpp> #endif #include <atlimpl.cpp>
Bouw het voorbeeld door
Build -cZg
aan te roepen in de WDK-buildomgeving.
Zie ook
Codevoorbeelden voor UVC-extensie-eenheid
voorbeeldinterface voor UVC-extensie-eenheden
Voorbeeld-uitbreidingsmodule DLL-plug-in
Voorbeeld van registerregistratie voor UVC-extensie-eenheden
voorbeeldtoepassing voor UVC-extensie-eenheden
Ondersteuning van AutoUpdate-gebeurtenissen met extensie-eenheden