The following is NOT a complete C program. It is intended to provide an idea of how to communicate with a file system driver (FSD).

This example assumes that FileHandle has been initialized with the handle to the file and that the file system driver (FSD) recognizes a function code of hex 81DE. It further assumes that the input parameters and input data area are appropriate for the function.

 #define INCL_DOSFILEMGR   /* File Manager values */
 #define INCL_DOSERRORS    /* Error values */
 #include <os2.h>
 #include <stdio.h>
 #include <string.h>

 UCHAR   uchDataArea[200] = {0};          /* Input and output data area */
 ULONG   ulDataLen        = 0;            /* Input and output data size */
 UCHAR   uchParms[120]    = {0};          /* Input and output for function */
 ULONG   ulParmLen        = 0;            /* Input and output parameter size */
 ULONG   ulFunction       = 0x81DE;       /* Device-specific function */
 HFILE   hfFile           = NULLHANDLE;   /* Handle for file */
 APIRET  rc               = NO_ERROR;     /* Return code */

  strcpy(uchDataArea,"34 22 37");   /* Data to pass to file system */
  ulDataLen = strlen(uchDataArea);  /* Length of input data */

  strcpy(uchParms,"PARM1: 98");     /* Input parameters */
  ulParmLen = strlen(uchParms);     /* Length of input parameters */

  rc = DosFSCtl(uchDataArea,         /* Input/output data area */
                sizeof(uchDataArea), /* Maximum output data size */
                &ulDataLen,          /* Input:  size of input data area */
                                     /* Output: size of data returned   */
                uchParms,            /* Input/Output parameter list */
                sizeof(uchParms),    /* Maximum output parameter size */
                &ulParmLen,          /* Input:  size of parameter list */
                                     /* Output: size of parameters returned */
                ulFunction,          /* Function being requested */
                "MY_FSD",            /* File System Driver (FSD) name */
                hfFile,              /* Handle for file */
                FSCTL_FSDNAME);      /* Indicate FSD name is the route */

  if (rc != NO_ERROR) {
      printf("DosFSCtl error: return code = %u\n", rc);
      return 1;
  }


[Back] [Next]