オブジェクトのハンドルをコピーする
Declare Function DuplicateHandle Lib "kernel32.dll" _
(ByVal hSourceProcessHandle As Long, ByVal hSourceHandle As Long, _
ByVal hTargetProcessHandle As Long, ByVal lpTargetHandle As Long, _
ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwOptions As Long) As Long
Declare Function DuplicateHandle Lib "kernel32.dll" _
(ByVal hSourceProcessHandle As Integer, ByVal hSourceHandle As Integer, _
ByVal hTargetProcessHandle As Integer, ByVal lpTargetHandle As Integer, _
ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, _
ByVal dwOptions As Integer) As Integer
BOOL DuplicateHandle(
HANDLE hSourceProcessHandle,
HANDLE hSourceHandle,
HANDLE hTargetProcessHandle,
LPHANDLE lpTargetHandle,
DWORD dwDesiredAccess,
BOOL bInheritHandle,
DWORD dwOptions
);
引数
hSourceProcessHandle
コピー元のハンドルを持つプロセスのIDhSourceHandle
コピー元のオブジェクトのハンドルhTargetProcessHandle
コピー先のプロセスのIDlpTargetHandle
(戻り値)コピーされたオブジェクトのハンドルdwDesiredAccess
新しいハンドルへのアクセス方法を指定する定数bInheritHandle
(オブジェクトのタイプにより依存するため、解説を省略する)
dwOptionsがDUPLICATE_SAME_ACCESSのとき、無効(通常)
ハンドルを継承するかどうかを指定するフラッグdwOptions
ハンドルを継承するとき 1
同、しないとき 0
動作方法を指定する定数の組み合わせ戻り値
正常終了のとき 0以外備考
エラーのとき 0
この関数は、複数のプロセス間でオブジェクトを共有したいようにするようなときに使う。dwOptionsの定数
この関数を使って取得したハンドルはCloseHandle()関数を使って開放しなければならない。
DUPLICATE_CLOSE_SOURCE = &H1 コピー元のハンドルをクローズする
(エラー発生しても実行される)
DUPLICATE_SAME_ACCESS = &H2 dwDesireAccessを無視する
(元のアクセス方法と同じになる)