TOASTER例子閱讀(一)

2021-05-26 23:28:08 字數 2124 閱讀 4651

toaster

例子閱讀(一)

1、i/o

管理器(

根匯流排)

為匯流排生成並維護

pdo,匯流排驅動為插入的裝置生成並維護

pdo(

即下層裝置驅動為上層裝置生成並維護

pdo);

驅動程式中的

adddevice

例程接受的引數

physicaldeviceobject

就是下層裝置為其生成的

pdo,

adddevice

例程create

的只能是該裝置的

fdo。

2、匯流排驅動發現新裝置插入後,通過呼叫

ioinvalidatedevicerelations

告訴pnp

管理器busrelations改變(

注意:ioinvalidatedevicerelations

中傳入的

deviceobject

是匯流排的

pdo)

;pnp

管理器傳送

irp_mn_query_device_relations

查詢busrelations

此時匯流排裝置的

fdo為新裝置生成

pdo,並報告。

btw:toaster

匯流排驅動是在發現新裝置插入後就生成子

pdo,然後通知

pnp管理器;然後

pnp管理器進行查詢。這與

ddk中說明不一致,可能無關緊要??

3、當unplug

動作發生時,如同

plug

動作發生,匯流排驅動(其

fdo)

通過呼叫

ioinvalidatedevicerelations

告訴i/o

管理器busrelations改變(

注意:ioinvalidatedevicerelations

中傳入的

deviceobject

是匯流排的

pdo,不是此時

unplug

的裝置pdo

) 4、

當裝置發生

eject

動作時,匯流排驅動(其

fdo)

通過呼叫

iorequestdeviceeject

告訴i/o

管理器,此時

iorequestdeviceeject

的引數physicaldeviceobject

是該裝置的

pdo。

5、匯流排驅動程式需要處理兩類

pnp事件,一類發給匯流排

fdo的

pnp事件,一類是匯流排驅動為插入的裝置生成的

pdo的

pnp事件。對於發給匯流排

fdo的

pnp事件,一般都需要繼續下傳,而對於發給為插入的裝置生成的

pdo的

pnp事件則

iocompleterequest

。 6、

每乙個裝置都有乙個裝置堆疊,在該裝置堆疊裡,代表該裝置的

pdo永遠都處於最底層。匯流排的

pdo與在匯流排上的裝置

pdo沒有層次關係

。但是匯流排驅動程式負責生成其發現的裝置的

pdo,裝置提供商提供的驅動程式主要是該裝置的

fdo,

fdo進行資料傳輸

/功能作業時一般不需要與代表裝置的

pdo進行互動。

7、fido

都是相對

fdo而言,

upper fido

表明該fido

在裝置堆疊中處於

fdo的上面,

lower fido

表明該fido

在裝置堆疊中處於

fdo的下面;但所有的一切都處於

pdo的上面。

8、pnp

管理器不保證裝置堆疊中的驅動載入順序,但是它保證了呼叫

adddevice

的順序來確保

stack

的正確。

9、如果裝置處於

raw狀態,則它的裝置堆疊裡只有

pdo與匯流排驅動生成的

fido

Asymptote 學習記錄 2 例子閱讀

學習程式設計的乙個有效方式是去讀別人寫的 我學習了這裡的 雖多,但是簡單.如下 稍微做了修改 import settings pdfviewer usr bin okular outformat pdf size 400 texpreamble usepackage atbegindocument ...

Asymptote 學習記錄 2 例子閱讀

學習程式設計的乙個有效方式是去讀別人寫的 我學習了這裡的 雖多,但是簡單.如下 稍微做了修改 import settings pdfviewer usr bin okular outformat pdf size 400 texpreamble usepackage atbegindocument ...

遞迴例子(一)

1.場景 給定乙個字串,將裡面的內容進行組合成指定位數的結果。並且統計個數。比如 abc 組合2位數的個數有3 3 3 9 結果是aa,ab,ac,ba,bb,bc,ca,cb,cc 實現 public int print string s,int figure,string cs,int csum...