Share via


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.
 
Hinweis Die Anzahl der Standard-Schraffurmuster, die Treiberunterstützung erfordern, wurde in einer früheren Version des Driver Development Kit (DDK) reduziert. Daher wurde HS_DDI_MAX, die normalerweise von Treibern zum Deklarieren der Größe des Musterarrays verwendet wird, reduziert.
 
GDI ruft DrvRealizeBrush mit einer dieser Oberflächen auf, um einen Pinsel mit einem Standardmuster zu realisieren.

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:

  1. Um GDI über die physischen Eigenschaften des Geräts zu informieren.
  2. So erstellen Sie eine private PDEV-Struktur, die die aktuelle Geräte-instance beschreibt (basierend auf der empfangenen DEVMODE-Struktur und dem Gerätenamen).
Wenn GDI anschließend andere Grafik-DDI-Funktionen aufruft, stellt er den von DrvEnablePDEV zurückgegebenen Handle als Eingabe bereit (normalerweise innerhalb einer SURFOBJ-Struktur), damit der Treiber das Gerät instance identifizieren kann.

Ein einzelnes logisches Gerät kann mehrere PDEVs verwalten, die wie folgt unterschieden werden können:

  1. Hardwaretyp: Ein einzelner Gerätetreiber unterstützt möglicherweise "LaserWhiz", "LaserWhiz II" und "LaserWhiz Super".
  2. 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.
  3. 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.
Beim Empfang eines Aufrufs dieser Funktion muss der Treiber den Arbeitsspeicher zuweisen, um pdev zu unterstützen. Die tatsächliche Oberfläche muss jedoch erst unterstützt werden, wenn GDI DrvEnableSurface aufruft.

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)

Weitere Informationen

DEVINFO

DEVMODEW

DrvEnableSurface

DrvRealizeBrush

EngCreatePalette

GDIINFO