Jump to content

OS2 PM DRV DEVICENAMES: Difference between revisions

From EDM2
mNo edit summary
Ak120 (talk | contribs)
mNo edit summary
 
Line 1: Line 1:
OS2_PM_DRV_DEVICENAMES must be compiled to run at Ring 3 (privilege level 3).  
OS2_PM_DRV_DEVICENAMES must be compiled to run at Ring 3 (privilege level 3).


The device names entry point is exported as OS2_PM_DRV_DEVICENAMES by the presentation driver to support the DevQueryDeviceNames function at the API level. This call returns the device names and device descriptions supported by this driver.  
The device names entry point is exported as OS2_PM_DRV_DEVICENAMES by the presentation driver to support the DevQueryDeviceNames function at the API level. This call returns the device names and device descriptions supported by this driver.


==Syntax==
==Syntax==
Line 8: Line 8:


==Parameters==
==Parameters==
; pszDriverName (PSZ) - input  
;pszDriverName (PSZ) - input:A pointer to a string containing the name of the device driver, such as LaserJet.
:A pointer to a string containing the name of the device driver, such as LaserJet.  
;pcNames (PLONG) - input:A pointer to count of fields, cNames, in DeviceName and DeviceDesc arrays.
 
;paDeviceName (PSTR32) - input:A pointer to DeviceName array, CHAR cNames[32]. Device names are NULL-terminated strings such as 'HP LaserJet II'.
;pcNames (PLONG) - input  
;paDeviceDesc (PSTR64) - input:A pointer to DeviceDesc array, CHAR cNames[64]. Device descriptions are NULL-terminated strings such as 'HP LaserJet II'.
:A pointer to count of fields, cNames, in DeviceName and DeviceDesc arrays.  
;pcDataTypes (PLONG) - input:A pointer to count of fields, cDataTypes in DataType array.
 
;paDataType (PSZ) - input:A pointer to DataType array, CHAR cDataTypes[16].
;paDeviceName (PSTR32) - input  
;lReserved1 (ULONG) - input:Reserved.
:A pointer to DeviceName array, CHAR cNames[32]. Device names are NULL-terminated strings such as 'HP LaserJet II'.  
;lReserved2 (ULONG) - input:Reserved.
 
;paDeviceDesc (PSTR64) - input  
:A pointer to DeviceDesc array, CHAR cNames[64]. Device descriptions are NULL-terminated strings such as 'HP LaserJet II'.  
 
;pcDataTypes (PLONG) - input  
:A pointer to count of fields, cDataTypes in DataType array.  
 
;paDataType (PSZ) - input  
:A pointer to DataType array, CHAR cDataTypes[16].  
 
;lReserved1 (ULONG) - input  
:Reserved.  
 
;lReserved2 (ULONG) - input  
:Reserved.  


==Return Code==
==Return Code==
; rc (LONG) - returns  
;rc (LONG) - returns: Return codes.
: Return codes.  
:The handling routine in the presentation driver returns a LONG integer. Valid values are:
 
* -1 Successful
:The handling routine in the presentation driver returns a LONG integer. Valid values are:  
* 0 Error
 
;Note: The system expects the successful and error return codes from OS2_PM_DRV_DEVICENAMES to be the opposite of those from OS2_PM_DRV_DEVMODE and the Enable subfunctions.
* -1 Successful  
* 0 Error  
 
;Note: The system expects the successful and error return codes from OS2_PM_DRV_DEVICENAMES to be the opposite of those from OS2_PM_DRV_DEVMODE and the Enable subfunctions.  
 


==Remarks==
==Remarks==
Applications such as the Presentation Manager Print Object call DevQueryDeviceNames to determine the device names and descriptions and the data types that the presentation driver supports. Hardcopy drivers must contain a handling routine for OS2_PM_DRV_DEVICENAMES.  
Applications such as the Presentation Manager Print Object call [[DevQueryDeviceNames]] to determine the device names and descriptions and the data types that the presentation driver supports. Hardcopy drivers must contain a handling routine for OS2_PM_DRV_DEVICENAMES.


Applications usually call this function twice. First, it is called with a NULL value for cNames and cDataTypes to query the number of names and data types. Second, after allocating the arrays, the application calls this function with valid values to get the data. If the value of cNames is NULL at the location addressed by pcNames, the handling routine must update cNames to the actual count of names. If cNames has a valid value, the routine must write device names and device descriptions into the arrays addressed by paDeviceName and paDeviceDesc. Similarly, for cDataTypes, the handling routine either writes a valid value into cDataTypes or writes data-type names into the array addressed by paDataType. Notice that when writing to an array, the routine does not write past the end of the array as defined by the associated count.  
Applications usually call this function twice. First, it is called with a NULL value for cNames and cDataTypes to query the number of names and data types. Second, after allocating the arrays, the application calls this function with valid values to get the data. If the value of cNames is NULL at the location addressed by pcNames, the handling routine must update cNames to the actual count of names. If cNames has a valid value, the routine must write device names and device descriptions into the arrays addressed by paDeviceName and paDeviceDesc. Similarly, for cDataTypes, the handling routine either writes a valid value into cDataTypes or writes data-type names into the array addressed by paDataType. Notice that when writing to an array, the routine does not write past the end of the array as defined by the associated count.


==Example Code==
==Example Code==

Latest revision as of 12:54, 5 March 2020

OS2_PM_DRV_DEVICENAMES must be compiled to run at Ring 3 (privilege level 3).

The device names entry point is exported as OS2_PM_DRV_DEVICENAMES by the presentation driver to support the DevQueryDeviceNames function at the API level. This call returns the device names and device descriptions supported by this driver.

Syntax

OS2_PM_DRV_DEVICENAMES(pszDriverName,pcNames, paDeviceName, paDeviceDesc,
      pcDataTypes, paDataType, lReserved1, lReserved2);

Parameters

pszDriverName (PSZ) - input
A pointer to a string containing the name of the device driver, such as LaserJet.
pcNames (PLONG) - input
A pointer to count of fields, cNames, in DeviceName and DeviceDesc arrays.
paDeviceName (PSTR32) - input
A pointer to DeviceName array, CHAR cNames[32]. Device names are NULL-terminated strings such as 'HP LaserJet II'.
paDeviceDesc (PSTR64) - input
A pointer to DeviceDesc array, CHAR cNames[64]. Device descriptions are NULL-terminated strings such as 'HP LaserJet II'.
pcDataTypes (PLONG) - input
A pointer to count of fields, cDataTypes in DataType array.
paDataType (PSZ) - input
A pointer to DataType array, CHAR cDataTypes[16].
lReserved1 (ULONG) - input
Reserved.
lReserved2 (ULONG) - input
Reserved.

Return Code

rc (LONG) - returns
Return codes.
The handling routine in the presentation driver returns a LONG integer. Valid values are:
  • -1 Successful
  • 0 Error
Note
The system expects the successful and error return codes from OS2_PM_DRV_DEVICENAMES to be the opposite of those from OS2_PM_DRV_DEVMODE and the Enable subfunctions.

Remarks

Applications such as the Presentation Manager Print Object call DevQueryDeviceNames to determine the device names and descriptions and the data types that the presentation driver supports. Hardcopy drivers must contain a handling routine for OS2_PM_DRV_DEVICENAMES.

Applications usually call this function twice. First, it is called with a NULL value for cNames and cDataTypes to query the number of names and data types. Second, after allocating the arrays, the application calls this function with valid values to get the data. If the value of cNames is NULL at the location addressed by pcNames, the handling routine must update cNames to the actual count of names. If cNames has a valid value, the routine must write device names and device descriptions into the arrays addressed by paDeviceName and paDeviceDesc. Similarly, for cDataTypes, the handling routine either writes a valid value into cDataTypes or writes data-type names into the array addressed by paDataType. Notice that when writing to an array, the routine does not write past the end of the array as defined by the associated count.

Example Code

#include <os2.h>

PSZ       pszDriverName;
PLONG     pcNames;
PSTR32    paDeviceName;
PSTR64    paDeviceDesc;
PLONG     pcDataTypes;
PSZ       paDataType;
ULONG     lReserved1;
ULONG     lReserved2;
LONG      rc;             /*  Return codes. */

rc = OS2_PM_DRV_DEVICENAMES(pszDriverName,
       pcNames, paDeviceName, paDeviceDesc,
       pcDataTypes, paDataType, lReserved1,
       lReserved2);