הפתרון הוא להשתמש בגירסת הunicode של הפונקציה.
[DllImport("winspool.Drv", EntryPoint = "OpenPrinterW",
SetLastError = true, CharSet = CharSet.Ansi,
ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool
OpenPrinter([MarshalAs(UnmanagedType.LPWStr)] string szPrinter,
out IntPtr hPrinter, IntPtr pDefault); //ref PRINTER_DEFAULTS pd);
(שינו לב לשינוי בין LPWStr ל LPStr)
אבל כל המחשב בנוי על פונקציות שנקראות שוב ושוב הלוך חזור חזור הלוך, גם רקורסיה וכל זה.