modMessage-funktion

Funktionen modMessage är startpunktsfunktionen för midi-utdatadrivrutiner (Musical Instrument Digital Interface) och för interna synthesizerdrivrutiner. Mer information om ljudenhetsmeddelanden relaterade till MIDI finns i Ljudenhetsmeddelanden för MIDI

Syntax

DWORD modMessage(
   UINT      uDeviceID,
   UINT      uMsg,
   DWORD_PTR dwUser,
   DWORD_PTR dwParam1,
   DWORD_PTR dwParam2
);

Parameterar

  • uDeviceID
    Anger målenhetens ID. Enhets-ID:n är sekventiella och har ett initialt värde på noll och ett slutligt värde som är lika med en mindre än antalet enheter som drivrutinen stöder.

  • uMsg
    Anger meddelandet som WINMM skickar till drivrutinen som svar på ett anrop från klientprogrammet.

  • dwUser
    För meddelandet MODM_OPEN ska drivrutinen fylla den här platsen med sina instansdata. För andra meddelanden returneras instansdata till drivrutinen. Drivrutiner som stöder flera klienter kan använda instansdata för att spåra vilken klient som är associerad med meddelandet.

  • dwParam1
    Anger en meddelandeberoende parameter.

  • dwParam2
    Anger en meddelandeberoende parameter. Om det finns flaggor som ger ytterligare information till drivrutinen som fungerar med modMessage använder WINMM den här parametern för att skicka flaggorna.

Returvärde

Funktionen modMessage returnerar MMSYSERR_NOERROR om det kan bearbeta meddelandet som det tog emot från MMSYSTEM. Annars returneras något av följande felmeddelanden.

Returkod Beskrivning
MMSYSERR_ERROR

Ospecificerat fel.

MMSYSERR_BADDEVICEID

Det angivna enhets-ID:t ligger utom räckhåll.

MMSYSERR_NOTENABLED

Det gick inte att läsa in eller initiera drivrutinen.

MMSYSERR_ALLOCATED

Den angivna enheten har redan allokerats.

MMSYSERR_INVALHANDLE

Referensen för den angivna enheten är ogiltig.

MMSYSERR_NODRIVER

Det finns ingen enhetsdrivrutin.

MMSYSERR_NOMEM

Minnesallokeringsfel.

MMSYSERR_NOTSUPPORTED

Funktionen som begärs av meddelandet stöds inte.

MMSYSERR_BADERRNUM

Felvärdet ligger inom intervallet. Mer information finns i avsnittet Kommentarer.

MMSYSERR_INVALFLAG

En ogiltig flagga skickades till modMessage (med hjälp av dwParam2).

MMSYSERR_INVALPARAM

En ogiltig parameter skickades till modMessage.

MMSYSERR_HANDLEBUSY

Det angivna handtaget används samtidigt av en annan tråd (till exempel en motringningstråd).

MMSYSERR_INVALIDALIAS

Det angivna aliaset hittades inte.

MMSYSERR_BADDB

Felaktig registerdatabas.

MMSYSERR_KEYNOTFOUND

Det gick inte att hitta den angivna registernyckeln.

MMSYSERR_READERROR

Registerläsningsfel.

MMSYSERR_WRITEERROR

Fel vid registerskrivning.

MMSYSERR_DELETEERROR

Fel vid borttagning av register.

MMSYSERR_VALNOTFOUND

Det angivna registervärdet hittades inte.

MMSYSERR_NODRIVERCB

Drivrutinen som fungerar med modMessage anropar inte DriverCallback.

MMSYSERR_MOREDATA

modMessage har mer data att returnera.

MMSYSERR_LASTERROR

Anger att det här är det sista felet i intervallet med felvärden. Mer information finns i avsnittet Kommentarer.

Anmärkningar

Ljudenhetsmeddelanden är systemdefinierade konstanter. Så när modMessage tar emot ett ljudenhetsmeddelande använder den en switch-instruktion för att fastställa vilken åtgärd som ska utföras, baserat på meddelandets värde.

Antalet felmeddelanden som modMessage kan returnera beror på meddelandet som bearbetades när felet inträffade. De numeriska värdena för MMSYSERR_ felmeddelanden börjar med noll (för MMSYSERR_NOERROR) och fortsätter med MMSYSERR_BASE + n, där n är ett heltal från 1 till 21. Värdet för MMSYSERR_BASE är en definierad konstant. Mer information om MSYSERR_BASE och MMSYSERR_ felmeddelanden finns i Mmsystem.h i Windows SDK respektive Mmddk.h i WDK.

Kravspecifikation

Målplattform

Skrivbord

Utgåva

Tillgänglig med Windows XP och senare Windows-operativsystem.

Header

Mmddk.h (inklusive Mmddk.h, Mmsystem.h eller Windows.h)

Se även

MODM_OPEN