JwaLmConfig.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:7k
源码类别:

Windows编程

开发平台:

Delphi

  1. {******************************************************************************}
  2. {                                                                       }
  3. { Lan Manager Config API interface Unit for Object Pascal                      }
  4. {                                                                       }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
  6. { Corporation. All Rights Reserved.                                            }
  7. {                 }
  8. { The original file is: lmconfig.h, released November 2001. The original Pascal}
  9. { code is: LmConfig.pas, released Februari 2002. The initial developer of the  }
  10. { Pascal code is Marcel van Brakel (brakelm@chello.nl).                        }
  11. {                                                                              }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
  13. { Marcel van Brakel. All Rights Reserved.                                      }
  14. {                 }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
  16. {                }
  17. { You may retrieve the latest version of this file at the Project JEDI home    }
  18. { page, located at http://delphi-jedi.org or my personal homepage located at   }
  19. { http://members.chello.nl/m.vanbrakel2                                        }
  20. {                }
  21. { The contents of this file are used with permission, subject to the Mozilla   }
  22. { Public License Version 1.1 (the "License"); you may not use this file except }
  23. { in compliance with the License. You may obtain a copy of the License at      }
  24. { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
  25. {                                                                              }
  26. { Software distributed under the License is distributed on an "AS IS" basis,   }
  27. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  28. { the specific language governing rights and limitations under the License.    }
  29. {                                                                              }
  30. { Alternatively, the contents of this file may be used under the terms of the  }
  31. { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
  32. { provisions of the LGPL License are applicable instead of those above.        }
  33. { If you wish to allow use of your version of this file only under the terms   }
  34. { of the LGPL License and not to allow others to use your version of this file }
  35. { under the MPL, indicate your decision by deleting  the provisions above and  }
  36. { replace  them with the notice and other provisions required by the LGPL      }
  37. { License.  If you do not delete the provisions above, a recipient may use     }
  38. { your version of this file under either the MPL or the LGPL License.          }
  39. {                 }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. {                 }
  42. {******************************************************************************}
  43. unit JwaLmConfig;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "lmconfig.h"'}
  47. {$HPPEMIT ''}
  48. {$I WINDEFINES.INC}
  49. interface
  50. uses
  51.   JwaLmCons, JwaWinType;
  52. {$DEFINE REVISED_CONFIG_APIS}
  53. //
  54. // Function Prototypes - Config
  55. //
  56. function NetConfigGet(server, component, parameter: LPCWSTR; var bufptr: LPBYTE{$IFNDEF REVISED_CONFIG_APIS}; totalavailable: LPDWORD;{$ENDIF}): NET_API_STATUS; stdcall;
  57. {$EXTERNALSYM NetConfigGet}
  58. function NetConfigGetAll(server, component: LPCWSTR; var bufptr: LPBYTE{$IFNDEF REVISED_CONFIG_APIS}; totalavailable: LPDWORD{$ENDIF}): NET_API_STATUS; stdcall;
  59. {$EXTERNALSYM NetConfigGetAll}
  60. function NetConfigSet(server, reserved1, component: LPCWSTR; level, reserved2: DWORD; buf: LPBYTE; reserved3: DWORD): NET_API_STATUS; stdcall;
  61. {$EXTERNALSYM NetConfigSet}
  62. function NetRegisterDomainNameChangeNotification(NotificationEventHandle: PHANDLE): NET_API_STATUS; stdcall;
  63. {$EXTERNALSYM NetRegisterDomainNameChangeNotification}
  64. function NetUnregisterDomainNameChangeNotification(NotificationEventHandle: HANDLE): NET_API_STATUS; stdcall;
  65. {$EXTERNALSYM NetUnregisterDomainNameChangeNotification}
  66. //
  67. // Data Structures - Config
  68. //
  69. type
  70.   _CONFIG_INFO_0 = record
  71.     cfgi0_key: LPWSTR;
  72.     cfgi0_data: LPWSTR;
  73.   end;
  74.   {$EXTERNALSYM _CONFIG_INFO_0}
  75.   CONFIG_INFO_0 = _CONFIG_INFO_0;
  76.   {$EXTERNALSYM CONFIG_INFO_0}
  77.   PCONFIG_INFO_0 = ^CONFIG_INFO_0;
  78.   {$EXTERNALSYM PCONFIG_INFO_0}
  79.   LPCONFIG_INFO_0 = ^CONFIG_INFO_0;
  80.   {$EXTERNALSYM LPCONFIG_INFO_0}
  81.   TConfigInfo0 = CONFIG_INFO_0;
  82.   PConfigInfo0 = PCONFIG_INFO_0;  
  83. implementation
  84. {$IFDEF DYNAMIC_LINK}
  85. var
  86.   _NetConfigGet: Pointer;
  87. function NetConfigGet;
  88. begin
  89.   GetProcedureAddress(_NetConfigGet, netapi32, 'NetConfigGet');
  90.   asm
  91.     mov esp, ebp
  92.     pop ebp
  93.     jmp [_NetConfigGet]
  94.   end;
  95. end;
  96. {$ELSE}
  97. function NetConfigGet; external netapi32 name 'NetConfigGet';
  98. {$ENDIF DYNAMIC_LINK}
  99. {$IFDEF DYNAMIC_LINK}
  100. var
  101.   _NetConfigGetAll: Pointer;
  102. function NetConfigGetAll;
  103. begin
  104.   GetProcedureAddress(_NetConfigGetAll, netapi32, 'NetConfigGetAll');
  105.   asm
  106.     mov esp, ebp
  107.     pop ebp
  108.     jmp [_NetConfigGetAll]
  109.   end;
  110. end;
  111. {$ELSE}
  112. function NetConfigGetAll; external netapi32 name 'NetConfigGetAll';
  113. {$ENDIF DYNAMIC_LINK}
  114. {$IFDEF DYNAMIC_LINK}
  115. var
  116.   _NetConfigSet: Pointer;
  117. function NetConfigSet;
  118. begin
  119.   GetProcedureAddress(_NetConfigSet, netapi32, 'NetConfigSet');
  120.   asm
  121.     mov esp, ebp
  122.     pop ebp
  123.     jmp [_NetConfigSet]
  124.   end;
  125. end;
  126. {$ELSE}
  127. function NetConfigSet; external netapi32 name 'NetConfigSet';
  128. {$ENDIF DYNAMIC_LINK}
  129. {$IFDEF DYNAMIC_LINK}
  130. var
  131.   _NetRegisterDomainNameChangeNotification: Pointer;
  132. function NetRegisterDomainNameChangeNotification;
  133. begin
  134.   GetProcedureAddress(_NetRegisterDomainNameChangeNotification, netapi32, 'NetRegisterDomainNameChangeNotification');
  135.   asm
  136.     mov esp, ebp
  137.     pop ebp
  138.     jmp [_NetRegisterDomainNameChangeNotification]
  139.   end;
  140. end;
  141. {$ELSE}
  142. function NetRegisterDomainNameChangeNotification; external netapi32 name 'NetRegisterDomainNameChangeNotification';
  143. {$ENDIF DYNAMIC_LINK}
  144. {$IFDEF DYNAMIC_LINK}
  145. var
  146.   _NetUnregisterDomainNameChangeNotification: Pointer;
  147. function NetUnregisterDomainNameChangeNotification;
  148. begin
  149.   GetProcedureAddress(_NetUnregisterDomainNameChangeNotification, netapi32, 'NetUnregisterDomainNameChangeNotification');
  150.   asm
  151.     mov esp, ebp
  152.     pop ebp
  153.     jmp [_NetUnregisterDomainNameChangeNotification]
  154.   end;
  155. end;
  156. {$ELSE}
  157. function NetUnregisterDomainNameChangeNotification; external netapi32 name 'NetUnregisterDomainNameChangeNotification';
  158. {$ENDIF DYNAMIC_LINK}
  159. end.