Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit der UNIDRV_PRIVATE_DEVMODE-Struktur können Unidrv-Plug-Ins die Größe des privaten Teils der DEVMODEW--Struktur von Unidrv bestimmen.
Syntax
typedef struct _UNIDRV_PRIVATE_DEVMODE {
WORD wReserved[4];
WORD wSize;
} UNIDRV_PRIVATE_DEVMODE, *PUNIDRV_PRIVATE_DEVMODE;
Angehörige
wReserved[4]
Reserviert für die Systemverwendung.
wSize
Die Größe des privaten Teils der DEVMODEW- Struktur von Unidrv in Bytes.
Bemerkungen
Informationen zu den öffentlichen und privaten Abschnitten der DEVMODEW--Struktur finden Sie unter DEVMODEW-.
Printoem.h definiert ein Makro zum Bestimmen der Größe des privaten Teils der DEVMODEW Struktur von Unidrv.
#define GET_UNIDRV_PRIVATE_DEVMODE_SIZE(pdm)\
( ( (pdm)->dmDriverExtra > (FIELD_OFFSET(UNIDRV_PRIVATE_DEVMODE, wSize) + sizeof(WORD)) ) ? \
((PUNIDRV_PRIVATE_DEVMODE)((PBYTE)(pdm) + (pdm)-> dmSize)) -> wSize : 0 )
Das pdm-Argument im GET_UNIDRV_PRIVATE_DEVMODE_SIZE-Makro ist ein Zeiger auf eine DEVMODEW--Struktur. Das Makro bestimmt, ob der Wert des dmDriverExtra- Mitglieds der DEVMODEW--Struktur größer als der Byteoffset des wSize Member der UNIDRV_PRIVATE_DEVMODE Struktur ist. Wenn ja, gibt das Makro den Wert des wSize Member in der UNIDRV_PRIVATE_DEVMODE Struktur zurück. Ist dies nicht der Fehler, gibt das Makro null zurück.
Gehen Sie wie folgt vor, um die Adresse des privaten Teils der DEVMODEW- struktur Ihres Plug-Ins sicher zu ermitteln:
Rufen Sie das GET_UNIDRV_PRIVATE_DEVMODE_SIZE Makro auf, und übergeben Sie die Adresse der DEVMODEW- Struktur im Aufruf.
Stellen Sie sicher, dass (pdm)->dmDriverExtra größer als der vom Makro zurückgegebene Wert ist. (Das Makro gibt den Wert des wSize Member der UNIDRV_PRIVATE_DEVMODE Struktur zurück.)
Ermitteln Sie die Adresse des privaten Teils der DEVMODEW- Struktur Ihres Plug-Ins wie folgt.
pdmPlugin = (PBYTE)(pdm) + (pdm)->dmSize + wSize;
Das vorangehende Beispiel beginnt mit der Adresse der öffentlichen DEVMODEW--Struktur (pdm), fügt die Anzahl der Bytes dieser Struktur hinzu (pdm->dmSize), und fügt dann die Größe in Bytes der privaten DEVMODEW Struktur (wSize) hinzu. Die privaten DEVMODEW Daten eines Plug-Ins beginnen an dieser Speicheradresse. Wenn mehrere Plug-Ins miteinander verkettet sind, ist die von diesem Beispiel zurückgegebene Adresse das private DEVMODEW--Daten des ersten Plug-Ins. Die daten des zweiten Plug-Ins DEVMODEW folgen den privaten DEVMODEW Daten des ersten Plug-Ins, dem privaten DEVMODEW Daten des zweiten Plug-Ins, dem privaten DEVMODEW daten des zweiten Plug-Ins usw. Ein Plug-In-Entwickler, der die Adresse der privaten n-th Plug-Ins private DEVMODEW--Daten ermitteln muss, müssen die Größen der privaten DEVMODEW--Daten für die ersten n - 1 Plug-Ins kennen.
Stellen Sie sicher, dass der private Teil der DEVMODEW- Struktur Ihres Plug-Ins mit einer gültigen OEM_DMEXTRAHEADER-Struktur beginnt.
Anforderungen
Anforderung | Wert |
---|---|
Header- | printoem.h (include Printoem.h) |