Discussion:
Driver with files handling
(too old to reply)
t***@gmail.com
2012-04-11 15:09:16 UTC
Permalink
Hi everyone,
I'm new to DDK, sorry if my question is too simple to be posted here.

I'm writing a driver which simulates a device (AVStream Simulated Hardware Sample) from the WinDDK sample (located in WinDDK\7600.16385.1\src\AVStream\avshws).
I'm interested in just writing into a file for the moment.
I edited the "image.cpp" file :
Step 1 : adding headers
<code>
#include <fstream>
#include <iostream>
using namespace std;
</code>
At this point, everything is fine with compiling.

Step 2 : adding 1 line of code in a function
<code>
ofstream();
</code>
Here, the compiler cries:

Compiling - hwsim.cpp
Compiling - generating code...
Linking Executable - objchk_wxp_x86\i386\avshws.sys
1>errors in directory c:\projets_visual\facerecognitiondriver\facerecognitiondri
ver
1>c:\projets_visual\facerecognitiondriver\facerecognitiondriver\image.obj : erro
r LNK2019: unresolved external symbol "__declspec(dllimport) public: void __this
call std::basic_ofstream<char,struct std::char_traits<char> >::`vbase destructor
'(void)" (__imp_??_D?$***@DU?$***@D@std@@@std@@QAEXXZ) refere
nced in function "public: void __thiscall CImageSynthesizer::GenerateImage(void)
" (?***@CImageSynthesizer@@QAEXXZ)
1>c:\projets_visual\facerecognitiondriver\facerecognitiondriver\image.obj : erro
r LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall
std::basic_ofstream<char,struct std::char_traits<char> >::basic_ofstream<char,st
ruct std::char_traits<char> >(void)" (__imp_??0?$***@DU?$char_traits@
***@std@@@std@@***@XZ) referenced in function "public: void __thiscall CImageSynth
esizer::GenerateImage(void)" (?***@CImageSynthesizer@@QAEXXZ)
1>c:\projets_visual\facerecognitiondriver\facerecognitiondriver\objchk_wxp_x86\i
386\avshws.sys : error LNK1120: 2 unresolved externals
BUILD: Finish time: Wed Apr 11 16:48:23 2012
BUILD: Done

11 files compiled - 15 Warnings - 2,221 LPS
1 executable built - 3 Errors


I thought it was some include/library problem, so I edited the SOURCES files to include the ones I want to use in the future.
Note that due to spacing problems, I moved some headers and libraries :
C:\cpplibs\sdkw60alib corresponds to C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
C:\cpplibs\vcatlmfclib corresponds to C:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\lib
C:\cppinclude\vcinclude corresponds to C:\Program Files\Microsoft Visual Studio 9.0\VC\include

Here is my SOURCES file :



MAJORCOMP=ntos

USE_STL=1
STL_VER=70
USE_IOSTREAM=1
USE_NATIVE_EH=1



TARGETNAME=avshws
TARGETTYPE=DRIVER
TARGETLIBS=\
$(DDK_LIB_PATH)\ks.lib \
C:\OpenCV2.2\lib\opencv_core220.lib \
C:\OpenCV2.2\lib\opencv_core220d.lib \
C:\OpenCV2.2\lib\opencv_highgui220.lib \
C:\OpenCV2.2\lib\opencv_highgui220d.lib \
C:\OpenCV2.2\lib\opencv_contrib220.lib \
C:\OpenCV2.2\lib\opencv_contrib220d.lib \
C:\OpenCV2.2\lib\opencv_calib3d220.lib \
C:\OpenCV2.2\lib\opencv_features2d220.lib \
C:\OpenCV2.2\lib\opencv_ffmpeg220.lib \
C:\OpenCV2.2\lib\opencv_flann220.lib \
C:\OpenCV2.2\lib\opencv_gpu220.lib \
C:\OpenCV2.2\lib\opencv_imgproc220.lib \
C:\OpenCV2.2\lib\opencv_legacy220.lib \
C:\OpenCV2.2\lib\opencv_ml220.lib \
C:\OpenCV2.2\lib\opencv_objdetect220.lib \
C:\OpenCV2.2\lib\opencv_ts220.lib \
C:\OpenCV2.2\lib\opencv_video220.lib \
C:\OpenCV2.2\lib\opencv_calib3d220d.lib \
C:\OpenCV2.2\lib\opencv_features2d220d.lib \
C:\OpenCV2.2\lib\opencv_ffmpeg220d.lib \
C:\OpenCV2.2\lib\opencv_flann220d.lib \
C:\OpenCV2.2\lib\opencv_gpu220d.lib \
C:\OpenCV2.2\lib\opencv_imgproc220d.lib \
C:\OpenCV2.2\lib\opencv_legacy220d.lib \
C:\OpenCV2.2\lib\opencv_ml220d.lib \
C:\OpenCV2.2\lib\opencv_objdetect220d.lib \
C:\OpenCV2.2\lib\opencv_ts220.lib \
C:\OpenCV2.2\lib\opencv_video220d.lib \
C:\cpplibs\sdkw60alib\AclUI.lib \
C:\cpplibs\sdkw60alib\ActiveDS.lib \
C:\cpplibs\sdkw60alib\Ad1.lib \
C:\cpplibs\sdkw60alib\ADSIid.lib \
C:\cpplibs\sdkw60alib\AdvAPI32.lib \
C:\cpplibs\sdkw60alib\ahadmin.lib \
C:\cpplibs\sdkw60alib\amstrmid.lib \
C:\cpplibs\sdkw60alib\ASycFilt.lib \
C:\cpplibs\sdkw60alib\AuthZ.lib \
C:\cpplibs\sdkw60alib\avrt.lib \
C:\cpplibs\sdkw60alib\bcrypt.lib \
C:\cpplibs\sdkw60alib\bhsupp.lib \
C:\cpplibs\sdkw60alib\Bits.lib \
C:\cpplibs\sdkw60alib\bthprops.lib \
C:\cpplibs\sdkw60alib\Cabinet.lib \
C:\cpplibs\sdkw60alib\Cap.lib \
C:\cpplibs\sdkw60alib\certadm.lib \
C:\cpplibs\sdkw60alib\certidl.lib \
C:\cpplibs\sdkw60alib\CiUuid.lib \
C:\cpplibs\sdkw60alib\clfsmgmt.lib \
C:\cpplibs\sdkw60alib\clfsw32.lib \
C:\cpplibs\sdkw60alib\ClusApi.lib \
C:\cpplibs\sdkw60alib\ComCtl32.lib \
C:\cpplibs\sdkw60alib\ComDlg32.lib \
C:\cpplibs\sdkw60alib\ComSvcs.lib \
C:\cpplibs\sdkw60alib\corguids.lib \
C:\cpplibs\sdkw60alib\credui.lib \
C:\cpplibs\sdkw60alib\Crypt32.lib \
C:\cpplibs\sdkw60alib\CryptNet.lib \
C:\cpplibs\sdkw60alib\cryptui.lib \
C:\cpplibs\sdkw60alib\d3d10.lib \
C:\cpplibs\sdkw60alib\d3d8thk.lib \
C:\cpplibs\sdkw60alib\d3d9.lib \
C:\cpplibs\sdkw60alib\daouuid.lib \
C:\cpplibs\sdkw60alib\DbgEng.lib \
C:\cpplibs\sdkw60alib\DbgHelp.lib \
C:\cpplibs\sdkw60alib\dciman32.lib \
C:\cpplibs\sdkw60alib\ddao35.lib \
C:\cpplibs\sdkw60alib\ddao35d.lib \
C:\cpplibs\sdkw60alib\ddao35u.lib \
C:\cpplibs\sdkw60alib\ddao35ud.lib \
C:\cpplibs\sdkw60alib\DhcpCSvc.lib \
C:\cpplibs\sdkw60alib\dhcpcsvc6.lib \
C:\cpplibs\sdkw60alib\dhcpsapi.lib \
C:\cpplibs\sdkw60alib\dmoguids.lib \
C:\cpplibs\sdkw60alib\DnsAPI.lib \
C:\cpplibs\sdkw60alib\dpx.lib \
C:\cpplibs\sdkw60alib\DSProp.lib \
C:\cpplibs\sdkw60alib\DSUIExt.lib \
C:\cpplibs\sdkw60alib\DtcHelp.lib \
C:\cpplibs\sdkw60alib\dwmapi.lib \
C:\cpplibs\sdkw60alib\dxgi.lib \
C:\cpplibs\sdkw60alib\dxva2.lib \
C:\cpplibs\sdkw60alib\eappcfg.lib \
C:\cpplibs\sdkw60alib\eappprxy.lib \
C:\cpplibs\sdkw60alib\encapi.lib \
C:\cpplibs\sdkw60alib\esent.lib \
C:\cpplibs\sdkw60alib\evr.lib \
C:\cpplibs\sdkw60alib\FaultRep.lib \
C:\cpplibs\sdkw60alib\FCachDll.lib \
C:\cpplibs\sdkw60alib\Fci.lib \
C:\cpplibs\sdkw60alib\Fdi.lib \
C:\cpplibs\sdkw60alib\fileextd.lib \
C:\cpplibs\sdkw60alib\format.lib \
C:\cpplibs\sdkw60alib\FrameDyD.lib \
C:\cpplibs\sdkw60alib\FrameDyn.lib \
C:\cpplibs\sdkw60alib\fwpuclnt.lib \
C:\cpplibs\sdkw60alib\fxsutility.lib \
C:\cpplibs\sdkw60alib\Gdi32.lib \
C:\cpplibs\sdkw60alib\GdiPlus.lib \
C:\cpplibs\sdkw60alib\GlU32.lib \
C:\cpplibs\sdkw60alib\GPEdit.lib \
C:\cpplibs\sdkw60alib\gpmuuid.lib \
C:\cpplibs\sdkw60alib\HLink.lib \
C:\cpplibs\sdkw60alib\Htmlhelp.lib \
C:\cpplibs\sdkw60alib\httpapi.lib \
C:\cpplibs\sdkw60alib\Icm32.lib \
C:\cpplibs\sdkw60alib\Icmui.lib \
C:\cpplibs\sdkw60alib\iepmapi.lib \
C:\cpplibs\sdkw60alib\ImageHlp.lib \
C:\cpplibs\sdkw60alib\Imm32.lib \
C:\cpplibs\sdkw60alib\infocardapi.lib \
C:\cpplibs\sdkw60alib\IPHlpApi.lib \
C:\cpplibs\sdkw60alib\Iprop.lib \
C:\cpplibs\sdkw60alib\irprops.lib \
C:\cpplibs\sdkw60alib\iscsidsc.lib \
C:\cpplibs\sdkw60alib\Kernel32.lib \
C:\cpplibs\sdkw60alib\KSGuid.lib \
C:\cpplibs\sdkw60alib\KSProxy.lib \
C:\cpplibs\sdkw60alib\ksuser.lib \
C:\cpplibs\sdkw60alib\ktmw32.lib \
C:\cpplibs\sdkw60alib\LoadPerf.lib \
C:\cpplibs\sdkw60alib\Lz32.lib \
C:\cpplibs\sdkw60alib\magnification.lib \
C:\cpplibs\sdkw60alib\Mf.lib \
C:\cpplibs\sdkw60alib\Mfplat.lib \
C:\cpplibs\sdkw60alib\mfuuid.lib \
C:\cpplibs\sdkw60alib\MgmtAPI.lib \
C:\cpplibs\sdkw60alib\MiniDump.lib \
C:\cpplibs\sdkw60alib\MMC.lib \
C:\cpplibs\sdkw60alib\Mpr.lib \
C:\cpplibs\sdkw60alib\Mprapi.lib \
C:\cpplibs\sdkw60alib\MqOA.lib \
C:\cpplibs\sdkw60alib\MqRt.lib \
C:\cpplibs\sdkw60alib\MSAcm32.lib \
C:\cpplibs\sdkw60alib\Mscms.lib \
C:\cpplibs\sdkw60alib\mscoree.lib \
C:\cpplibs\sdkw60alib\mscorsn.lib \
C:\cpplibs\sdkw60alib\msctfmonitor.lib \
C:\cpplibs\sdkw60alib\msdasc.lib \
C:\cpplibs\sdkw60alib\msdelta.lib \
C:\cpplibs\sdkw60alib\msdmo.lib \
C:\cpplibs\sdkw60alib\msdrm.lib \
C:\cpplibs\sdkw60alib\Msi.lib \
C:\cpplibs\sdkw60alib\MSImg32.lib \
C:\cpplibs\sdkw60alib\MsPatchC.lib \
C:\cpplibs\sdkw60alib\MSRating.lib \
C:\cpplibs\sdkw60alib\MSTask.lib \
C:\cpplibs\sdkw60alib\MsWSock.lib \
C:\cpplibs\sdkw60alib\MsXml2.lib \
C:\cpplibs\sdkw60alib\msxml6.lib \
C:\cpplibs\sdkw60alib\Mtx.lib \
C:\cpplibs\sdkw60alib\mtxdm.lib \
C:\cpplibs\sdkw60alib\muiload.lib \
C:\cpplibs\sdkw60alib\ncrypt.lib \
C:\cpplibs\sdkw60alib\ndfapi.lib \
C:\cpplibs\sdkw60alib\ndproxystub.lib \
C:\cpplibs\sdkw60alib\NetAPI32.lib \
C:\cpplibs\sdkw60alib\NetSh.lib \
C:\cpplibs\sdkw60alib\newdev.lib \
C:\cpplibs\sdkw60alib\nmapi.lib \
C:\cpplibs\sdkw60alib\NMSupp.lib \
C:\cpplibs\sdkw60alib\normaliz.lib \
C:\cpplibs\sdkw60alib\NtDsAPI.lib \
C:\cpplibs\sdkw60alib\NTMSAPI.lib \
C:\cpplibs\sdkw60alib\NtQuery.lib \
C:\cpplibs\sdkw60alib\odbc32.lib \
C:\cpplibs\sdkw60alib\odbcbcp.lib \
C:\cpplibs\sdkw60alib\odbccp32.lib \
C:\cpplibs\sdkw60alib\Ole32.lib \
C:\cpplibs\sdkw60alib\OleAcc.lib \
C:\cpplibs\sdkw60alib\OleAut32.lib \
C:\cpplibs\sdkw60alib\oledb.lib \
C:\cpplibs\sdkw60alib\OleDlg.lib \
C:\cpplibs\sdkw60alib\OlePro32.lib \
C:\cpplibs\sdkw60alib\OpenGL32.lib \
C:\cpplibs\sdkw60alib\osptk.lib \
C:\cpplibs\sdkw60alib\p2p.lib \
C:\cpplibs\sdkw60alib\p2pgraph.lib \
C:\cpplibs\sdkw60alib\parser.lib \
C:\cpplibs\sdkw60alib\Pdh.lib \
C:\cpplibs\sdkw60alib\PEnter.lib \
C:\cpplibs\sdkw60alib\PhotoAcquireUID.lib \
C:\cpplibs\sdkw60alib\PortableDeviceGuids.lib \
C:\cpplibs\sdkw60alib\powrprof.lib \
C:\cpplibs\sdkw60alib\prntvpt.lib \
C:\cpplibs\sdkw60alib\propsys.lib \
C:\cpplibs\sdkw60alib\Psapi.lib \
C:\cpplibs\sdkw60alib\quartz.lib \
C:\cpplibs\sdkw60alib\qutil.lib \
C:\cpplibs\sdkw60alib\qwave.lib \
C:\cpplibs\sdkw60alib\RASAPI32.lib \
C:\cpplibs\sdkw60alib\RASDlg.lib \
C:\cpplibs\sdkw60alib\ResUtils.lib \
C:\cpplibs\sdkw60alib\RichEd20.lib \
C:\cpplibs\sdkw60alib\Rpcns4.lib \
C:\cpplibs\sdkw60alib\RpcRT4.lib \
C:\cpplibs\sdkw60alib\rstrtmgr.lib \
C:\cpplibs\sdkw60alib\Rtm.lib \
C:\cpplibs\sdkw60alib\Rtutils.lib \
C:\cpplibs\sdkw60alib\sapi.lib \
C:\cpplibs\sdkw60alib\SCardDlg.lib \
C:\cpplibs\sdkw60alib\ScrnSave.lib \
C:\cpplibs\sdkw60alib\ScrnSavW.lib \
C:\cpplibs\sdkw60alib\SearchSDK.lib \
C:\cpplibs\sdkw60alib\Secur32.lib \
C:\cpplibs\sdkw60alib\SensAPI.lib \
C:\cpplibs\sdkw60alib\SetupAPI.lib \
C:\cpplibs\sdkw60alib\Sfc.lib \
C:\cpplibs\sdkw60alib\shell32.lib \
C:\cpplibs\sdkw60alib\ShFolder.lib \
C:\cpplibs\sdkw60alib\ShLwApi.lib \
C:\cpplibs\sdkw60alib\sisbkup.lib \
C:\cpplibs\sdkw60alib\slc.lib \
C:\cpplibs\sdkw60alib\slcext.lib \
C:\cpplibs\sdkw60alib\slwga.lib \
C:\cpplibs\sdkw60alib\SnmpAPI.lib \
C:\cpplibs\sdkw60alib\SpOrder.lib \
C:\cpplibs\sdkw60alib\SrClient.lib \
C:\cpplibs\sdkw60alib\Sti.lib \
C:\cpplibs\sdkw60alib\strmiids.lib \
C:\cpplibs\sdkw60alib\strsafe.lib \
C:\cpplibs\sdkw60alib\structuredquery.lib \
C:\cpplibs\sdkw60alib\Svcguid.lib \
C:\cpplibs\sdkw60alib\Tapi32.lib \
C:\cpplibs\sdkw60alib\taskschd.lib \
C:\cpplibs\sdkw60alib\tbs.lib \
C:\cpplibs\sdkw60alib\tdh.lib \
C:\cpplibs\sdkw60alib\Thunk32.lib \
C:\cpplibs\sdkw60alib\Traffic.lib \
C:\cpplibs\sdkw60alib\TranscodeImageUID.lib \
C:\cpplibs\sdkw60alib\UIAutomationCore.lib \
C:\cpplibs\sdkw60alib\unicows.lib \
C:\cpplibs\sdkw60alib\Url.lib \
C:\cpplibs\sdkw60alib\Urlmon.lib \
C:\cpplibs\sdkw60alib\User32.lib \
C:\cpplibs\sdkw60alib\UserEnv.lib \
C:\cpplibs\sdkw60alib\USP10.lib \
C:\cpplibs\sdkw60alib\Uuid.lib \
C:\cpplibs\sdkw60alib\Uxtheme.lib \
C:\cpplibs\sdkw60alib\VdmDbg.lib \
C:\cpplibs\sdkw60alib\vds_uuid.lib \
C:\cpplibs\sdkw60alib\Version.lib \
C:\cpplibs\sdkw60alib\Vfw32.lib \
C:\cpplibs\sdkw60alib\vssapi.lib \
C:\cpplibs\sdkw60alib\vstorinterface.lib \
C:\cpplibs\sdkw60alib\WbemUuid.lib \
C:\cpplibs\sdkw60alib\wcmguid.lib \
C:\cpplibs\sdkw60alib\WdsClientApi.lib \
C:\cpplibs\sdkw60alib\wdspxe.lib \
C:\cpplibs\sdkw60alib\WebPost.lib \
C:\cpplibs\sdkw60alib\wecapi.lib \
C:\cpplibs\sdkw60alib\WER.lib \
C:\cpplibs\sdkw60alib\wevtapi.lib \
C:\cpplibs\sdkw60alib\WiaGuid.lib \
C:\cpplibs\sdkw60alib\windowscodecs.lib \
C:\cpplibs\sdkw60alib\WindowsSideShowGuids.lib \
C:\cpplibs\sdkw60alib\WinFax.lib \
C:\cpplibs\sdkw60alib\winhttp.lib \
C:\cpplibs\sdkw60alib\WinInet.lib \
C:\cpplibs\sdkw60alib\WinMM.lib \
C:\cpplibs\sdkw60alib\winsatapi.lib \
C:\cpplibs\sdkw60alib\WinSCard.lib \
C:\cpplibs\sdkw60alib\WinSpool.lib \
C:\cpplibs\sdkw60alib\WinStrm.lib \
C:\cpplibs\sdkw60alib\WinTrust.lib \
C:\cpplibs\sdkw60alib\wlanapi.lib \
C:\cpplibs\sdkw60alib\wlanui.lib \
C:\cpplibs\sdkw60alib\Wldap32.lib \
C:\cpplibs\sdkw60alib\wmcodecdspuuid.lib \
C:\cpplibs\sdkw60alib\wmdrmsdk.lib \
C:\cpplibs\sdkw60alib\wmiutils.lib \
C:\cpplibs\sdkw60alib\wmvcore.lib \
C:\cpplibs\sdkw60alib\Wow32.lib \
C:\cpplibs\sdkw60alib\WS2_32.lib \
C:\cpplibs\sdkw60alib\wscapi.lib \
C:\cpplibs\sdkw60alib\wsdapi.lib \
C:\cpplibs\sdkw60alib\WSnmp32.lib \
C:\cpplibs\sdkw60alib\WSock32.lib \
C:\cpplibs\sdkw60alib\Wst.lib \
C:\cpplibs\sdkw60alib\WtsApi32.lib \
C:\cpplibs\sdkw60alib\wuguid.lib \
C:\cpplibs\sdkw60alib\xaSwitch.lib \
C:\cpplibs\sdkw60alib\Xinput.lib \
C:\cpplibs\sdkw60alib\xmllite.lib \
C:\cpplibs\sdkw60alib\xoleHlp.lib \
C:\cpplibs\vcatlmfclib\Atl.lib \
C:\cpplibs\vcatlmfclib\atldload.lib \
C:\cpplibs\vcatlmfclib\atls.lib \
C:\cpplibs\vcatlmfclib\atlsd.lib \
C:\cpplibs\vcatlmfclib\mfc90.lib \
C:\cpplibs\vcatlmfclib\mfc90d.lib \
C:\cpplibs\vcatlmfclib\mfc90u.lib \
C:\cpplibs\vcatlmfclib\mfc90ud.lib \
C:\cpplibs\vcatlmfclib\mfcdload.lib \
C:\cpplibs\vcatlmfclib\mfcm90.lib \
C:\cpplibs\vcatlmfclib\mfcm90d.lib \
C:\cpplibs\vcatlmfclib\mfcm90u.lib \
C:\cpplibs\vcatlmfclib\mfcm90ud.lib \
C:\cpplibs\vcatlmfclib\mfcs90.lib \
C:\cpplibs\vcatlmfclib\mfcs90d.lib \
C:\cpplibs\vcatlmfclib\mfcs90u.lib \
C:\cpplibs\vcatlmfclib\mfcs90ud.lib \
C:\cpplibs\vcatlmfclib\nafxcw.lib \
C:\cpplibs\vcatlmfclib\nafxcwd.lib \
C:\cpplibs\vcatlmfclib\uafxcw.lib \
C:\cpplibs\vcatlmfclib\uafxcwd.lib \



INCLUDES=\
C:\OpenCV2.2\include; \
C:\OpenCV2.2\include\opencv; \
C:\OpenCV2.2\include\opencv2; \
C:\cppinclude\vcinclude; \
C:\WinDDK\7600.16385.1\inc\api\crt\stl70; \
C:\WinDDK\7600.16385.1\inc\crt; \
C:\WinDDK\7600.16385.1\inc\atl71; \
C:\WinDDK\7600.16385.1\inc\ddk; \
C:\WinDDK\7600.16385.1\inc\mfc42; \
$(DDK_INC_PATH);

DRIVERTYPE=WDM

MSC_WARNING_LEVEL=/W4
C_DEFINES=$(C_DEFINES) -DUNICODE -D_UNICODE -DDEBUG_LEVEL=DEBUGLVL_BLAB -D_WIN2K_COMPAT_SLIST_USAGE

LINKER_FLAGS =$(LINKER_FLAGS) -merge:PAGECONST=PAGE

SOURCES=\
$(TARGETNAME).rc \
device.cpp \
filter.cpp \
image.cpp \
capture.cpp \
hwsim.cpp \
purecall.c \



MISCFILES=\
avshws.inf



Any help would be VERY appreciated :)
Thanks in advance.
Thomas.
t***@gmail.com
2012-04-18 07:47:56 UTC
Permalink
Mmh ok after some research it appears this is a kernel driver and I cannot do things I want with win32 API and everything, so I change my question :
1 )
This AVStream kernel driver is working fine, and now I want to connect it with a user-mode driver, is it possible ?

2)
I read some documentation about UMDF and what I understood is UMDF has it own kernel-mode driver called WUDFRd.sys, and cannot be changed. Because I need to interact with the kernel-mode AVStream driver, is this a way to use UMDF with it ?
(doc : http://www.osronline.com/article.cfm?id=449)

Thank you !

Loading...