2014-02-25 60 views
0

我對Windows中的一些MASM語法的代碼是這樣的:如何在MASM中聲明函數指針?

stru_40DBA0 dd 0FFFFFFFEh  ; GSCookieOffset ; SEH scope table for function 402B22 
dd 0   ; GSCookieXOROffset 
dd 0FFFFFFC0h  ; EHCookieOffset 
dd 0   ; EHCookieXOROffset 
dd 0FFFFFFFEh  ; ScopeRecord.EnclosingLevel 
dd 0   ; ScopeRecord.FilterFunc 
offset $LN19  ; ScopeRecord.HandlerFunc 
..... 
Foo proc near 
.... 
$LN19: 
.... 

MASM將產生在偏移$ LN19行錯誤,我試圖修改它以這樣的方式

PTR PROTO $LN29 

任何人都可以給我一些關於如何申報的幫助嗎?謝謝!

+0

我認爲'抵消Foo'將起作用。 –

+0

你需要定義一些地方來存儲這個偏移量,所以它就像'dd offset $ LN19'(或'dq offset $ LN19')。 –

+0

@JerryCoffin是的,我也試過dd偏移$ LN19,但它會產生錯誤,如「未定義的符號$ LN19」 – computereasy

回答

1

實際上有你需要做兩件事情:

  1. 確保標籤是公開的,你正在使用它的偏移,因此可以看出。
  2. 確保標籤已經在使用其偏移量的位置聲明。

做後者的簡單方法是在標籤本身已被定義後定義你的結構。

爲了使標籤公衆,你可以把它聲明明確地公開,如:

public $LN19 

...或者你已經定義的標籤,你可以使用兩個冒號而不是一個:

$LN19::