Win32 API를 사용하여 프린터로 원시 데이터 보내기

이 문서에서는 Win32 API를 사용하여 원시 데이터를 프린터로 보내는 방법을 소개합니다.

원래 제품 버전: Windows API
원본 KB 번호: 138594

요약

드라이버를 우회하여 프린터 관련 데이터를 프린터로 직접 보내야 하는 경우도 있습니다. Win32 API는 로컬 및 네트워크 프린터에서 작동하는 작업을 제공합니다. 이 메서드는 이전 버전의 Windows API에서 사용되는 이스케이프 및 SpoolFile() 메서드를 대체하는 PASSTHROUGH 데 사용할 수 있습니다.

코드 샘플

다음 코드를 사용하여 원시 데이터를 Windows NT 또는 Windows 95의 프린터로 직접 보낼 수 있습니다.

// RawDataToPrinter - sends binary data directly to a printer
// Params:
//   szPrinterName - NULL terminated string specifying printer name
//   lpData        - Pointer to raw data bytes
//   dwCount       - Length of lpData in bytes
// Returns: TRUE for success, FALSE for failure.
BOOL RawDataToPrinter(LPSTR szPrinterName, LPBYTE lpData, DWORD dwCount)
{
    HANDLE     hPrinter;
    DOC_INFO_1 DocInfo;
    DWORD      dwJob;
    DWORD      dwBytesWritten;

    // Need a handle to the printer.
    if(!OpenPrinter( szPrinterName, &hPrinter, NULL))
    return FALSE;

    // Fill in the structure with info about this "document."
    DocInfo.pDocName = "My Document";
    DocInfo.pOutputFile = NULL;
    DocInfo.pDatatype = "RAW";
    // Inform the spooler the document is beginning.
    if((dwJob = StartDocPrinter(hPrinter, 1, (LPSTR)&DocInfo)) == 0)
    {
      ClosePrinter(hPrinter);
      return FALSE;
    }
    // Start a page.
    if(!StartPagePrinter(hPrinter))
    {
      EndDocPrinter(hPrinter);
      ClosePrinter(hPrinter);
      return FALSE;
    }
    // Send the data to the printer.
    if(!WritePrinter(hPrinter, lpData, dwCount, &dwBytesWritten))
    {
      EndPagePrinter(hPrinter);
      EndDocPrinter(hPrinter);
      ClosePrinter(hPrinter);
      return FALSE;
    }
    // End the page.
    if(!EndPagePrinter(hPrinter))
    {
      EndDocPrinter(hPrinter);
      ClosePrinter(hPrinter);
      return FALSE;
    }
    // Inform the spooler that the document is ending.
    if(!EndDocPrinter(hPrinter))
    {
      ClosePrinter(hPrinter);
      return FALSE;
    }
    // Tidy up the printer handle.
    ClosePrinter(hPrinter);
    // Check to see if correct number of bytes were written.
    if(dwBytesWritten != dwCount)
      return FALSE;
      return TRUE;
}

다음 파일은 Microsoft 다운로드 센터에서 다운로드할 수 있습니다.

RAWPRN.EXE

Microsoft 지원 파일을 다운로드하는 방법에 대한 자세한 내용은 온라인 서비스 Microsoft 지원 파일을 가져오는 방법을 참조하세요.

Microsoft는 이 파일에서 바이러스를 검사했습니다. Microsoft는 파일이 게시된 날짜에 사용할 수 있는 최신 바이러스 감지 소프트웨어를 사용했습니다. 파일은 파일에 대한 무단 변경을 방지하는 데 도움이 되는 보안 강화 서버에 저장됩니다.