# SHITmic Windows Virtual Audio Driver

This folder is the package handoff point for the Shitmic-owned Windows virtual
audio device described in the developer handoff.

The application now prefers this endpoint pair when it is installed:

- Playback/render endpoint used by SHITmic: `Shitmic Internal Output`
- Recording/capture endpoint used by games: `Shitmic Microphone`

VB-Cable remains a fallback route while the signed driver is not bundled.

## Driver Contract

Build the production driver as a WDM/PortCls/WaveRT virtual audio driver based
on Microsoft's SysVAD sample. Keep DSP in the SHITmic app. The kernel driver
should only expose endpoints, bridge PCM frames, report timing/position, return
silence on underrun, and expose narrow diagnostics/control.

Expected endpoint behavior:

- SHITmic renders processed PCM to `Shitmic Internal Output`.
- The driver forwards fresh PCM to `Shitmic Microphone`.
- If the app is not feeding audio, capture clients receive silence.
- The driver must never return stale buffered speech after app crash/stop.
- Multiple capture clients should work through the normal Windows shared-mode
  capture path.

## Package Layout

Place signed driver packages here:

```text
drivers/windows/package/
  x64/
    shitmicvad.inf
    shitmicvad.cat
    shitmicvad.sys
  arm64/
    shitmicvad.inf
    shitmicvad.cat
    shitmicvad.sys
```

The INF should use the endpoint names above. The exact binary names may change,
but `shitmicvad.inf` is the installer entrypoint expected by the repo scripts.

## Install / Repair / Status

From an elevated PowerShell prompt:

```powershell
powershell -ExecutionPolicy Bypass -File scripts\install-shitmic-driver.ps1 -Action Install
powershell -ExecutionPolicy Bypass -File scripts\install-shitmic-driver.ps1 -Action Repair
powershell -ExecutionPolicy Bypass -File scripts\install-shitmic-driver.ps1 -Action Status
```

The installer uses `pnputil` so it can run from the downloadable ZIP without a
separate MSI bootstrapper. Production distribution still needs a Microsoft
signed driver package and a proper elevated app installer.

## Signing Gates

Do not distribute test-signed drivers. Use test-signing only on dev machines.
For release, submit through Partner Center using attestation for staging or
HLK/WHQL signing for broad production compatibility.
