DrvEnablePDEV-Funktion (winddi.h)
Die DrvEnablePDEV-Funktion gibt eine Beschreibung der Merkmale des physischen Geräts an GDI zurück.
Syntax
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
Zeiger auf eine DEVMODEW-Struktur , die Treiberdaten enthält.
Für einen Treiber, der Windows NT 4.0 unterstützt, sollte DrvEnablePDEV den Standardmodus der Hardware zurückgeben, wenn GDI sie aufruft, wobei die folgenden DEVMODEW-Member auf 0 festgelegt sind: dmBitsPerPel, dmPelsWidth, dmPelsHeight und dmDisplayFrequency.
[in] pwszLogAddress
Zeigt bei Druckertreibern auf die logische Adresszeichenfolge, die den Namen des Benutzers für den Speicherort darstellt, an den der Treiber schreibt. Beispiele hierfür sind "LPT1" oder "Mein Drucker".
Anzeigetreiber sollten diesen Parameter ignorieren.
cPat
Gibt bei Druckertreibern die Anzahl der Oberflächengriffe im Puffer an, auf die von phsurfPatterns verwiesen wird. Der Treiber kann nicht über das Ende des Puffers hinaus auf Arbeitsspeicher zugreifen.
Anzeigetreiber sollten diesen Parameter ignorieren.
[in, optional] phsurfPatterns
Anzeigetreiber sollten diesen Parameter ignorieren.
Zeigt bei Druckertreibern auf einen Puffer, den der Treiber mit Oberflächengriffen füllt, die die Standardfüllmuster darstellen. Die folgenden Muster müssen in der Reihenfolge definiert werden:
Muster | BESCHREIBUNG |
---|---|
HS_HORIZONTAL | Horizontale Luke. |
HS_VERTICAL | Vertikale Luke. |
HS_FDIAGONAL | 45 Grad Aufwärtsluke (von links nach rechts). |
HS_BDIAGONAL | 45-Grad-Luke nach unten (von links nach rechts). |
HS_CROSS | Horizontale und vertikale Kreuzluke. |
HS_DIAGCROSS | 45-Grad-Kreuzhatch. |
Jede dieser Oberflächen muss eine monochrome (1 Bit pro Pixel) GDI-Bitmap für Rastergeräte sein. Der Gerätetreiber sollte Muster auswählen, die am meisten wie Standardmuster aussehen, wenn er auf die Geräteoberfläche geschrieben wird.
GDI ist nie erforderlich, um diese Pinsel in Supportroutinen für ein Vektorgerät zu verwenden. Daher können Oberflächen gerätegestützte Oberflächen sein, die DrvRealizeBrush als Standardmuster erkennt.
cjCaps
Gibt die Größe des Puffers an, auf den pdevcaps verweist. Der Treiber darf nicht über das Ende des Puffers hinaus auf arbeitsspeicher zugreifen.
[out] pdevcaps
Zeiger auf eine GDIINFO-Struktur , die zum Beschreiben der Gerätefunktionen verwendet wird. GDI initialisiert diese Struktur null und ruft DrvEnablePDEV auf.
cjDevInfo
Gibt die Anzahl der Bytes in der DEVINFO-Struktur an, auf die pdi verweist. Der Treiber sollte nicht mehr als diese Anzahl von Bytes in DEVINFO ändern.
[out] pdi
Zeiger auf die DEVINFO-Struktur , die den Treiber und das physische Gerät beschreibt. Der Treiber sollte nur die Elemente ändern, die er versteht. GDI füllt diese Struktur vor einem Aufruf von DrvEnablePDEV mit Nullen aus.
hdev
GDI-bereitgestellter Handle für das Gerät. Dieses Handle muss als Eingabe für einige GDI-Rückrufe verwendet werden, z. B. EngGetDriverName.
[in] pwszDeviceName
Zeiger auf eine NULL-beendete Zeichenfolge, die der benutzerlesbare Name des Geräts ist.
hDriver
Verarbeiten eines Ausgabegeräts. Bei einem Anzeigetreiber ist dies der Anzeigegerätehandle. Für einen Druckertreiber sollte dieser Parameter als Handle für den Drucker in Aufrufen des Spoolers verwendet werden.
Rückgabewert
Der Rückgabewert ist ein Handle für den PDEV , der das aktivierte Gerät identifiziert, wenn die Funktion erfolgreich ist. Das heißt, DrvEnablePDEV gibt ein Handle an das private, vom Treiber definierte Gerät zurück, instance Informationen nach Erfolg. Andernfalls wird NULL zurückgegeben.
Hinweise
Ein Grafikgerätetreiber unterstützt möglicherweise mehrere physische Geräte, die an verschiedene logische Adressen angeschlossen sind. Treiber müssen auch die gleichzeitige Verwendung verschiedener Zeichnungsoberflächen unterstützen.
Die Zwecke von DrvEnablePDEV sind die folgenden:
- Um GDI über die physischen Eigenschaften des Geräts zu informieren.
- So erstellen Sie eine private PDEV-Struktur, die die aktuelle Geräte-instance beschreibt (basierend auf der empfangenen DEVMODE-Struktur und dem Gerätenamen).
Ein einzelnes logisches Gerät kann mehrere PDEVs verwalten, die wie folgt unterschieden werden können:
- Hardwaretyp: Ein einzelner Gerätetreiber unterstützt möglicherweise "LaserWhiz", "LaserWhiz II" und "LaserWhiz Super".
- Logische Adresse: Ein einzelner Gerätetreiber kann Drucker unterstützen, die an "LPT1", "COM2", "\SERVER1\PSLAZER" usw. angefügt sind. Ein Anzeigetreiber, der mehrere VGA-Bildschirme gleichzeitig unterstützen kann, kann diese je nach Portnummern unterscheiden. beispielsweise 0x3CE oder 0x2CE.
- Oberflächen: Ein Druckertreiber kann zwei Druckaufträge gleichzeitig verarbeiten. Die beiden Flächen stellen zwei Seiten dar, die gedruckt werden. Ebenso kann ein Anzeigegerätetreiber zwei Desktops auf demselben Gerät unterstützen.
Wenn für eine Geräteoberfläche eine Bitmap zugewiesen werden muss, müssen diese Zuordnungen erst vorgenommen werden, wenn sie erforderlich sind. Obwohl Anwendungen häufig Geräteinformationen anfordern, bevor sie tatsächlich auf das Gerät schreiben, kann das Warten auf die Zuweisung von Ressourcen, z. B. große Bitmaps, Arbeitsspeicher sparen.
GDI initialisiert den Puffer, auf den phsurfPatterns verweist, bevor diese Funktion aufgerufen wird.
DrvEnablePDEV ist für Grafiktreiber erforderlich.
Anforderungen
Zielplattform | Desktop |
Kopfzeile | winddi.h (einschließlich Winddi.h) |