首頁>技術>

內容概要

關於Package開啟操作,和 呼叫 Instance methods的一些概念。

開啟Package

在使用Device前必須開啟Device相應的Package。所謂“開啟”就是建立Package的Instance,Instance就是一塊記憶體空間,裡面儲存著Package私有資料的一個副本。每個Instance都有一個唯一數值與其對應,該數值被稱為ihandle。

如果想開啟Package,就必須連它的父節點的Package也開啟,所以開啟一個Package,需要從root節點開始依次開啟。而關閉Package時順序相反,從要開啟Package開始關閉,直到root節點的Package關閉。一串被開啟的Instance被稱為Instance chains

一個Package可以有多個Instance,每個Instance可以獨立使用。

每個時刻都有一個Instance被座位current Instance。current Instance的private data是可以被訪問的,其他instance則不行。

呼叫Instance method

在開啟Package後就可以呼叫Instance method了。

如果在current instance的一個method中呼叫另一個current instance的method,則直接呼叫即可,不需要其他操作。

如果是current instance呼叫其他instance的method。必須在呼叫期間將被呼叫的instance設定為current instance。通常的做法是,將current instance的ihandle入棧,然後將被呼叫的instance設定為current instance,呼叫method後再將棧內的ihandle出棧,恢復current instance。

獲得被呼叫的instance的ihandle,有兩種方法:

在開啟package時記錄一下如果被呼叫的instance是父節點可以直接獲取,因為instance自身帶有父節點的instance的ihandle

如果是static method即使package沒有被開啟也可以被package內的其他method直接呼叫。也可以將它的execution token傳給executecatch、或者defer word中,以便在之後使用。有很多辦法可以確定static method的execution token,如find-method 或者 ['].'(我目前也不知道這是啥意思)

結束(當前閱讀到第19頁)

#BIOS# #作業系統#

17
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Serverless 落地之痛怎麼解?