169 lines
7.8 KiB
ObjectPascal
169 lines
7.8 KiB
ObjectPascal
{******************************************************************************}
|
|
{* *}
|
|
{* Copyright (C) Microsoft Corporation. All Rights Reserved. *}
|
|
{* *}
|
|
{* File: DxDiag.h *}
|
|
{* Content: DirectX Diagnostic Tool include file *}
|
|
{* *}
|
|
{* DirectX 9.0 Delphi / FreePascal adaptation by Alexey Barkovoy *}
|
|
{* E-Mail: directx@clootie.ru *}
|
|
{* *}
|
|
{* Release: 11-Sep-2004 *}
|
|
{* *}
|
|
{* Latest version can be downloaded from: *}
|
|
{* http://clootie.ru *}
|
|
{* http://sourceforge.net/projects/delphi-dx9sdk *}
|
|
{* *}
|
|
{******************************************************************************}
|
|
{ }
|
|
{ Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
|
|
{ }
|
|
{ The contents of this file are used with permission, subject to the Mozilla }
|
|
{ Public License Version 1.1 (the "License"); you may not use this file except }
|
|
{ in compliance with the License. You may obtain a copy of the License at }
|
|
{ http://www.mozilla.org/MPL/MPL-1.1.html }
|
|
{ }
|
|
{ Software distributed under the License is distributed on an "AS IS" basis, }
|
|
{ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
|
|
{ the specific language governing rights and limitations under the License. }
|
|
{ }
|
|
{ Alternatively, the contents of this file may be used under the terms of the }
|
|
{ GNU Lesser General Public License (the "LGPL License"), in which case the }
|
|
{ provisions of the LGPL License are applicable instead of those above. }
|
|
{ If you wish to allow use of your version of this file only under the terms }
|
|
{ of the LGPL License and not to allow others to use your version of this file }
|
|
{ under the MPL, indicate your decision by deleting the provisions above and }
|
|
{ replace them with the notice and other provisions required by the LGPL }
|
|
{ License. If you do not delete the provisions above, a recipient may use }
|
|
{ your version of this file under either the MPL or the LGPL License. }
|
|
{ }
|
|
{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
|
|
{ }
|
|
{******************************************************************************}
|
|
|
|
{$I DirectX.inc}
|
|
|
|
unit DxDiag;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows;
|
|
|
|
(*$HPPEMIT '#include "DxDiag.h"' *)
|
|
|
|
(*==========================================================================;
|
|
*
|
|
* Copyright (C) Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: dxdiag.h
|
|
* Content: DirectX Diagnostic Tool include file
|
|
*
|
|
****************************************************************************)
|
|
|
|
const
|
|
// This identifier is passed to IDxDiagProvider::Initialize in order to ensure that an
|
|
// application was built against the correct header files. This number is
|
|
// incremented whenever a header (or other) change would require applications
|
|
// to be rebuilt. If the version doesn't match, IDxDiagProvider::Initialize will fail.
|
|
// (The number itself has no meaning.)
|
|
DXDIAG_DX9_SDK_VERSION = 111;
|
|
{$EXTERNALSYM DXDIAG_DX9_SDK_VERSION}
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DxDiag Errors
|
|
*
|
|
****************************************************************************)
|
|
DXDIAG_E_INSUFFICIENT_BUFFER = HResult($8007007A); // HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
|
|
{$EXTERNALSYM DXDIAG_E_INSUFFICIENT_BUFFER}
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DxDiag CLSIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
// {A65B8071-3BFE-4213-9A5B-491DA4461CA7}
|
|
CLSID_DxDiagProvider: TGUID = '{A65B8071-3BFE-4213-9A5B-491DA4461CA7}';
|
|
{$EXTERNALSYM CLSID_DxDiagProvider}
|
|
|
|
|
|
type
|
|
(****************************************************************************
|
|
*
|
|
* DxDiag Structures
|
|
*
|
|
****************************************************************************)
|
|
|
|
PDxDiagInitParams = ^TDxDiagInitParams;
|
|
_DXDIAG_INIT_PARAMS = record
|
|
dwSize: DWORD; // Size of this structure.
|
|
dwDxDiagHeaderVersion: DWORD; // Pass in DXDIAG_DX9_SDK_VERSION. This verifies
|
|
// the header and dll are correctly matched.
|
|
bAllowWHQLChecks: BOOL; // If true, allow dxdiag to check if drivers are
|
|
// digital signed as logo'd by WHQL which may
|
|
// connect via internet to update WHQL certificates.
|
|
pReserved: Pointer; // Reserved. Must be NULL.
|
|
end;
|
|
{$EXTERNALSYM _DXDIAG_INIT_PARAMS}
|
|
DXDIAG_INIT_PARAMS = _DXDIAG_INIT_PARAMS;
|
|
{$EXTERNALSYM DXDIAG_INIT_PARAMS}
|
|
TDxDiagInitParams = _DXDIAG_INIT_PARAMS;
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DxDiag Application Interfaces
|
|
*
|
|
****************************************************************************)
|
|
|
|
IDxDiagContainer = interface;
|
|
|
|
//
|
|
// COM definition for IDxDiagProvider
|
|
//
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDxDiagProvider);'}
|
|
{$EXTERNALSYM IDxDiagProvider}
|
|
IDxDiagProvider = interface(IUnknown)
|
|
['{9C6B4CB0-23F8-49CC-A3ED-45A55000A6D2}']
|
|
(*** IDxDiagProvider methods ***)
|
|
function Initialize(const Params: TDxDiagInitParams): HResult; stdcall;
|
|
function GetRootContainer(out ppInstance: IDxDiagContainer): HResult; stdcall;
|
|
end;
|
|
|
|
|
|
//
|
|
// COM definition for IDxDiagContainer
|
|
//
|
|
{$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDxDiagContainer);'}
|
|
{$EXTERNALSYM IDxDiagContainer}
|
|
IDxDiagContainer = interface(IUnknown)
|
|
['{7D0F462F-4064-4862-BC7F-933E5058C10F}']
|
|
(*** IDxDiagContainer methods ***)
|
|
function GetNumberOfChildContainers(out dwCount: DWORD): HResult; stdcall;
|
|
function EnumChildContainerNames(dwIndex: DWORD; pwszContainer: PWideChar; cchContainer: DWORD): HResult; stdcall;
|
|
function GetChildContainer(pwszContainer: PWideChar; out ppInstance: IDxDiagContainer): HResult; stdcall;
|
|
function GetNumberOfProps(out pdwCount: DWORD): HResult; stdcall;
|
|
function EnumPropNames(dwIndex: DWORD; pwszPropName: PWideChar; cchPropName: DWORD): HResult; stdcall;
|
|
function GetProp(pwszPropName: PWideChar; out varProp: OleVariant): HResult; stdcall;
|
|
end;
|
|
|
|
|
|
(****************************************************************************
|
|
*
|
|
* DxDiag Interface IIDs
|
|
*
|
|
****************************************************************************)
|
|
|
|
IID_IDxDiagProvider = IDxDiagProvider;
|
|
{$EXTERNALSYM IID_IDxDiagProvider}
|
|
IID_IDxDiagContainer = IDxDiagContainer;
|
|
{$EXTERNALSYM IID_IDxDiagContainer}
|
|
|
|
implementation
|
|
|
|
end.
|