{ ULONG Rc = 0, Error=0, Size; PRINTINFO *PrintInfo; PrintInfo = (PRINTINFO *) malloc(sizeof(PRINTINFO)); memset(PrintInfo, 0, sizeof(PRINTINFO)); PrintInfo->nBufSize = 0; Rc = pcsGetPrinterSettings('A', PrintInfo, &Error); if (Rc != PCS_SUCCESSFUL) printf("Failure. Return code = %d\n", Rc); else { Size = PrintInfo->nSizeNeeded; PrintInfo->nBufSize = Size; PrintInfo->lpPDTFile = (char *)malloc(sizeof(char) * Size); PrintInfo->lpPrtToDskAppFile = (char *)malloc(sizeof(char) * Size); PrintInfo->lpPrtToDskSepFile = (char *)malloc(sizeof(char) * Size); PrintInfo->lpPrinterName = (char *)malloc(sizeof(char) * Size); Rc = pcsGetPrinterSettings('A', PrintInfo, &Error); if (Rc != PCS_SUCCESSFUL) printf("Failure. Return code = %d, Extended Error = 0x%08x\n", Rc, Error); else { if (PrintInfo->bPromptDialog) printf("PromptDialog\n"); else printf("No PromptDialog\n"); if (PrintInfo->bPDTMode) printf("PDT Mode\n"); else printf("Not PDT Mode\n"); switch(PrintInfo->nPrtMode) { case PrtToDskAppend: printf("Print to Disk-Append Mode\n"); break; case PrtToDskSeparate: printf("Print to Disk-Separate Mode\n"); break; case SpecificPrinter: printf("Specific Printer Mode\n"); break; case WinDefaultPrinter: printf("Windows Default Printer Mode\n"); break; } if (PrintInfo->lpPDTFile[0] == '\0') printf("No PDT File configured\n"); else printf("PDT File = %s\n", PrintInfo->lpPDTFile); if (PrintInfo->lpPrtToDskAppFile[0] == '\0') printf("No Disk Append File configured\n"); else printf("DiskAppend File=%s\n", PrintInfo->lpPrtToDskAppFile); if (PrintInfo->lpPrtToDskSepFile[0] == '\0') printf("No Disk Separate File configured\n"); else printf("DiskSeparate File=%s\n", PrintInfo->lpPrtToDskSepFile); if ((PrintInfo->nPrtMode == SpecificPrinter) || (PrintInfo->nPrtMode == WinDefaultPrinter)) printf("Printer = %s\n", PrintInfo->lpPrinterName); } free(PrintInfo->lpPDTFile); free(PrintInfo->lpPrtToDskAppFile); free(PrintInfo->lpPrtToDskSepFile); free(PrintInfo->lpPrinterName); } free(PrintInfo); }