Os agradecimentos para a resposta, esta são escritos em VB não C#, entretanto, eu estava tentando escrever algo e ainda estava tendo problemas:
[DllImport (“winspool.drv”, CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = retificam)]
int extern de estática AddPrinterDriver (pName da corda, nível do uint, [dentro] pDriverInfo da referência DRIVER_INFO_3);
[StructLayout (LayoutKind.Sequential, CharSet = CharSet.Auto)]
struct público DRIVER_INFO_3
{
cVersion público de IntPtr;
pName público da corda;
pEnvironment público da corda;
pDriverPath público da corda;
corda pública pDataFile;
corda pública pConfigFile;
corda pública pHelpFile;
pDependentFiles públicos da corda;
pMonitorName público da corda;
pDefaultDataType público da corda;
}
AddPrinter vago de estática público ()
{
dInfo DRIVER_INFO_3 = DRIVER_INFO_3 novo
{
pConfigFile = “UNIDRVUI.DLL”,
pDataFile = “HPW100T.GPD”,
pHelpFile = “UNIDRV.HLP”,
pName = do “Inkjet 1000 do negócio cavalo-força”,
};
se (== 0 de AddPrinterDriver (nome, 3, dInfo da referência))
lance Win32Exception novo (Marshal.GetLastWin32Error ());
}
Esta do código exceção negada acesso do lance sempre.