Solved

mmsystem.h

Posted on 1998-01-14
4
649 Views
Last Modified: 2011-09-20
Hi,

I'm a Delphi programmer and I need some information from you. I know that in the mmsystem.h or windows.h library these constants are declared :

 DBTF_MEDIA
 DBTF_NET

 DBT_DEVTYP_OEM      
 DBT_DEVTYP_VOLUME
 DBT_DEVTYP_PORT      

 DBT_DEVICEARRIVAL
 DBT_DEVICEQUERYREMOVE
 DBT_DEVICEQUERYREMOVEFAILED      
 DBT_DEVICEREMOVEPENDING
 DBT_DEVICEREMOVECOMPLETE
 DBT_DEVICETYPESPECIFIC
 DBT_CONFIGCHANGED

Can you look up these values and send them to me?

Thanks in advance,
Zif.
 
0
Comment
Question by:ZifNab
  • 3
4 Comments
 
LVL 22

Accepted Solution

by:
nietod earned 10 total points
ID: 1178277
coming soon.
0
 
LVL 22

Expert Comment

by:nietod
ID: 1178278
I'l put up the entire include file (about 300 lines) because it has some conditional code in it, so the definition of some things might change depending on platform, etc.


0
 
LVL 22

Expert Comment

by:nietod
ID: 1178279
/*****************************************************************************
 *
 *  Copyright (c) 1993-1996 Microsoft Corporation
 *
 *  Title:      DBT.H - Equates for WM_DEVICECHANGE and BroadcastSystemMessage
 *
 *  Version:    4.00
 *
 *  Date:       24-May-1993
 *
 *  Author:     rjc
 *
 *----------------------------------------------------------------------------
 *
 *  Change log:
 *
 *     DATE     REV                 DESCRIPTION
 *  ----------- --- ----------------------------------------------------------
 *
 *****************************************************************************/

#ifndef _DBT_H
#define      _DBT_H

/*
 * BroadcastSpecialMessage constants.
 */
#define WM_DEVICECHANGE            0x0219

/* XLATOFF */
#ifdef      IS_32
#define      DBTFAR
#else
#define      DBTFAR      far
#endif
/* XLATON */

/*
 * Broadcast message and receipient flags.
 *
 * Note that there is a third "flag". If the wParam has:
 *
 * bit 15 on:      lparam is a pointer and bit 14 is meaningfull.
 * bit 15 off:      lparam is just a UNLONG data type.
 *
 * bit 14 on:      lparam is a pointer to an ASCIIZ string.
 * bit 14 off:      lparam is a pointer to a binary struture starting with
 *            a dword describing the length of the structure.
 */
#define BSF_QUERY            0x00000001
#define BSF_IGNORECURRENTTASK      0x00000002      /* Meaningless for VxDs */
#define BSF_FLUSHDISK            0x00000004      /* Shouldn't be used by VxDs */
#define BSF_NOHANG              0x00000008
#define BSF_POSTMESSAGE            0x00000010
#define BSF_FORCEIFHUNG         0x00000020
#define BSF_NOTIMEOUTIFNOTHUNG  0x00000040
#define      BSF_MSGSRV32ISOK      0x80000000      /* Called synchronously from PM API */
#define      BSF_MSGSRV32ISOK_BIT      31            /* Called synchronously from PM API */

#define BSM_ALLCOMPONENTS      0x00000000
#define BSM_VXDS                0x00000001
#define BSM_NETDRIVER           0x00000002
#define BSM_INSTALLABLEDRIVERS  0x00000004
#define BSM_APPLICATIONS        0x00000008

/*
 * Message = WM_DEVICECHANGE
 * wParam  = DBT_APPYBEGIN
 * lParam  = (not used)
 *
 *      'Appy-time is now available.  This message is itself sent
 *      at 'Appy-time.
 *
 * Message = WM_DEVICECHANGE
 * wParam  = DBT_APPYEND
 * lParam  = (not used)
 *
 *      'Appy-time is no longer available.  This message is *NOT* sent
 *      at 'Appy-time.  (It cannot be, because 'Appy-time is gone.)
 *
 * NOTE!  It is possible for DBT_APPYBEGIN and DBT_APPYEND to be sent
 * multiple times during a single Windows session.  Each appearance of
 * 'Appy-time is bracketed by these two messages, but 'Appy-time may
 * momentarily become unavailable during otherwise normal Windows
 * processing.  The current status of 'Appy-time availability can always
 * be obtained from a call to _SHELL_QueryAppyTimeAvailable.
 */
#define DBT_APPYBEGIN                  0x0000
#define DBT_APPYEND                  0x0001

/*
 * Message = WM_DEVICECHANGE
 * wParam  = DBT_DEVNODES_CHANGED
 * lParam  = 0
 *
 *      send when configmg finished a process tree batch. Some devnodes
 *      may have been added or removed. This is used by ring3 people which
 *      need to be refreshed whenever any devnode changed occur (like
 *      device manager). People specific to certain devices should use
 *      DBT_DEVICE* instead.
 */

#define DBT_DEVNODES_CHANGED            0x0007

/*
 * Message = WM_DEVICECHANGE
 * wParam  = DBT_QUERYCHANGECONFIG
 * lParam  = 0
 *
 *      sent to ask if a config change is allowed
 */

#define DBT_QUERYCHANGECONFIG           0x0017

/*
 * Message = WM_DEVICECHANGE
 * wParam  = DBT_CONFIGCHANGED
 * lParam  = 0
 *
 *      sent when a config has changed
 */

#define DBT_CONFIGCHANGED               0x0018

/*
 * Message = WM_DEVICECHANGE
 * wParam  = DBT_CONFIGCHANGECANCELED
 * lParam  = 0
 *
 *      someone cancelled the config change
 */

#define DBT_CONFIGCHANGECANCELED        0x0019

/*
 * Message = WM_DEVICECHANGE
 * wParam  = DBT_MONITORCHANGE
 * lParam  = new resolution to use (LOWORD=x, HIWORD=y)
 *           if 0, use the default res for current config
 *
 *      this message is sent when the display monitor has changed
 *      and the system should change the display mode to match it.
 */

#define DBT_MONITORCHANGE               0x001B

/*
 * Message = WM_DEVICECHANGE
 * wParam  = DBT_SHELLLOGGEDON
 * lParam  = 0
 *
 *      The shell has finished login on: VxD can now do Shell_EXEC.
 */

#define      DBT_SHELLLOGGEDON            0x0020

/*
 * Message = WM_DEVICECHANGE
 * wParam  = DBT_CONFIGMGAPI
 * lParam  = CONFIGMG API Packet
 *
 *      CONFIGMG ring 3 call.
 */
#define      DBT_CONFIGMGAPI32            0x0022

/*
 * Message = WM_DEVICECHANGE
 * wParam  = DBT_VOLLOCK*
 * lParam  = pointer to VolLockBroadcast structure described below
 *
 *      Messages issued by IFSMGR for volume locking purposes on WM_DEVICECHANGE.
 *      All these messages pass a pointer to a struct which has no pointers.
 */

#define DBT_VOLLOCKQUERYLOCK      0x8041
#define DBT_VOLLOCKLOCKTAKEN      0x8042
#define DBT_VOLLOCKLOCKFAILED      0x8043
#define DBT_VOLLOCKQUERYUNLOCK      0x8044
#define DBT_VOLLOCKLOCKRELEASED      0x8045
#define DBT_VOLLOCKUNLOCKFAILED      0x8046

/*
 * Device broadcast header
 */
 
struct _DEV_BROADCAST_HDR {      /* */
    DWORD      dbch_size;
    DWORD      dbch_devicetype;
    DWORD       dbch_reserved;
};

typedef struct       _DEV_BROADCAST_HDR      DEV_BROADCAST_HDR;
typedef            DEV_BROADCAST_HDR      DBTFAR *PDEV_BROADCAST_HDR;

/*
 * Structure for volume lock broadcast
 */
 
typedef struct VolLockBroadcast VolLockBroadcast;
typedef VolLockBroadcast *pVolLockBroadcast;
struct VolLockBroadcast {
      struct      _DEV_BROADCAST_HDR vlb_dbh;
      DWORD      vlb_owner;            // thread on which lock request is being issued
      BYTE      vlb_perms;            // lock permission flags defined below
      BYTE      vlb_lockType;      // type of lock
      BYTE      vlb_drive;            // drive on which lock is issued
      BYTE      vlb_flags;            // miscellaneous flags
};

/*
 * Values for vlb_perms
 */
#define LOCKP_ALLOW_WRITES            0x01      // Bit 0 set - allow writes
#define LOCKP_FAIL_WRITES            0x00      // Bit 0 clear - fail writes
#define LOCKP_FAIL_MEM_MAPPING      0x02      // Bit 1 set - fail memory mappings
#define LOCKP_ALLOW_MEM_MAPPING      0x00      // Bit 1 clear - allow memory mappings
#define LOCKP_USER_MASK                  0x03      // Mask for user lock flags
#define LOCKP_LOCK_FOR_FORMAT      0x04      // Level 0 lock for format

/*
 * Values for vlb_flags
 */
#define LOCKF_LOGICAL_LOCK            0x00      // Bit 0 clear - logical lock
#define LOCKF_PHYSICAL_LOCK            0x01      // Bit 0 set - physical lock


/*
 * Message = WM_DEVICECHANGE
 * wParam  = DBT_NODISKSPACE
 * lParam  = drive number of drive that is out of disk space (1-based)
 *
 * Message issued by IFS manager when it detects that a drive is run out of
 * free space.
 */

#define DBT_NO_DISK_SPACE            0x0047


#define DBT_CONFIGMGPRIVATE      0x7FFF

/*
 * The following messages are for WM_DEVICECHANGE. The immediate list
 * is for the wParam. ALL THESE MESSAGES PASS A POINTER TO A STRUCT
 * STARTING WITH A DWORD SIZE AND HAVING NO POINTER IN THE STRUCT.
 *
 */
#define DBT_DEVICEARRIVAL            0x8000      // system detected a new device
#define DBT_DEVICEQUERYREMOVE            0x8001      // wants to remove, may fail
#define DBT_DEVICEQUERYREMOVEFAILED      0x8002  // removal aborted        
#define DBT_DEVICEREMOVEPENDING            0x8003  // about to remove, still avail.
#define DBT_DEVICEREMOVECOMPLETE      0x8004  // device is gone
#define DBT_DEVICETYPESPECIFIC            0x8005  // type specific event

#define DBT_DEVTYP_OEM                  0x00000000  // oem-defined device type
#define DBT_DEVTYP_DEVNODE            0x00000001  // devnode number
#define DBT_DEVTYP_VOLUME            0x00000002  // logical volume
#define DBT_DEVTYP_PORT                  0x00000003  // serial, parallel
#define DBT_DEVTYP_NET                  0x00000004  // network resource

struct _DEV_BROADCAST_HEADER { /* */
    DWORD      dbcd_size;
    DWORD      dbcd_devicetype;
    DWORD       dbcd_reserved;
};

struct _DEV_BROADCAST_OEM {      /* */
    DWORD      dbco_size;
    DWORD      dbco_devicetype;
    DWORD       dbco_reserved;
    DWORD      dbco_identifier;
    DWORD      dbco_suppfunc;
};

typedef struct       _DEV_BROADCAST_OEM      DEV_BROADCAST_OEM;
typedef            DEV_BROADCAST_OEM      DBTFAR *PDEV_BROADCAST_OEM;

struct _DEV_BROADCAST_DEVNODE { /* */
    DWORD      dbcd_size;
    DWORD      dbcd_devicetype;
    DWORD       dbcd_reserved;
    DWORD      dbcd_devnode;
};

typedef struct       _DEV_BROADCAST_DEVNODE      DEV_BROADCAST_DEVNODE;
typedef            DEV_BROADCAST_DEVNODE      DBTFAR *PDEV_BROADCAST_DEVNODE;

struct _DEV_BROADCAST_VOLUME { /* */
    DWORD      dbcv_size;
    DWORD      dbcv_devicetype;
    DWORD       dbcv_reserved;
    DWORD      dbcv_unitmask;
    WORD      dbcv_flags;
};

typedef struct       _DEV_BROADCAST_VOLUME      DEV_BROADCAST_VOLUME;
typedef            DEV_BROADCAST_VOLUME      DBTFAR *PDEV_BROADCAST_VOLUME;

#define DBTF_MEDIA      0x0001            // media comings and goings
#define DBTF_NET      0x0002            // network volume

struct _DEV_BROADCAST_PORT { /* */
    DWORD      dbcp_size;
    DWORD      dbcp_devicetype;
    DWORD       dbcp_reserved;
    char      dbcp_name[1];
};

typedef struct       _DEV_BROADCAST_PORT      DEV_BROADCAST_PORT;
typedef            DEV_BROADCAST_PORT      DBTFAR *PDEV_BROADCAST_PORT;

struct _DEV_BROADCAST_NET { /* */
    DWORD      dbcn_size;
    DWORD      dbcn_devicetype;
    DWORD       dbcn_reserved;
    DWORD      dbcn_resource;
    DWORD      dbcn_flags;
};

typedef struct       _DEV_BROADCAST_NET      DEV_BROADCAST_NET;
typedef            DEV_BROADCAST_NET      DBTFAR *PDEV_BROADCAST_NET;

#define DBTF_RESOURCE      0x00000001      // network resource
#define DBTF_XPORT          0x00000002      // new transport coming or going
#define DBTF_SLOWNET    0x00000004  // new incoming transport is slow
                              // (dbcn_resource undefined for now)

#define      DBT_VPOWERDAPI      0x8100            // VPOWERD API for Win95

/*
 *  User-defined message types all use wParam = 0xFFFF with the
 *  lParam a pointer to the structure below.
 *
 *  dbud_dbh - DEV_BROADCAST_HEADER must be filled in as usual.
 *
 *  dbud_szName contains a case-sensitive ASCIIZ name which names the
 *  message.  The message name consists of the vendor name, a backslash,
 *  then arbitrary user-defined ASCIIZ text.  For example:
 *
 *      "WidgetWare\QueryScannerShutdown"
 *      "WidgetWare\Video Q39S\AdapterReady"
 *
 *  After the ASCIIZ name, arbitrary information may be provided.
 *  Make sure that dbud_dbh.dbch_size is big enough to encompass
 *  all the data.  And remember that nothing in the structure may
 *  contain pointers.
 */

#define DBT_USERDEFINED      0xFFFF

struct _DEV_BROADCAST_USERDEFINED { /* */
    struct _DEV_BROADCAST_HDR dbud_dbh;
    char      dbud_szName[1];          /* ASCIIZ name */
/*  BYTE      dbud_rgbUserDefined[];*/ /* User-defined contents */
};

#endif      // _DBT_H

0
 
LVL 8

Author Comment

by:ZifNab
ID: 1178280
nietod's,

Thank you very very much for your quick answer!!!!
No I can go further with my component.

If I can help you some day, just ask!

Thanks a lot!

Regards,
Zif.
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Written by John Humphreys C++ Threading and the POSIX Library This article will cover the basic information that you need to know in order to make use of the POSIX threading library available for C and C++ on UNIX and most Linux systems.   [s…
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now