1
私の目標は、新しいページを印刷することが可能であることを定義できる機能をドライバに実装することです。このコードは、現在のページを印刷するのに十分な用紙があるかどうかをプリンタに尋ね、そうでなければ「用紙切れ」ステータスを設定する必要があります(HPプリンタの場合のように)。印刷ジョブの「用紙の状態」をドライバから設定する(プログラムで)
私はDDIフック(スタートページ用)を使用しています。私はここでやったことです:
LPJOB_INFO_1 pJobInfo = NULL;
GetJob(hPrinter, pOemPDEV->JobId, 1, NULL, 0, &dwNeeded);
if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
return FALSE;
pJobInfo = (LPJOB_INFO_1) AllocSplMem(dwNeeded);
if (!pJobInfo)
return FALSE;
BOOL getJobRes = GetJob(hPrinter, pOemPDEV->JobId, 1, (LPBYTE)pJobInfo, dwNeeded, &dwNeeded);
if (!getJobRes)
return FALSE;
wsprintf(string, L"pJobInfo->Status %d", pJobInfo->Status);
VERBOSE(string);
pJobInfo->Status |= JOB_STATUS_PAPEROUT;
BOOL a = SetJob(hPrinter, pOemPDEV->JobId, 1, (LPBYTE)pJobInfo, JOB_CONTROL_PAUSE);
結果では、私がしている:しかしうち、 "一時停止" に変更FALSEとエラーを返しSetJob
質問JOB_STATUS_PAPEROUTを設定する方法です。前もって感謝します。