2

RegSetKeySecurity()Windows APIの機能を使おうとしていますが、pSecurityDescriptorパラメータがポインタです。PVOIDInno Setupでの「ポインタ」()データ型の同等性とは何ですか?

4

2 に答える 2

2

少し遅れました。xDこの問題を解決するには、キーワード「var」を使用して、関数パラメーターを変数としてアナウンスする必要があります。これは、Pascalの関数パラメーター内の変数へのポインターを宣言する標準的な方法です。

ああ、私は論理的な終わりに考えを持ってきます。まず、32ビットのすべての場合のInnoSetupの実行プロセス、つまり、新しいタイプ("PVOID"または"Pointer")を対応するディメンション(タイプPVOID = Cardinal、Pointer = Integerなど)の宣言を妨げることはありません。そしてそれ以上に、それは知覚の便宜のためだけです。次に、外部API関数の発表時に、インデックスを変数に置き換える( "var"のキーワードを使用)のは十分すぎるほどです。3つ目は、Pascalスクリプトでのメモリの特定の編成のため、一部のAPI関数はそのような変数に対応できず、メモリを使用する関数の外部関数(GetMemory、FreeMemory、FillMemory + GetMemory = AllocMemory)Kernel32.dllから。GetMemoryは、メモリサイトのインデックスを返すだけです。4つ目は、インデックスを使用してブロックからデータを抽出するために、同じKernel32.dllからCopyMemory、StringCchCopyA、lstrcpynAなどのコピー機能を使用することを妨げる人は誰もいません。ここで、出力パラメーターは必要なディメンションの変数(var)になります。入口、必要な値にオフセットされたブロックのインデックス。

于 2016-05-25T21:44:15.250 に答える
0

InnoSetupで使用されるPascalScriptingは、ポインターをまったくサポートしていないようです。たぶん、cardinal(32ビットの場合)を渡すか、外部DLLにコードを記述して、InnoSetupインストールプログラムからこれを呼び出すことができます。

于 2010-09-20T18:29:48.257 に答える