Jump to content

RMCreateDriver: Difference between revisions

From EDM2
Created page with "This service is supported by both rminfo.dll and rmcalls.lib. It obtains a driver handle. It also registers basic information about calling the device driver with the Resource..."
 
Ak120 (talk | contribs)
mNo edit summary
 
Line 3: Line 3:
The first call to this service causes the Resource Manager interface code (the part that is linked to your driver) to initialize. Therefore, this function is the first Resource Manager call a driver usually makes.
The first call to this service causes the Resource Manager interface code (the part that is linked to your driver) to initialize. Therefore, this function is the first Resource Manager call a driver usually makes.


Information about the driver registering with the Resource Manager is passed in a DRIVERSTRUCT.  
Information about the driver registering with the Resource Manager is passed in a DRIVERSTRUCT.


==Syntax==
==Syntax==
  RMCreateDriver(DriverStruct, hDriver);
  RMCreateDriver(DriverStruct, hDriver);
==Parameters==
==Parameters==
; DriverStruct (PDRIVERSTRUCT) - output : Pointer to the DRIVERSTRUCT structure.  
;DriverStruct (PDRIVERSTRUCT) - output: Pointer to the DRIVERSTRUCT structure.
 
;hDriver (PHDRIVER) - output: Pointer to a variable to receive the returned driver handle.
; hDriver (PHDRIVER) - output : Pointer to a variable to receive the returned driver handle.


==Return Code==
==Return Code==
; rc (APIRET) - returns : On systems where the Resource Manager driver is not installed, the library interface code will return RMRC_SUCCESS and a driver handle of -1L.
;rc (APIRET) - returns: On systems where the Resource Manager driver is not installed, the library interface code will return RMRC_SUCCESS and a driver handle of -1L.
 
::RMRC_IRQ_ENTRY_ILLEGAL: A Resource Manager service was issued at interrupt time. The Resource Manager service request can be issued only at task time or INIT time.
; RMRC_IRQ_ENTRY_ILLEGAL : A Resource Manager service was issued at interrupt time. The Resource Manager service request can be issued only at task time or INIT time.  
::RMRC_NULL_POINTER: A Resource Manager service received a NULL value for a pointer that was expected to contain a valid 16:16 address.
 
::RMRC_NULL_STRINGS: A descriptive text pointer in a DRIVERSTRUCT, ADAPTERSTRUCT, or DEVICESTRUCT datatype was found to be NULL rather than pointing to the expected ASCIIZ text data.
; RMRC_NULL_POINTER : A Resource Manager service received a NULL value for a pointer that was expected to contain a valid 16:16 address.  
::RMRC_BAD_VERSION: The Resource Manager level indicated on the RMCreateDriver service is not supported by the Resource Management driver currently installed because it is a a downlevel version of the Resource Management driver (RESOURCE.SYS), or the MajorVer/MinorVer fields of DRIVERSTRUCT were not properly initialized.
 
; RMRC_NULL_STRINGS : A descriptive text pointer in a DRIVERSTRUCT, ADAPTERSTRUCT, or DEVICESTRUCT datatype was found to be NULL rather than pointing to the expected ASCIIZ text data.  
 
; RMRC_BAD_VERSION : The Resource Manager level indicated on the RMCreateDriver service is not supported by the Resource Management driver currently installed because it is a a downlevel version of the Resource Management driver (RESOURCE.SYS), or the MajorVer/MinorVer fields of DRIVERSTRUCT were not properly initialized.


==Remarks==
==Remarks==
The first call to this service causes the Resource Manager interface code (the part that is linked to your device driver) to initialize. Therefore, this function is the first Resource Manager call a driver usually makes.
The first call to this service causes the Resource Manager interface code (the part that is linked to your device driver) to initialize. Therefore, this function is the first Resource Manager call a driver usually makes.


Information about the driver registering with the Resource Manager is passed in a DRIVERSTRUCT.  
Information about the driver registering with the Resource Manager is passed in a DRIVERSTRUCT.
==Example Code==
===C===
<PRE>
#include <os2.h>
#include <rmcalls.h>
 
PDRIVERSTRUCT    DriverStruct;
PHDRIVER        hDriver;
APIRET          rc;
 
rc = RMCreateDriver(DriverStruct, hDriver);
</PRE>


[[Category:DevHlps]]
[[Category:DevHlps]]

Latest revision as of 12:54, 7 June 2021

This service is supported by both rminfo.dll and rmcalls.lib. It obtains a driver handle. It also registers basic information about calling the device driver with the Resource Manager. A driver handle (HDRIVER) is returned by this service and is required by other Resource Manager services to identify the requestor.

The first call to this service causes the Resource Manager interface code (the part that is linked to your driver) to initialize. Therefore, this function is the first Resource Manager call a driver usually makes.

Information about the driver registering with the Resource Manager is passed in a DRIVERSTRUCT.

Syntax

RMCreateDriver(DriverStruct, hDriver);

Parameters

DriverStruct (PDRIVERSTRUCT) - output
Pointer to the DRIVERSTRUCT structure.
hDriver (PHDRIVER) - output
Pointer to a variable to receive the returned driver handle.

Return Code

rc (APIRET) - returns
On systems where the Resource Manager driver is not installed, the library interface code will return RMRC_SUCCESS and a driver handle of -1L.
RMRC_IRQ_ENTRY_ILLEGAL: A Resource Manager service was issued at interrupt time. The Resource Manager service request can be issued only at task time or INIT time.
RMRC_NULL_POINTER: A Resource Manager service received a NULL value for a pointer that was expected to contain a valid 16:16 address.
RMRC_NULL_STRINGS: A descriptive text pointer in a DRIVERSTRUCT, ADAPTERSTRUCT, or DEVICESTRUCT datatype was found to be NULL rather than pointing to the expected ASCIIZ text data.
RMRC_BAD_VERSION: The Resource Manager level indicated on the RMCreateDriver service is not supported by the Resource Management driver currently installed because it is a a downlevel version of the Resource Management driver (RESOURCE.SYS), or the MajorVer/MinorVer fields of DRIVERSTRUCT were not properly initialized.

Remarks

The first call to this service causes the Resource Manager interface code (the part that is linked to your device driver) to initialize. Therefore, this function is the first Resource Manager call a driver usually makes.

Information about the driver registering with the Resource Manager is passed in a DRIVERSTRUCT.