Domanda

Ho importato il kernel32 biblioteca.Quindi, ho il createMutex funzione disponibile ma non sono del tutto sicuro dei vari parametri e dei valori restituiti.

Questo è il classico Visual Basic, non Visual Basic.NET ma probabilmente posso lavorare con entrambi i linguaggi sotto forma di risposta.

È stato utile?

Soluzione

Il codice VB è simile al seguente:

hMutex = CreateMutex(ByVal 0&, 1, ByVal 0&)

Il primo parametro è un puntatore a an SECURITY_ATTRIBUTES struttura.Se non sai di cosa si tratta, non ne hai bisogno.Passa NULL (0).

Il secondo parametro è TRUE (diverso da zero o 1) se il thread chiamante deve assumere la proprietà del mutex. FALSE Altrimenti.

Il terzo parametro è il nome del mutex e può essere NULL (0), come mostrato.Se hai bisogno di un mutex con nome, passa il nome (qualsiasi cosa univoca).Non sono sicuro se il VB wrapper effettua il marshalling della lunghezza con prefisso VB tipo di stringa (BSTR) su una stringa Ascii/Unicode con terminazione null, in caso contrario, dovrai farlo e sono disponibili numerosi esempi.

Buona fortuna!

Altri suggerimenti

Ecco le dichiarazioni VB6 per CreaMutex - Li ho appena copiati dal visualizzatore API, che dovresti avere come parte della tua installazione VB6.VB6 effettua il marhalling delle stringhe su ANSI con terminazione null utilizzando la tabella codici corrente.

Public Type SECURITY_ATTRIBUTES
   nLength As Long
   lpSecurityDescriptor As Long
   bInheritHandle As Long 
End Type

Public Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" _
   (lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, _
    ByVal lpName As String) As Long

Tieni presente che se crei un mutex dall'IDE VB6, il mutex appartiene all'IDE e non verrà distrutto quando interrompi l'esecuzione del programma, solo quando chiudi l'IDE.

Ebbene, in base a documentazione sembra:

  1. Attributi di sicurezza (può passare null)
  2. Se è inizialmente di proprietà (può passare come falso)
  3. Il nome

HTH

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top