====================================================================
 PROBE HFSQL SHUTDOWN CRASH — OUTIL DE DIAGNOSTIC (SRV-OMIKA)
====================================================================

But
---
Reproduire, de façon TOTALEMENT indépendante d'Omika.Api, le crash
natif du module wd300vm64.dll observé à chaque Stop-Service.

Cet outil n'utilise NI ASP.NET, NI Generic Host, NI conteneur DI,
NI repository Omika, NI RSA/QR/licence. Il ne charge que le provider
OLE DB PC SOFT (PCSOFT.HFSQL) via System.Data.OleDb.

Prérequis
---------
- Windows PowerShell 5.1 (intégré à Windows) : lancer avec powershell.exe.
- Le provider OLE DB PC SOFT (PCSOFT.HFSQL) doit être installé sur la machine.
- Compte HFSQL technique autorisé à ouvrir une session sur le serveur ciblé.

Les 3 modes
-----------
Mode A — NoConnection
    Le process ne crée AUCUNE connexion OLE DB puis se termine.
    => Contrôle : vérifie que le process ne crashe pas SANS HFSQL.
       Si ce mode crashe, le problème n'est PAS lié à HFSQL.

Mode B — OpenClose
    Crée une OleDbConnection (Provider=PCSOFT.HFSQL), Open(),
    exécute un SELECT lecture seule, ferme le reader, dispose la
    commande, Close(), Dispose(), affiche PROBE_TERMINE, quitte.
    => Reproduit le cycle minimal open/close sans Omika.Api.
       Si ce mode crashe à la sortie, le crash est dans le provider
       lui-même (indépendant d'Omika.Api).

Mode C — OpenCloseReleasePool
    Identique au Mode B, puis appelle
    OleDbConnection.ReleaseObjectPool() avant la sortie.
    => Teste si la libération explicite du pool évite le crash.

Paramètres
----------
-Mode      : NoConnection | OpenClose | OpenCloseReleasePool (obligatoire)
-Server    : hôte du serveur HFSQL Client/Serveur          (obligatoire)
-Port      : port HFSQL (défaut 4900)
-Database  : nom de la base/analyse                        (obligatoire)
-User      : compte technique HFSQL                        (obligatoire)
-Query     : requête SELECT lecture seule (défaut "SELECT 1")

Le mot de passe N'EST PAS un paramètre : il est demandé de façon
interactive (Read-Host -AsSecureString) et n'est jamais affiché.

Commandes Windows PowerShell 5.1
--------------------------------
Ouvrir une console PowerShell 5.1 (powershell.exe), puis :

  # MODE A (contrôle, sans HFSQL)
  powershell.exe -NoProfile -ExecutionPolicy Bypass -File `
    "C:\Chemin\Vers\probe_hfsql_shutdown_crash.ps1" `
    -Mode NoConnection -Server SERVEUR -Database BASE -User COMPTE

  # MODE B (open/close)
  powershell.exe -NoProfile -ExecutionPolicy Bypass -File `
    "C:\Chemin\Vers\probe_hfsql_shutdown_crash.ps1" `
    -Mode OpenClose -Server SERVEUR -Port 4900 -Database BASE -User COMPTE

  # MODE C (open/close + ReleaseObjectPool)
  powershell.exe -NoProfile -ExecutionPolicy Bypass -File `
    "C:\Chemin\Vers\probe_hfsql_shutdown_crash.ps1" `
    -Mode OpenCloseReleasePool -Server SERVEUR -Port 4900 -Database BASE -User COMPTE

Le mot de passe est saisi à l'invite (non affiché).

Contrôle des événements Windows après chaque exécution
------------------------------------------------------
Après CHAQUE exécution, vérifier l'Observateur d'événements :

  1. eventvwr.msc  >  Journaux Windows  >  Application
  2. Filtrer / rechercher les événements récents :
       - "Application Error"  (Event ID 1000)
       - ".NET Runtime"       (Event ID 1026)
       - "Windows Error Reporting" (Event ID 1001)
  3. Dans les détails, chercher :
       - module fautif : wd300vm64.dll
       - code exception : 0xc0000005  ou  0xc0000409

Ou via commande (après chaque run, noter l'heure) :

  Get-WinEvent -LogName Application -MaxEvents 30 |
    Where-Object { $_.Id -in 1000,1026,1001 } |
    Format-List TimeCreated, Id, ProviderName, Message

Interprétation
--------------
- MODE A crashe        -> le crash n'est PAS spécifique à HFSQL.
- MODE B crashe        -> le provider PCSOFT.HFSQL crashe à la sortie,
                          indépendamment d'Omika.Api.
- MODE C ne crashe pas -> ReleaseObjectPool() (ou l'ordre de libération)
                          change le comportement à la sortie.
- Aucun mode ne crashe -> le crash PROD implique l'environnement Omika.Api
                          (DI, hosted services, lifetime) et non le provider seul.

Ne PAS utiliser : OLE DB Services=-1 ni -2 (cassent PCSOFT.HFSQL).
Ne PAS tenter de migration ODBC ici.
====================================================================
