Hi. I cannot get thread ID with Thread.getThis() in specific callback functions on Windows. What is the cause of this problem?
import win32.windows; import win32.mmsystem; import std.stdio; import core.thread; extern (Windows) void waveInProc(in HWAVEIN handle, in uint message, in DWORD instance, in DWORD param1, in DWORD param2) { auto tid = Thread.getThis(); assert(tid); // tid is null } void main() { WAVEFORMATEX formatEx; with (formatEx) { wFormatTag = WAVE_FORMAT_PCM; nChannels = 1; nSamplesPerSec = 44100; wBitsPerSample = 16; nBlockAlign = cast(ushort)(wBitsPerSample * nChannels / 8); nAvgBytesPerSec = nSamplesPerSec * nBlockAlign; } HWAVEIN handle; waveInOpen(&handle, WAVE_MAPPER, cast(WAVEFORMATEX*)&formatEx, cast(DWORD)&waveInProc, cast(DWORD)null, CALLBACK_FUNCTION); uint bufferSize = cast(uint)(formatEx.nAvgBytesPerSec * 1/+second+/); WAVEHDR* hdr = new WAVEHDR; hdr.lpData = cast(LPSTR)new ushort[bufferSize]; hdr.dwBufferLength = bufferSize; hdr.dwFlags = 0; hdr.dwLoops = 0; waveInPrepareHeader(handle, hdr, WAVEHDR.sizeof); waveInAddBuffer(handle, hdr, WAVEHDR.sizeof); waveInStart(handle); readln(); }