Bagikan melalui


Fungsi DrvEnablePDEV (winddi.h)

Fungsi DrvEnablePDEV mengembalikan deskripsi karakteristik perangkat fisik ke GDI.

Sintaks

DHPDEV DrvEnablePDEV(
  [in]           DEVMODEW *pdm,
  [in]           LPWSTR   pwszLogAddress,
                 ULONG    cPat,
  [in, optional] HSURF    *phsurfPatterns,
                 ULONG    cjCaps,
  [out]          ULONG    *pdevcaps,
                 ULONG    cjDevInfo,
  [out]          DEVINFO  *pdi,
                 HDEV     hdev,
  [in]           LPWSTR   pwszDeviceName,
                 HANDLE   hDriver
);

Parameter

[in] pdm

Penunjuk ke struktur DEVMODEW yang berisi data driver.

Untuk driver yang mendukung Windows NT 4.0, DrvEnablePDEV harus mengembalikan mode default perangkat keras ketika GDI memanggilnya dengan anggota DEVMODEW berikut yang diatur ke nol: dmBitsPerPel, dmPelsWidth, dmPelsHeight, dan dmDisplayFrequency.

[in] pwszLogAddress

Untuk driver printer, menunjuk ke string alamat logis yang merupakan nama pengguna untuk lokasi tempat driver menulis. Contohnya termasuk "LPT1" atau "Printer Saya."

Driver tampilan harus mengabaikan parameter ini.

cPat

Untuk driver printer, menentukan jumlah handel permukaan dalam buffer yang diarahkan oleh phsurfPatterns. Driver tidak dapat mengakses memori di luar akhir buffer.

Driver tampilan harus mengabaikan parameter ini.

[in, optional] phsurfPatterns

Driver tampilan harus mengabaikan parameter ini.

Untuk pengandar pencetak, tunjuk ke buffer yang akan diisi driver dengan handel permukaan yang mewakili pola isian standar. Pola berikut harus ditentukan secara berurutan:

Pola Deskripsi
HS_HORIZONTAL Menetas horizontal.
HS_VERTICAL Menetas vertikal.
HS_FDIAGONAL 45 derajat menetas ke atas (kiri ke kanan).
HS_BDIAGONAL 45 derajat menetas ke bawah (kiri ke kanan).
HS_CROSS Penetasan silang horizontal dan vertikal.
HS_DIAGCROSS 45 derajat crosshatch.
 
Catatan Jumlah pola penetasan default yang memerlukan dukungan driver berkurang dalam versi Driver Development Kit (DDK) sebelumnya. Akibatnya, HS_DDI_MAX, biasanya digunakan oleh driver untuk mendeklarasikan ukuran array pola, dikurangi.
 
GDI memanggil DrvRealizeBrush dengan salah satu permukaan ini untuk mewujudkan kuas dengan pola standar.

Masing-masing permukaan ini harus berupa bitmap GDI monokrom (1 bit per piksel) untuk perangkat raster. Driver perangkat harus memilih pola yang akan terlihat paling seperti pola standar ketika ditulis pada permukaan perangkat.

GDI tidak pernah diharuskan untuk menggunakan kuas ini dalam rutinitas dukungan untuk perangkat vektor. Oleh karena itu, permukaan dapat menjadi permukaan yang didukung perangkat yang dikenali DrvRealizeBrush sebagai pola standar.

cjCaps

Menentukan ukuran buffer yang diacu oleh pdevcaps. Driver tidak boleh mengakses memori di luar akhir buffer.

[out] pdevcaps

Arahkan ke struktur GDIINFO yang akan digunakan untuk menggambarkan kemampuan perangkat. GDI menginisialisasi struktur ini memanggil DrvEnablePDEV.

cjDevInfo

Menentukan jumlah byte dalam struktur DEVINFO yang diacu oleh pdi. Driver harus memodifikasi tidak lebih dari jumlah byte ini di DEVINFO.

[out] pdi

Arahkan ke struktur DEVINFO , yang menjelaskan driver dan perangkat fisik. Pengemudi hanya boleh mengubah anggota yang dipahaminya. GDI mengisi struktur ini dengan nol sebelum panggilan ke DrvEnablePDEV.

hdev

Handel yang disediakan GDI ke perangkat. Handel ini harus digunakan sebagai input ke beberapa panggilan balik GDI, seperti EngGetDriverName.

[in] pwszDeviceName

Penunjuk ke string yang dihentikan null yang merupakan nama perangkat yang dapat dibaca pengguna.

hDriver

Menangani ke perangkat output. Untuk pengandar tampilan, ini adalah handel perangkat tampilan. Untuk pengandar pencetak, parameter ini harus digunakan sebagai handel ke pencetak dalam panggilan ke penampung.

Mengembalikan nilai

Nilai yang dikembalikan adalah handel ke PDEV yang mengidentifikasi perangkat yang diaktifkan jika fungsi berhasil. Artinya, DrvEnablePDEV mengembalikan handel ke informasi instans perangkat pribadi yang ditentukan driver setelah berhasil. Jika tidak, ia mengembalikan NULL.

Keterangan

Driver perangkat grafis mungkin mendukung beberapa perangkat fisik yang terpasang pada alamat logis yang berbeda. Driver juga harus mendukung penggunaan simultan permukaan gambar yang berbeda.

Tujuan DrvEnablePDEV adalah sebagai berikut:

  1. Untuk memberi tahu GDI tentang karakteristik fisik perangkat.
  2. Untuk membuat struktur PDEV privat yang menjelaskan instans perangkat saat ini (berdasarkan struktur DEVMODE dan nama perangkat yang diterima).
Ketika GDI kemudian memanggil fungsi DDI grafis lainnya, GDI memasok handel yang dikembalikan oleh DrvEnablePDEV sebagai input (biasanya dalam struktur SURFOBJ) sehingga driver dapat mengidentifikasi instans perangkat.

Satu perangkat logis dapat mengelola beberapa PDEV yang dapat dibedakan dengan yang berikut:

  1. Jenis perangkat keras -- Driver perangkat tunggal mungkin mendukung "LaserWhiz," "LaserWhiz II," dan "LaserWhiz Super."
  2. Alamat logis -- Satu driver perangkat dapat mendukung printer yang terpasang pada "LPT1," "COM2," "\SERVER1\PSLAZER," dan sebagainya. Driver tampilan yang dapat mendukung lebih dari satu tampilan VGA secara bersamaan mungkin membedakannya sesuai dengan nomor port; misalnya, 0x3CE atau 0x2CE.
  3. Permukaan -- Driver printer dapat memproses dua pekerjaan cetak secara bersamaan. Dua permukaan mewakili dua halaman yang akan dicetak. Demikian pula, driver perangkat tampilan mungkin mendukung dua desktop pada perangkat yang sama.
Saat menerima panggilan ke fungsi ini, driver harus mengalokasikan memori untuk mendukung PDEV. Namun, permukaan aktual tidak perlu didukung sampai GDI memanggil DrvEnableSurface.

Jika permukaan perangkat memerlukan bitmap untuk dialokasikan, alokasi ini tidak perlu dilakukan sampai diperlukan. Meskipun aplikasi sering meminta informasi perangkat jauh sebelum benar-benar menulis ke perangkat, menunggu untuk mengalokasikan sumber daya, seperti bitmap besar, dapat menghemat memori.

GDI menginisialisasi buffer yang diacu oleh phsurfPatterns sebelum memanggil fungsi ini.

DrvEnablePDEV diperlukan untuk driver grafis.

Persyaratan

   
Target Platform Desktop
Header winddi.h (termasuk Winddi.h)

Lihat juga

DEVINFO

DEVMODEW

DrvEnableSurface

DrvRealizeBrush

EngCreatePalette

GDIINFO