こんにちは、お世話になります。DLLファイルの削除について質問です。
プログラム終了時にロードしたDLLファイルを削除したいのですが、
場合により削除できたりできなかったりします。

実際にはもう少し複雑ですが、大まかな処理の手順を示します。
1:  inst=LoadLibrary("tmp.dll")
2:  hook=SetWindowsHookEx(...)
3:  ...あれやこれやの処理...
4:  ret1=UnhookWindowsHookEx(hook)
5:  ret2=FreeLibrary(inst)
6:  ret3=DeleteFile("tmp.dll")

 処理部[3:]は、所望の通り動作していて、inst,hook共に正常値のよ
うです。アプリケーション終了時に[4:]以降の処理を行います。ret1,
ret2は成功値を返すのですが、ret3は失敗し、GetLastErrorの値は5で
ERROR_ACCESS_DENIED「アクセス拒否」を返してきます。アプリ
ケーション終了後はプロンプトからのDELコマンドに成功します。

 処理部[3:]をスキップすると、ret3は成功値を返しファイルもただ
しく削除されています。

FreeLibraryだけでは、DLLを開放してくれないのかと思っていますが、
少し手つまりになっています。当方、日曜プログラマレベルの知識で
す。質問などに不備等ございましたらご指摘ください。

(環境)Win10-64bit,Vs2019Comm,VC++