Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I miljöer där standardlösningen för Windows Deployment Services (WDS) inte kan användas exponerar WDS-servern ett API som gör det möjligt för utvecklare att skriva plugin-program, som kallas providers, för att hantera PXE-begäranden (preboot execution environment). Utvecklare bör följa följande riktlinjer när de skriver PXE-leverantörer för WDS.
Installera WDS-rollen på servern
- Windows Deployment Services (WDS) är den reviderade versionen av Remote Installation Services (RIS), du behöver WDS-serverrollen för att implementera WDS PXE-servern och -leverantörerna.
- WDS ersätter RIS som standardkomponent som börjar med Windows Server 2008 och Windows Server 2003 med Service Pack 2 (SP2).
- Du måste uppdatera RIS-servern till WDS på Windows Server 2003 med Service Pack 1 (SP1). Du kan installera WDS-serverrollen med Windows Automated Installation Kit (WAIK).
Registrera providrar
Registrera providerns DLL-bibliotek (Dynamic Link Library) under installationen och infoga providern i den ordnade listan över registrerade leverantörer.
Anteckning
När du installerar en ny eller modifierad provider måste du starta om WDS PXE-tjänsten för att ändringarna ska börja gälla.
Använd funktionen PxeProviderRegister för att registrera providern och lägga till den i listan. Använd funktionen PxeProviderUnRegister för att avregistrera en registrerad provider och ta bort den från listan.
Ange sekvensen för providern i den ordnade listan. Det går inte att garantera indexet för en provider i listan eftersom en annan provider senare kan registreras före den. Om du vill infoga providern i listan före eller efter en annan registrerad provider använder du först funktionen PxeProviderQueryIndex för att hämta indexet för den registrerade providern och sedan registrera den nya providern samtidigt som du anger ett större eller mindre indexvärde.
Installationen kan lagra konfigurationsinformation för providern under registernyckeln som returneras när providern är registrerad. Adressen till registernyckeln tas emot av phProviderKey för PxeProviderRegister. Providern tar emot ett handtag till samma nyckel som parametern hProviderKey till dess PxeProviderInitialize återanrop. Providern bör lagra adressen till den här nyckeln.
Installera alltid providern DLL (Dynamic Link Library) i serverns programfiler-mapp.
Initiera
- Inkludera en DLL som exporterar funktionen PxeProviderInitialize återanrop i leverantören. Varje provider kräver en PxeProviderInitialize motringning. När WDS läser in en leverantör, anropar WDS leverantörens PxeProviderInitialize-funktion och skickar en referens till samma nyckel som används för att lagra konfigurationsinformation under leverantörsregistreringen.
- När PxeProviderInitialize återanrop returnerar och lyckas bör providern vara helt initierad och redo att bearbeta begäranden.
- Registrera varje återanrop under bearbetningen av funktionen PxeProviderInitialize i providern. Återanrop ska registreras med funktionen PxeRegisterCallback.
- Initiera alla providerns interna resurser inom bearbetningen av dess PxeProviderInitialize funktion.
Avstängning
- Implementera PxeProviderShutdown återanrop. Varje leverantör måste ha en PxeProviderShutdowncallback-funktion.
- Funktionen PxeProviderShutdown callback bör helt stänga av providern och frigöra alla dess resurser.
- När PxeProviderShutdown- återanrop returneras är hProvider--referensen som skickas till funktionen PxeProviderInitialize inte längre giltig och bör inte användas för att anropa WDS.
- Registrera PxeProviderShutdown- genom att anropa PxeRegisterCallback--funktionen med PXE_CALLBACK_SHUTDOWN- under bearbetningen av PxeProviderInitialize--återanropet. Anropa inte PxeProviderShutdown återanrop om funktionen PxeProviderInitialize misslyckas.
Hantera begärandepaket
Implementera PxeProviderRecvRequest återanrop för providern. Varje leverantör måste ha ett PxeProviderRecvRequest återanrop. När WDS tar emot en begäran, anropas återanropet PxeProviderRecvRequest för den första providern i den registrerade providerlistan.
Om providern bearbetar den här begäran synkront bör funktionen PxeProviderRecvRequest returnera värdet ERROR_SUCCESS. Om och endast om providern kommer att bearbeta den här begäran asynkront bör PxeProviderRecvRequest återanrop returnera ERROR_IO_PENDING och anropa funktionen PxeAsyncRecvDone när begäran har bearbetats.
Funktionen PxeProviderRecvRequest återanrop och funktionen PxeAsyncRecvDone returnerar adressen till en PXE_BOOT_ACTION uppräkning som beskriver den åtgärd som providern vidtagit för att hantera begäran.
Det finns fyra sätt för en provider att hantera en begäran:
- Providern svarar klienten med ett DHCP-standardsvarspaket som innehåller en sökväg till nätverksstartprogrammet. Om du returnerar värdet för PXE_BA_NBP för uppräkningen betyder det att providern har bearbetat begärandepaketet och slutfört begäran genom att skicka ett svarspaket genom anrop av PxePacketAllocate och PxeSendReply funktionen.
- Providern svarar klienten med ett anpassat svarspaket som inte överensstämmer med DHCP. Att återlämna värdet PXE_BA_CUSTOM för uppräkningen betyder att providern framgångsrikt har bearbetat begärandepaketet och slutfört begäran genom att skicka ett anpassat svarspaket genom att anropa funktionerna PxePacketAllocate och PxeSendReply.
- Providern avgör att begäran ska ignoreras. Att returnera värdet PXE_BA_IGNORE för uppräkningen innebär att leverantören har släppt alla resurser som är associerade med begäran och att begäran inte skickas till nästa leverantör i listan över registrerade leverantörer. Leverantörer kan använda det här alternativet om de upptäcker att ett begärandepaket är ogiltigt.
- Leverantören avböjer att hantera begäran. Genom att returnera PXE_BA_REJECT värdet för uppräkningen instrueras systemet att skicka begäran till nästa leverantör i listan över registrerade leverantörer. Om detta var den sista providern i listan frigörs alla resurser som är associerade med begäran och begäran ignoreras.
- Registrera PxeProviderRecvRequest återanrop genom att anropa funktionen PxeRegisterCallback med PXE_CALLBACK_RECV_REQUEST under bearbetningen av PxeProviderInitialize återanrop.
Generera svarspaket
- Använd API:et för att utveckla moduler för att hantera DHCP-begäranden och generera svarspaket.
- Funktionen PxeProviderSetAttribute anger de attribut som används av providern för att filtrera paket. Providerns attribut kan anges så att providern ser alla paket, providern ser endast DHCP-paket eller så ser providern endast DHCP-paket som anger alternativet DHCP Vendor Class Identifier (60) som "PXEClient".
- Funktionen PxeDhcpIsValid kontrollerar att ett paket är ett giltigt DHCP-paket. Providers kan använda funktionen PxeDhcpIsValid för att kontrollera om ett paket från klienten är ett DHCP-paket när filteruppsättningen med PxeProviderSetAttribute-funktionen är inställd på att ta emot alla paket för att avgöra om ett angivet paket är ett giltigt DHCP-paket.
- Funktionen PxeDhcpInitialize initierar ett svarspaket som ett DHCP-svarspaket som baseras på informationen i ett paket som tas emot från klienten. Funktionen PxeProviderInitialize tar adressen till ett giltigt DHCP-paket som tas emot från klienten i PxeProviderRecvRequest återanrop. Funktionen PxeDhcpInitialize tar en pekare till ett svarspaket som allokerats med funktionen PxePacketAllocate.
- Funktionen PxeDhcpGetOptionValue hämtar ett alternativvärde från ett DHCP-paket. Funktionen PxeDhcpGetVendorOptionValue hämtar ett alternativvärde från fältet Leverantörsspecifik information (43) för ett DHCP-paket.
- Providern kan sedan fylla i svarspaketet med information och använda funktionen PxeSendReply för att skicka svarspaketet till klienten. Funktionen PxeDhcpAppendOption lägger till ett DHCP-alternativ i svarspaketet.
- En provider som svarar på klientbegäranden genom att skicka ett paket måste allokera svarspaketet med hjälp av funktionen PxePacketAllocate. Providern kan sedan fylla i svarspaketet med information och använda funktionen PxeSendReply för att skicka svarspaketet till klienten.
- När det allokerade minnet inte längre behövs bör providern släppa det med hjälp av funktionen PxePacketFree.
Räkna upp registrerade providers
- Använd API:et för att skriva leverantörer som identifierar och kontrollerar andra registrerade leverantörer i listan.
- Funktionen PxeGetServerInfo returnerar information om PXE-servern. Funktionen PxeGetServerInfo returnerar en BOOL- som anger om spårning är aktiverat för servern. TRUE- anger att spårning är aktiverat.
- Funktionen PxeProviderEnumFirst startar en uppräkning av providers i listan över registrerade leverantörer. Funktionen PxeProviderEnumFirst startar uppräkningen och returnerar adressen för referensen som ska användas när du anropar funktionen PxeProviderEnumNext. Funktionen PxeProviderEnumNext returnerar en PXE_PROVIDER struktur som innehåller information om providern. Funktionen PxeProviderFreeInfo frigör det minne som har allokerats för PXE_PROVIDER-strukturen som funktionen PxeProviderEnumNext har allokerat. Funktionen PxeProviderEnumClose stänger uppräkningen av leverantörer i listan över registrerade leverantörer.
Hantera tjänstkontrollkoder
- När ett tjänstkontrollmeddelande tas emot anropar WDS PxeProviderServiceControl återanrop.
- Providern kan definiera en PxeProviderServiceControl återanropsfunktion för att hantera tjänstkontrollmeddelanden.
- Registrera återanropet PxeProviderServiceControl genom att anropa funktionen PxeRegisterCallback med PXE_CALLBACK_SERVICE_CONTROL under bearbetningen av återanropet PxeProviderInitialize.
Lägga till spårningsposter i PXE-loggen
- Funktionen PxeTrace lägger till en spårningspost i PXE-loggen. WDSPXE tillhandahåller spårning som hjälper administratörer att felsöka. Leverantörer kan logga spårningsposter med olika allvarlighetsgrad. Administratörerna kan konfigurera WDSPXE till att endast logga poster för vissa allvarlighetsnivåer.
Relaterade ämnen