Udostępnij przez


Dynamicznie generowane polecenia drukarki

Ważny

Nowoczesna platforma drukowania jest preferowanym sposobem komunikacji z drukarkami w systemie Windows. Zalecamy używanie sterownika klasy skrzynki odbiorczej IPP firmy Microsoft wraz z aplikacjami do obsługi drukowania (PSA), aby dostosować środowisko drukowania w systemie Windows 10 i 11 na potrzeby opracowywania urządzeń drukarki.

Aby uzyskać więcej informacji, zobacz Print Support App v1 and v2 design guide (Przewodnik projektowania aplikacji do obsługi wydruku w wersji 1 i 2).

Za każdym razem, gdy określisz polecenie drukarki w pliku GPD dla minidrivera Unidrv, można użyć jednej z następujących dwóch metod:

  • Umieść ciąg polecenia w pliku GPD.

    W przypadku umieszczenia ciągu polecenia w pliku GPD Unidrv wysyła polecenie do buforu wydruku w odpowiednim czasie. Te ciągi poleceń mogą zawierać zmienne standardowe, które ocenia Unidrv przed wysłaniem polecenia.

  • Podaj funkcję wywołania zwrotnego.

    Jeśli podasz funkcję wywołania zwrotnego, Unidrv wywołuje tę funkcję, gdy nadszedł czas na wysłanie polecenia, a funkcja jest odpowiedzialna za wysłanie polecenia do bufora wydruku. Dzięki temu można dołączyć kod, który dynamicznie generuje ciąg polecenia, a następnie wysyła go do drukarki.

Aby umieścić ciąg polecenia w pliku GPD, należy uwzględnić atrybut *Cmd we wpisie polecenia.

Aby zapewnić kod, który dynamicznie generuje ciąg polecenia, należy wykonać następujące czynności:

  • Podaj wtyczkę renderowania, która implementuje metodę IPrintOemUni::CommandCallback.

  • Uwzględnij atrybut polecenia *CallbackID i, opcjonalnie, atrybut *Params, we wpisie polecenia w pliku GPD.

Gdy unidrv jest gotowy do wydania polecenia drukarki, sprawdza bazę danych minidriver, aby określić, czy polecenie zostało określone za pomocą atrybutu *Cmd lub z atrybutem *CallbackID. W poprzednim przypadku Unidrv wysyła ciąg polecenia do buforu wydruku. W tym drugim przypadku Unidrv wywołuje IPrintOemUni::CommandCallback metodę, przekazując wartości *CallbackID i *Params jako argumenty wejściowe.