Jump to content

DosQueryModuleName: Difference between revisions

From EDM2
Ak120 (talk | contribs)
mNo edit summary
Line 1: Line 1:
==Description==
Returns the fully-qualified drive, path, file name, and extension associated with the referenced module handle.
Returns the fully-qualified drive, path, file name, and extension associated with the referenced module handle.


Line 7: Line 6:
#include <os2.h>
#include <os2.h>


HMODULE   hmod;    /* The handle of the dynamic link module that is being referenced. */
HMODULE hmod;    /* The handle of the dynamic link module that is being referenced. */
ULONG     cbName;  /* The maximum length of the buffer, in bytes, where the name will be stored. */
ULONG   cbName;  /* The maximum length of the buffer, in bytes,
PCHAR     pch;    /* The address of the buffer where the file specification of the module are returned. */
                    where the name will be stored. */
APIRET     ulrc;    /* Return Code. */
PCHAR   pch;    /* The address of the buffer where the file specification
                    of the module are returned. */
APIRET   ulrc;    /* Return Code. */


ulrc = DosQueryModuleName(hmod, cbName, pch);
ulrc = DosQueryModuleName(hmod, cbName, pch);
</PRE>


</PRE>
==Parameters==
==Parameters==
; hmod (HMODULE) - input : The handle of the dynamic link module that is being referenced.
;hmod (HMODULE) - input : The handle of the dynamic link module that is being referenced.
This handle is provided in the DI register on entry to a module, or on the initialization entry to a dynamic link routine.  
:This handle is provided in the DI register on entry to a module, or on the initialization entry to a dynamic link routine.
 
;cbName (ULONG) - input : The maximum length of the buffer, in bytes, where the name will be stored.
; cbName (ULONG) - input : The maximum length of the buffer, in bytes, where the name will be stored.  
;pch (PCHAR) - output : The address of the buffer where the file specification of the module are returned.


; pch (PCHAR) - output : The address of the buffer where the file specification of the module are returned.
==Return Code==
==Return Code==
  ulrc (APIRET) - returns
  ulrc (APIRET) - returns
DosQueryModuleName returns one of the following values:
DosQueryModuleName returns one of the following values:
 
* 0   NO_ERROR  
* 0     NO_ERROR  
* 6   ERROR_INVALID_HANDLE
* 6     ERROR_INVALID_HANDLE
* 24 ERROR_BAD_LENGTH
* 24   ERROR_BAD_LENGTH


==Remarks==
==Remarks==
Line 70: Line 68:
   return NO_ERROR;
   return NO_ERROR;
}
}
</PRE>


</PRE>
==Related Functions==
==Related Functions==
* [[OS2 API:CPI:DosFreeModule|osFreeModule]]
* [[DosFreeModule]]
* [[OS2 API:CPI:DosLoadModule|DosLoadModule]]
* [[DosLoadModule]]
* [[OS2 API:CPI:DosQueryModuleHandle|DosQueryModuleHandle]]
* [[DosQueryModuleHandle]]
 


[[Category:The OS/2 API Project]]
[[Category:Dos]]

Revision as of 04:43, 6 January 2017

Returns the fully-qualified drive, path, file name, and extension associated with the referenced module handle.

Syntax

#define INCL_DOSMODULEMGR
#include <os2.h>

HMODULE  hmod;    /* The handle of the dynamic link module that is being referenced. */
ULONG    cbName;  /* The maximum length of the buffer, in bytes,
                     where the name will be stored. */
PCHAR    pch;     /* The address of the buffer where the file specification
                     of the module are returned. */
APIRET   ulrc;    /* Return Code. */

ulrc = DosQueryModuleName(hmod, cbName, pch);

Parameters

hmod (HMODULE) - input
The handle of the dynamic link module that is being referenced.
This handle is provided in the DI register on entry to a module, or on the initialization entry to a dynamic link routine.
cbName (ULONG) - input
The maximum length of the buffer, in bytes, where the name will be stored.
pch (PCHAR) - output
The address of the buffer where the file specification of the module are returned.

Return Code

ulrc (APIRET) - returns

DosQueryModuleName returns one of the following values:

  • 0 NO_ERROR
  • 6 ERROR_INVALID_HANDLE
  • 24 ERROR_BAD_LENGTH

Remarks

DosQueryModuleName returns the fully qualified drive, path, file name, and extension associated with the referenced module handle.

If the buffer is not large enough, an error is returned.

Example Code

This example attempts to obtain the handle of a dynamic link module named "DISPLAY.DLL," and then tests whether it is currently loaded or not.

#define INCL_DOSMODULEMGR   /* Module Manager values */
#define INCL_DOSERRORS      /* DOS Error values */
#include <os2.h>
#include <stdio.h>

int main(VOID) {
   PSZ     ModuleName    = "C:\\OS2\\DLL\\DISPLAY.DLL";  /* Module name   */
   HMODULE ModuleHandle  = NULLHANDLE;                   /* Module handle */
   APIRET  rc            = NO_ERROR;                     /* Return code   */

   rc = DosQueryModuleHandle(ModuleName,      /* Module to look for       */
                             &ModuleHandle);  /* Handle (returned)        */
   if (rc != NO_ERROR) {
      printf("DosQueryModuleHandle error: return code = %u\n", rc);
      return 1;
   } else {
      printf ("Module handle = %u\n", ModuleHandle);
   }

   rc = DosQueryModuleName (ModuleHandle,   /* Module handle to query     */
                            256L,           /* Maximum length of result   */
                            ModuleName);    /* Module name returned       */

   if (rc != NO_ERROR) {
      printf("DosQueryModuleName error: return code = %u\n", rc);
      return 1;
   } else {
      printf ("Module name = %s\n", ModuleName);
   }
   return NO_ERROR;
}

Related Functions