首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求调用windows自带的iphlpapi.dll的DisableMediaSense函数来封闭媒体感知功能的代码。代码已经写出,不过始终调用失败

2013-10-23 
求调用windows自带的iphlpapi.dll的DisableMediaSense函数来关闭媒体感知功能的代码。代码已经写出,不过始

求调用windows自带的iphlpapi.dll的DisableMediaSense函数来关闭媒体感知功能的代码。代码已经写出,不过始终调用失败
XP环境下测试的 不过不知道为什么 始终调用失败。 请高手帮忙看看 
不知道win7下是否也支持

Function DisableMediaSense(HANDLE:Pointer;POVERLAPPED:Pointer):DWORD; stdcall;External 'iphlpapi.dll';


procedure TForm1.CB_NOClick(Sender: TObject);
var
  aOverlapped: TOverlapped;
  DriverHandle: THandle;
  dwRetVal:DWORD;
begin
  DriverHandle:= 0;
  FillChar(aOverlapped,sizeof(Overlapped),0);
  aOverlapped.hEvent:= CreateEvent(0, FALSE, FALSE, 0);
  dwRetVal:= DisableMediaSense(@DriverHandle,@aOverlapped);
  NO_ERROR
  If dwRetVal<>ERROR_INVALID_PARAMETER Then Begin
    showmessage('调用失败');
  End Else Begin
    showmessage('调用成功');
  End;
  {
  ERROR_NOT_SUPPORTED
  ERROR_OPEN_FAILED
  ERROR_INVALID_PARAMETER
  NO_ERROR
  }
end; windows xp
[解决办法]
1)句柄为0,程序如何操作?
2)如果是清空结果体,直接用ZeroMemory()。
3)另外程序返回的是DWORD(C++) 则 Delphi 为 LongInt,参考 “万一博客”,
4)可以检测函数的返回值,成功则是 ERROR_IO_PENDING ,失败用 FormatMessage()进行格式化错误。
5)此函数的具体用法,可以参考MSDN。

热点排行