Tag: kernel32

如何调用DeviceIoControl来检索它需要的内存量?

我正在尝试调用DeviceIoControl(IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS) API,如此处所示 ,但我需要它首先“告诉我”它需要多少内存(与我链接的代码不同。) 所以我称之为: //First determine how much data do we need? BYTE dummyBuff[1]; DWORD bytesReturned = 0; if(!::DeviceIoControl(hDevice, dwIoControlCode, lpInBuffer, nInBufferSize, dummyBuff, sizeof(dummyBuff), &bytesReturned, NULL)) { //Check last error int nError = ::GetLastError(); if(nOSError == ERROR_INSUFFICIENT_BUFFER || nOSError == ERROR_MORE_DATA) { //Alloc memory from ‘bytesReturned’ … } } 但它总是返回错误代码87 ,或ERROR_INVALID_PARAMETER ,我的bytesReturned始终为0。 那么我做错了什么?

如何从内联汇编程序调用Win32 API函数?

有人请告诉我这个代码有什么问题我只是从kernel32.dll调用Sleep函数有什么问题? 我正在使用Visual Studio 2008.任何帮助都将不胜感激。 非常感谢你。 __asm { mov eax, 77e2ef66h push 9999 call eax }