私は部分的な反応しかありません。次の exports.def (win 8.1 x64 user32.dll) ファイルを作成するとします。
EXPORTS
...
wvsprintfW @2412
NtUserDelegateInput @2503 NONAME
...
@2412 と @2503 の間に序数がないため、リンカは、序数の順序を保持するために、エクスポート アドレス テーブルに 90 個のゼロ エントリを生成する必要があります。リンカの理由は明らかです - それは私たちの指定を満たしています. しかし、これは別の質問にリダイレクトします-この種のdefファイルを書いた理由は何ですか?
これは、このファイルをバージョンからバージョンに書き換えることに何らかの関係があると思います。win7 x64 の user32.dll で言うと、最高序数は @2502 です (NtUserDelegateInput @2503 と比較してください)。
win 10 x64 では、user32.dll は以下を表示できます。
...
NtUserUpdateWindowTrackingInfo @2585 NONAME
; interval [@2586, @2700) is zero
GetDialogBaseUnits96 @2700 NONAME
; @2701 is zero
EnablePerMonitorMenuScaling @2702 NONAME
新しい API セットのエクスポートは序数 @2700 から開始されます (スペース [@2586, @2700) は予約済みですか?)。しかし、user32.dll は一般に、既知の (安定した) 序数をエクスポートしません。そのため、DEFファイルのすべての直接設定序数の理由が不明です