用wine裝驅動程式.. - Linux

Hedwig avatar
By Hedwig
at 2011-05-11T17:51

Table of Contents

※ 引述《abo90141436 (懶得說)》之銘言:
: 由於我有個裝置沒有linux的驅動程式(我的系統是xubuntu10.10),
: 所以我裝wine去安裝它xp的驅動程式,結果成功的啟動了,
: 有人說驅動程式是最基層的,所以一定要是linux版本的才ok
: 請問那我這樣的情況,會不會有甚麼問題(我安裝的是晶片卡讀卡機).

圖文: http://bit.ly/ksfLTc

[2]Wine 對於硬體驅動程式的支援

= 硬體支援概況 =

在 Wine 中接取硬體,主要有兩種模式。

一、直接介接 Linux 的 API,像是 X11, SANE, V4L, ALSA 等等。目前少數實做的硬體介
接模擬功能有圖形 (winex11.drv, winequartz.drv) 、音效以及輸入裝置 (keyboard,
mouse, joystick, twain/sane) 等模擬層。另外 Wine 提供了 IoCode/Operation Code
轉譯功能,容許 Windows 程式直接存取硬體,這包含 [3]Serial Communications[2] 以
及 CDROM/ATAPI, TAPE 支援。

二、另外一種則是類似 NdisWrapper,直接載入並使用 Windows 驅動程式。目前而言負責
載入 Windows 驅動程式的 [4]NTDLL 中均未實做 [5]NtLoadDriver, [6]ZwLoadDriver 等
函式細節,只宣告為 [7]Stub Function. 因此即便驅動程式安裝程式可以順利安裝、註冊
相關驅動程式 DLLs, Wine 也不會載入這些驅動程式。

目前 Wine (1.3.19) 並沒有模擬[8]載入底層驅動程式。

= Smart Card Support =

[9]Smart Card 支援問題是最常被詢問的問題之一,依據 [10]MSDN 的 [11]Smart Card
Subsystem 設計,可以分為以下數層

* Smart Card Service Providers
* Resource Manager
* Specific Smart Card Reader Driver
* Smart Card Reader Helper Library

驅動讀卡機是最基本的功能。參考 [12]Microsoft Class Drivers for USB CCID Smart
Cards 的 [13]結構說明,驅動程式有兩類,一是 [14]CCID 相容硬體或 USB 廠商所提供
的驅動程式。而其上應用程式可用 Smart card resource manager (winscard.dll) 來下
達 [15]PC/SC 指令。

如上所述,Wine 並不會載入驅動程式。winscard.dll 目前也只是 stubbed functions.

不過 [16]IDRIX 的 [17]Mounir IDRASSI 開發了介接 [18]PCSC-Lite/pcscd,使 Smart
card resource manager 可以透過 PCSC-Lite 提供 PC/SC Services.

= USB Support =

理論上,user-mode 的 USB 驅動程式也可以透過轉譯直接存取 USB 設備,只要該軟體未
使用 ntoskrnl.exe, hal.dll, usbd.sys 以外的功能。目前官方 Wine source tree 只在
usbd.sys 中實做查詢 USB Devices 功能。

[19]Etersoft 的 Alexander Morozov 則已利用 [20]libusb 實做 [21]USB 功能,提供一
些需要使用 USB hardware token 進行硬體保護的軟體使用。這些功能未整合到 Wine 主
程式。相關程式碼位於 [22]ftp://ftp.etersoft.ru/pub/people/amorozov/usb,使用時
需要[23]手動在 registry 中加入 vendor id/product id 設定。

References:

[1] http://people.debian.org.tw/~chihchun
[2] http://people.debian.org.tw/~chihchun/2011/05/11/usb-and-smartcard-support-in-wine/
[3] http://msdn.microsoft.com/en-us/library/ms810467.aspx
[4] http://en.wikipedia.org/wiki/Microsoft_Windows_library_files#Ntdll.dll
[5] http://msdn.microsoft.com/en-us/library/ff556539%28v=vs.85%29.aspx
[6] http://msdn.microsoft.com/en-us/library/ff566470%28v=vs.85%29.aspx
[7] http://sp1.wikidot.com/emulatorstubfunction
[8] http://wiki.jswindle.com/index.php/Drivers
[9] http://msdn.microsoft.com/en-us/windows/hardware/gg487492
[10] http://msdn.microsoft.com/en-us/library/aa925241.aspx
[11] http://msdn.microsoft.com/en-us/library/ms936949.aspx
[12] http://msdn.microsoft.com/en-us/windows/hardware/gg487509
[13] http://msdn.microsoft.com/en-us/windows/hardware/gg487509#EUB
[14] http://en.wikipedia.org/wiki/Integrated_Circuit_Card_Interface_Device
[15] http://en.wikipedia.org/wiki/PC/SC
[16] http://www.idrix.fr/
[17] http://blog.idrassi.com/
[18] http://pcsclite.alioth.debian.org/
[19] http://www.etersoft.ru/
[20] http://www.libusb.org/
[21] http://wiki.winehq.org/USB
[22] ftp://ftp.etersoft.ru/pub/people/amorozov/usb
[23] http://wiki.winehq.org/USB

--
http://people.debian.org.tw/~chihchun/

--
Tags: Linux

All Comments

Ubuntu 11.04工具列不會顯示

Hazel avatar
By Hazel
at 2011-05-11T09:45
前言:上一次不能線上更新。 折騰了一下,原來只要改server來源就能順利線上更新了 更新完成後,本來最期待看到unity的效果,還有工具列顯示在頂端的global menu 可是進入預設的ubuntu桌面以後,沒有工具列! 上下左右都沒有 用ubuntu classic倒是可以。 不知道是否跟我之前修 ...

用bash寫"複製"這個動作

Victoria avatar
By Victoria
at 2011-05-11T04:03
我用bash寫了個轉碼程式 但我希望能在轉碼後自動複製 而非轉碼後顯示在終端機上再手動複製 bash是否能做到這樣呢? - ...

Ubuntu有出全雲端的版本嗎?

Yedda avatar
By Yedda
at 2011-05-11T00:52
就是在NB或桌機上,只透過瀏覽器or簡單的應用程式 連上網去執行雲端Ubuntu 請問現在有這種東西嗎? 謝謝 補充: 即主機安裝Win系統,然後透過瀏覽器or應用程式,來執行雲端Ubuntu - ...

筆電觸控板不能用

Megan avatar
By Megan
at 2011-05-11T00:15
大家好 不知道大家有沒有遇過筆電下方的觸控板不行用的情況呢? 現在是用TOSHIBA M300 安裝Fedora-11 電腦的觸控板(就是在鍵盤下面那一小塊)沒辦法用 不知道有沒有人有相同的困擾?? - ...

Server 疑似被 Hack

Madame avatar
By Madame
at 2011-05-10T15:25
早上客戶回報,發現多個 case 都被 Google 判定為有危險的網站 檢查原始碼發現頁面下方被值入了這個 andlt;img heigth=and#34;1and#34; width=and#34;1and#34; border=and#34;0and#34; src=and#34;http://img ...