軟發布了Windows 10更新五月版18362.145的慢速預覽和發布預覽更新,補丁型號為KB4497935,以測試Windows 10 1903版本問題的修復,包括USB驅動器問題,該問題阻止任何帶有USB驅動器或SD卡的PC安裝最新更新。現在Windows 10更新五月版18362.145面向全體用戶推送。
下面是更新內容:
在用C語言編寫 WINDOWS 的 SDK 程序的時候,經常會用到句柄。
當程序創建資源的時候,如果想在其它地方引用這個資源,一般的做法是使用這個資源所對應的句柄。
那么,句柄到底是什么呢?
很容易想到:在內存中創建資源之后,其首地址就固定了,所以,可以用其首地址當做句柄。
同樣道理,在UEFI的編程中,也會有句柄這個概念。
還是用這匯編程序來講解,如下:
mov [rsp+10h], rdx ;SystemTable
mov [rsp+8], rcx ;句柄ImageHandle
sub rsp, 28h
mov rax, [rsp+28h+10h]
mov rax, [rax+40h] ;ConOut
lea rdx, [szOK]
mov rcx, [rsp+28h+10h]
mov rcx, [rcx+40h] ;ConOut
call QWORD[rax+8] ;OutputString
xor eax, eax
add rsp, 28h
retn
程序中第2行,rcx是句柄。
這句柄是主板的固件程序加載這 efi 文件時,傳來的。
如果仔細看這程序,會發現:這句柄在本程序中,沒有使用。
因為:OutputString 函數并不需要句柄,但是,有的UEFI函數是需要句柄的。
所以,這句柄就是給調用這些函數準備的。
這個匯編程序從不同角度,講解了好幾遍。相信同學對這個匯編程序有一定的了解。
如果關于64位匯編的語法不清楚,請參考相關的大學計算機相關專業的教材,應該多少會有講解的。
作者:UD64
2019年03月27日星期三下午